// 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  S3214C4_nt  {
  int s3214c4f0[2];
  void  mf3214c4(); // _ZN10S3214C4_nt8mf3214c4Ev
};
//SIG(-1 S3214C4_nt) C1{ m Fi[2]}


void  S3214C4_nt ::mf3214c4(){}

//skip512 S3214C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3214C3_nt  {
  int s3214c3f0;
  __tsi64 s3214c3f1;
  void *s3214c3f2[4];
  int s3214c3f3[2];
  void *s3214c3f4;
  ::S3214C4_nt s3214c3f5;
  void *s3214c3f6[2];
  virtual  ~S3214C3_nt(); // _ZN10S3214C3_ntD1Ev
  virtual void  v4(); // _ZN10S3214C3_nt2v4Ev
  virtual void  v5(); // _ZN10S3214C3_nt2v5Ev
  virtual void  v6(); // _ZN10S3214C3_nt2v6Ev
  virtual void  v7(); // _ZN10S3214C3_nt2v7Ev
  virtual void  v8(); // _ZN10S3214C3_nt2v8Ev
  virtual void  v9(); // _ZN10S3214C3_nt2v9Ev
  virtual void  v10(); // _ZN10S3214C3_nt3v10Ev
  virtual void  v11(); // _ZN10S3214C3_nt3v11Ev
  virtual void  v12(); // _ZN10S3214C3_nt3v12Ev
  virtual void  v13(); // _ZN10S3214C3_nt3v13Ev
  virtual void  v14(); // _ZN10S3214C3_nt3v14Ev
  virtual void  v15(); // _ZN10S3214C3_nt3v15Ev
  virtual void  v16(); // _ZN10S3214C3_nt3v16Ev
  virtual void  v17(); // _ZN10S3214C3_nt3v17Ev
  virtual void  v18(); // _ZN10S3214C3_nt3v18Ev
  virtual void  v19(); // _ZN10S3214C3_nt3v19Ev
  virtual void  v20(); // _ZN10S3214C3_nt3v20Ev
  virtual void  v21(); // _ZN10S3214C3_nt3v21Ev
  virtual void  v22(); // _ZN10S3214C3_nt3v22Ev
  virtual void  v23(); // _ZN10S3214C3_nt3v23Ev
  virtual void  v24(); // _ZN10S3214C3_nt3v24Ev
  virtual void  v25(); // _ZN10S3214C3_nt3v25Ev
  virtual void  v26(); // _ZN10S3214C3_nt3v26Ev
  virtual void  v27(); // _ZN10S3214C3_nt3v27Ev
  virtual void  v28(); // _ZN10S3214C3_nt3v28Ev
  virtual void  v29(); // _ZN10S3214C3_nt3v29Ev
  virtual void  v30(); // _ZN10S3214C3_nt3v30Ev
  virtual void  v31(); // _ZN10S3214C3_nt3v31Ev
  virtual void  v32(); // _ZN10S3214C3_nt3v32Ev
  virtual void  v33(); // _ZN10S3214C3_nt3v33Ev
  virtual void  v34(); // _ZN10S3214C3_nt3v34Ev
  virtual void  v35(); // _ZN10S3214C3_nt3v35Ev
  virtual void  v36(); // _ZN10S3214C3_nt3v36Ev
  virtual void  v37(); // _ZN10S3214C3_nt3v37Ev
  virtual void  v38(); // _ZN10S3214C3_nt3v38Ev
  virtual void  v39(); // _ZN10S3214C3_nt3v39Ev
  virtual void  v40(); // _ZN10S3214C3_nt3v40Ev
  virtual void  v41(); // _ZN10S3214C3_nt3v41Ev
  virtual void  v42(); // _ZN10S3214C3_nt3v42Ev
  virtual void  v43(); // _ZN10S3214C3_nt3v43Ev
  virtual void  v44(); // _ZN10S3214C3_nt3v44Ev
  virtual void  v45(); // _ZN10S3214C3_nt3v45Ev
  virtual void  v46(); // _ZN10S3214C3_nt3v46Ev
  virtual void  v47(); // _ZN10S3214C3_nt3v47Ev
  virtual void  v48(); // _ZN10S3214C3_nt3v48Ev
  virtual void  v49(); // _ZN10S3214C3_nt3v49Ev
  virtual void  v50(); // _ZN10S3214C3_nt3v50Ev
  virtual void  v51(); // _ZN10S3214C3_nt3v51Ev
  virtual void  v52(); // _ZN10S3214C3_nt3v52Ev
  virtual void  v53(); // _ZN10S3214C3_nt3v53Ev
  virtual void  v54(); // _ZN10S3214C3_nt3v54Ev
  virtual void  v55(); // _ZN10S3214C3_nt3v55Ev
  virtual void  v56(); // _ZN10S3214C3_nt3v56Ev
  virtual void  v57(); // _ZN10S3214C3_nt3v57Ev
  virtual void  v58(); // _ZN10S3214C3_nt3v58Ev
  virtual void  v59(); // _ZN10S3214C3_nt3v59Ev
  virtual void  v60(); // _ZN10S3214C3_nt3v60Ev
  virtual void  v61(); // _ZN10S3214C3_nt3v61Ev
  virtual void  v62(); // _ZN10S3214C3_nt3v62Ev
  virtual void  v63(); // _ZN10S3214C3_nt3v63Ev
  virtual void  v64(); // _ZN10S3214C3_nt3v64Ev
  virtual void  v65(); // _ZN10S3214C3_nt3v65Ev
  virtual void  v66(); // _ZN10S3214C3_nt3v66Ev
  virtual void  v67(); // _ZN10S3214C3_nt3v67Ev
  S3214C3_nt(); // tgen
};
//SIG(-1 S3214C3_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]}


 S3214C3_nt ::~S3214C3_nt(){ note_dtor("S3214C3_nt", this);}
void  S3214C3_nt ::v4(){vfunc_called(this, "_ZN10S3214C3_nt2v4Ev");}
void  S3214C3_nt ::v5(){vfunc_called(this, "_ZN10S3214C3_nt2v5Ev");}
void  S3214C3_nt ::v6(){vfunc_called(this, "_ZN10S3214C3_nt2v6Ev");}
void  S3214C3_nt ::v7(){vfunc_called(this, "_ZN10S3214C3_nt2v7Ev");}
void  S3214C3_nt ::v8(){vfunc_called(this, "_ZN10S3214C3_nt2v8Ev");}
void  S3214C3_nt ::v9(){vfunc_called(this, "_ZN10S3214C3_nt2v9Ev");}
void  S3214C3_nt ::v10(){vfunc_called(this, "_ZN10S3214C3_nt3v10Ev");}
void  S3214C3_nt ::v11(){vfunc_called(this, "_ZN10S3214C3_nt3v11Ev");}
void  S3214C3_nt ::v12(){vfunc_called(this, "_ZN10S3214C3_nt3v12Ev");}
void  S3214C3_nt ::v13(){vfunc_called(this, "_ZN10S3214C3_nt3v13Ev");}
void  S3214C3_nt ::v14(){vfunc_called(this, "_ZN10S3214C3_nt3v14Ev");}
void  S3214C3_nt ::v15(){vfunc_called(this, "_ZN10S3214C3_nt3v15Ev");}
void  S3214C3_nt ::v16(){vfunc_called(this, "_ZN10S3214C3_nt3v16Ev");}
void  S3214C3_nt ::v17(){vfunc_called(this, "_ZN10S3214C3_nt3v17Ev");}
void  S3214C3_nt ::v18(){vfunc_called(this, "_ZN10S3214C3_nt3v18Ev");}
void  S3214C3_nt ::v19(){vfunc_called(this, "_ZN10S3214C3_nt3v19Ev");}
void  S3214C3_nt ::v20(){vfunc_called(this, "_ZN10S3214C3_nt3v20Ev");}
void  S3214C3_nt ::v21(){vfunc_called(this, "_ZN10S3214C3_nt3v21Ev");}
void  S3214C3_nt ::v22(){vfunc_called(this, "_ZN10S3214C3_nt3v22Ev");}
void  S3214C3_nt ::v23(){vfunc_called(this, "_ZN10S3214C3_nt3v23Ev");}
void  S3214C3_nt ::v24(){vfunc_called(this, "_ZN10S3214C3_nt3v24Ev");}
void  S3214C3_nt ::v25(){vfunc_called(this, "_ZN10S3214C3_nt3v25Ev");}
void  S3214C3_nt ::v26(){vfunc_called(this, "_ZN10S3214C3_nt3v26Ev");}
void  S3214C3_nt ::v27(){vfunc_called(this, "_ZN10S3214C3_nt3v27Ev");}
void  S3214C3_nt ::v28(){vfunc_called(this, "_ZN10S3214C3_nt3v28Ev");}
void  S3214C3_nt ::v29(){vfunc_called(this, "_ZN10S3214C3_nt3v29Ev");}
void  S3214C3_nt ::v30(){vfunc_called(this, "_ZN10S3214C3_nt3v30Ev");}
void  S3214C3_nt ::v31(){vfunc_called(this, "_ZN10S3214C3_nt3v31Ev");}
void  S3214C3_nt ::v32(){vfunc_called(this, "_ZN10S3214C3_nt3v32Ev");}
void  S3214C3_nt ::v33(){vfunc_called(this, "_ZN10S3214C3_nt3v33Ev");}
void  S3214C3_nt ::v34(){vfunc_called(this, "_ZN10S3214C3_nt3v34Ev");}
void  S3214C3_nt ::v35(){vfunc_called(this, "_ZN10S3214C3_nt3v35Ev");}
void  S3214C3_nt ::v36(){vfunc_called(this, "_ZN10S3214C3_nt3v36Ev");}
void  S3214C3_nt ::v37(){vfunc_called(this, "_ZN10S3214C3_nt3v37Ev");}
void  S3214C3_nt ::v38(){vfunc_called(this, "_ZN10S3214C3_nt3v38Ev");}
void  S3214C3_nt ::v39(){vfunc_called(this, "_ZN10S3214C3_nt3v39Ev");}
void  S3214C3_nt ::v40(){vfunc_called(this, "_ZN10S3214C3_nt3v40Ev");}
void  S3214C3_nt ::v41(){vfunc_called(this, "_ZN10S3214C3_nt3v41Ev");}
void  S3214C3_nt ::v42(){vfunc_called(this, "_ZN10S3214C3_nt3v42Ev");}
void  S3214C3_nt ::v43(){vfunc_called(this, "_ZN10S3214C3_nt3v43Ev");}
void  S3214C3_nt ::v44(){vfunc_called(this, "_ZN10S3214C3_nt3v44Ev");}
void  S3214C3_nt ::v45(){vfunc_called(this, "_ZN10S3214C3_nt3v45Ev");}
void  S3214C3_nt ::v46(){vfunc_called(this, "_ZN10S3214C3_nt3v46Ev");}
void  S3214C3_nt ::v47(){vfunc_called(this, "_ZN10S3214C3_nt3v47Ev");}
void  S3214C3_nt ::v48(){vfunc_called(this, "_ZN10S3214C3_nt3v48Ev");}
void  S3214C3_nt ::v49(){vfunc_called(this, "_ZN10S3214C3_nt3v49Ev");}
void  S3214C3_nt ::v50(){vfunc_called(this, "_ZN10S3214C3_nt3v50Ev");}
void  S3214C3_nt ::v51(){vfunc_called(this, "_ZN10S3214C3_nt3v51Ev");}
void  S3214C3_nt ::v52(){vfunc_called(this, "_ZN10S3214C3_nt3v52Ev");}
void  S3214C3_nt ::v53(){vfunc_called(this, "_ZN10S3214C3_nt3v53Ev");}
void  S3214C3_nt ::v54(){vfunc_called(this, "_ZN10S3214C3_nt3v54Ev");}
void  S3214C3_nt ::v55(){vfunc_called(this, "_ZN10S3214C3_nt3v55Ev");}
void  S3214C3_nt ::v56(){vfunc_called(this, "_ZN10S3214C3_nt3v56Ev");}
void  S3214C3_nt ::v57(){vfunc_called(this, "_ZN10S3214C3_nt3v57Ev");}
void  S3214C3_nt ::v58(){vfunc_called(this, "_ZN10S3214C3_nt3v58Ev");}
void  S3214C3_nt ::v59(){vfunc_called(this, "_ZN10S3214C3_nt3v59Ev");}
void  S3214C3_nt ::v60(){vfunc_called(this, "_ZN10S3214C3_nt3v60Ev");}
void  S3214C3_nt ::v61(){vfunc_called(this, "_ZN10S3214C3_nt3v61Ev");}
void  S3214C3_nt ::v62(){vfunc_called(this, "_ZN10S3214C3_nt3v62Ev");}
void  S3214C3_nt ::v63(){vfunc_called(this, "_ZN10S3214C3_nt3v63Ev");}
void  S3214C3_nt ::v64(){vfunc_called(this, "_ZN10S3214C3_nt3v64Ev");}
void  S3214C3_nt ::v65(){vfunc_called(this, "_ZN10S3214C3_nt3v65Ev");}
void  S3214C3_nt ::v66(){vfunc_called(this, "_ZN10S3214C3_nt3v66Ev");}
void  S3214C3_nt ::v67(){vfunc_called(this, "_ZN10S3214C3_nt3v67Ev");}
S3214C3_nt ::S3214C3_nt(){ note_ctor("S3214C3_nt", this);} // tgen

//skip512 S3214C3_nt

#else // __cplusplus

extern void _ZN10S3214C3_ntC1Ev();
extern void _ZN10S3214C3_ntD1Ev();
Name_Map name_map_S3214C3_nt[] = {
  NSPAIR(_ZN10S3214C3_ntC1Ev),
  NSPAIR(_ZN10S3214C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3214C3_nt[];
extern void _ZN10S3214C3_ntD1Ev();
extern void _ZN10S3214C3_ntD0Ev();
extern void _ZN10S3214C3_nt2v4Ev();
extern void _ZN10S3214C3_nt2v5Ev();
extern void _ZN10S3214C3_nt2v6Ev();
extern void _ZN10S3214C3_nt2v7Ev();
extern void _ZN10S3214C3_nt2v8Ev();
extern void _ZN10S3214C3_nt2v9Ev();
extern void _ZN10S3214C3_nt3v10Ev();
extern void _ZN10S3214C3_nt3v11Ev();
extern void _ZN10S3214C3_nt3v12Ev();
extern void _ZN10S3214C3_nt3v13Ev();
extern void _ZN10S3214C3_nt3v14Ev();
extern void _ZN10S3214C3_nt3v15Ev();
extern void _ZN10S3214C3_nt3v16Ev();
extern void _ZN10S3214C3_nt3v17Ev();
extern void _ZN10S3214C3_nt3v18Ev();
extern void _ZN10S3214C3_nt3v19Ev();
extern void _ZN10S3214C3_nt3v20Ev();
extern void _ZN10S3214C3_nt3v21Ev();
extern void _ZN10S3214C3_nt3v22Ev();
extern void _ZN10S3214C3_nt3v23Ev();
extern void _ZN10S3214C3_nt3v24Ev();
extern void _ZN10S3214C3_nt3v25Ev();
extern void _ZN10S3214C3_nt3v26Ev();
extern void _ZN10S3214C3_nt3v27Ev();
extern void _ZN10S3214C3_nt3v28Ev();
extern void _ZN10S3214C3_nt3v29Ev();
extern void _ZN10S3214C3_nt3v30Ev();
extern void _ZN10S3214C3_nt3v31Ev();
extern void _ZN10S3214C3_nt3v32Ev();
extern void _ZN10S3214C3_nt3v33Ev();
extern void _ZN10S3214C3_nt3v34Ev();
extern void _ZN10S3214C3_nt3v35Ev();
extern void _ZN10S3214C3_nt3v36Ev();
extern void _ZN10S3214C3_nt3v37Ev();
extern void _ZN10S3214C3_nt3v38Ev();
extern void _ZN10S3214C3_nt3v39Ev();
extern void _ZN10S3214C3_nt3v40Ev();
extern void _ZN10S3214C3_nt3v41Ev();
extern void _ZN10S3214C3_nt3v42Ev();
extern void _ZN10S3214C3_nt3v43Ev();
extern void _ZN10S3214C3_nt3v44Ev();
extern void _ZN10S3214C3_nt3v45Ev();
extern void _ZN10S3214C3_nt3v46Ev();
extern void _ZN10S3214C3_nt3v47Ev();
extern void _ZN10S3214C3_nt3v48Ev();
extern void _ZN10S3214C3_nt3v49Ev();
extern void _ZN10S3214C3_nt3v50Ev();
extern void _ZN10S3214C3_nt3v51Ev();
extern void _ZN10S3214C3_nt3v52Ev();
extern void _ZN10S3214C3_nt3v53Ev();
extern void _ZN10S3214C3_nt3v54Ev();
extern void _ZN10S3214C3_nt3v55Ev();
extern void _ZN10S3214C3_nt3v56Ev();
extern void _ZN10S3214C3_nt3v57Ev();
extern void _ZN10S3214C3_nt3v58Ev();
extern void _ZN10S3214C3_nt3v59Ev();
extern void _ZN10S3214C3_nt3v60Ev();
extern void _ZN10S3214C3_nt3v61Ev();
extern void _ZN10S3214C3_nt3v62Ev();
extern void _ZN10S3214C3_nt3v63Ev();
extern void _ZN10S3214C3_nt3v64Ev();
extern void _ZN10S3214C3_nt3v65Ev();
extern void _ZN10S3214C3_nt3v66Ev();
extern void _ZN10S3214C3_nt3v67Ev();
static  VTBL_ENTRY vtc_S3214C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3214C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3214C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v67Ev,
};
extern VTBL_ENTRY _ZTI10S3214C3_nt[];
VTBL_ENTRY *P__ZTI10S3214C3_nt = _ZTI10S3214C3_nt; 
extern  VTBL_ENTRY _ZTV10S3214C3_nt[];
Class_Descriptor cd_S3214C3_nt = {  "S3214C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3214C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S3214C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3214C3_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  S3214C7_nt  {
  void *s3214c7f0;
  int s3214c7f1[2];
  void  mf3214c7(); // _ZN10S3214C7_nt8mf3214c7Ev
};
//SIG(-1 S3214C7_nt) C1{ m Fp Fi[2]}


void  S3214C7_nt ::mf3214c7(){}

//skip512 S3214C7_nt

#else // __cplusplus

Class_Descriptor cd_S3214C7_nt = {  "S3214C7_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  S3214C6_nt  : S3214C7_nt {
};
//SIG(-1 S3214C6_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S3214C6_nt

#else // __cplusplus

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



//skip512 S3214C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S3214C7_nt;
extern Class_Descriptor cd_S3214C6_nt;
static Base_Class bases_S3214C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3214C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S3214C8_nt  {
  int s3214c8f0;
  void  mf3214c8(); // _ZN10S3214C8_nt8mf3214c8Ev
};
//SIG(-1 S3214C8_nt) C1{ m Fi}


void  S3214C8_nt ::mf3214c8(){}

//skip512 S3214C8_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S3214C8_nt[];
VTBL_ENTRY *P__ZTI10S3214C8_nt = _ZTI10S3214C8_nt; 
Class_Descriptor cd_S3214C8_nt = {  "S3214C8_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S3214C8_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  S3214C12  : S3214C7_nt {
};
//SIG(-1 S3214C12) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3214C12()
{
  extern Class_Descriptor cd_S3214C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3214C12, buf);
    S3214C12 &lv = *(new (buf) S3214C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3214C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3214C12)");
    check_base_class_offset(lv, (S3214C7_nt*), 0, "S3214C12");
    test_class_info(&lv, &cd_S3214C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3214C12(Test_S3214C12, "S3214C12", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S3214C11()
{
  extern Class_Descriptor cd_S3214C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3214C11, buf);
    S3214C11 &lv = *(new (buf) S3214C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3214C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3214C11)");
    check_base_class_offset(lv, (S3214C7_nt*)(S3214C12*), 0, "S3214C11");
    check_base_class_offset(lv, (S3214C12*), 0, "S3214C11");
    test_class_info(&lv, &cd_S3214C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3214C11(Test_S3214C11, "S3214C11", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3214C7_nt;
extern Class_Descriptor cd_S3214C12;
static Base_Class bases_S3214C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3214C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3214C11 = {  "S3214C11", // class name
  bases_S3214C11, 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  S3214C13_nt  {
  int s3214c13f0[3];
  void  mf3214c13(); // _ZN11S3214C13_nt9mf3214c13Ev
};
//SIG(-1 S3214C13_nt) C1{ m Fi[3]}


void  S3214C13_nt ::mf3214c13(){}

//skip512 S3214C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S3214C18()
{
  extern Class_Descriptor cd_S3214C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3214C18, buf);
    S3214C18 &lv = *(new (buf) S3214C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3214C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3214C18)");
    check_base_class_offset(lv, (S3214C7_nt*), 0, "S3214C18");
    test_class_info(&lv, &cd_S3214C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3214C18(Test_S3214C18, "S3214C18", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S3214C17()
{
  extern Class_Descriptor cd_S3214C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3214C17, buf);
    S3214C17 &lv = *(new (buf) S3214C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3214C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3214C17)");
    check_base_class_offset(lv, (S3214C7_nt*)(S3214C18*), 0, "S3214C17");
    check_base_class_offset(lv, (S3214C18*), 0, "S3214C17");
    test_class_info(&lv, &cd_S3214C17);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3214C17(Test_S3214C17, "S3214C17", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3214C7_nt;
extern Class_Descriptor cd_S3214C18;
static Base_Class bases_S3214C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3214C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S3214C17 = {  "S3214C17", // class name
  bases_S3214C17, 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  S3214C2_nt  : S3214C3_nt {
  ::S3214C5_nt s3214c2f0;
  ::S3214C5_nt s3214c2f1;
  ::S3214C8_nt s3214c2f2;
  int s3214c2f3;
  char s3214c2f4[4];
  void *s3214c2f5[2];
  ::S3214C5_nt s3214c2f6;
  unsigned int s3214c2f7:1;
  unsigned int s3214c2f8:1;
  unsigned int s3214c2f9:1;
  unsigned int s3214c2f10:1;
  unsigned int s3214c2f11:1;
  unsigned int s3214c2f12:1;
  unsigned int s3214c2f13:1;
  unsigned int s3214c2f14:1;
  unsigned int s3214c2f15:1;
  unsigned int s3214c2f16:1;
  unsigned int s3214c2f17:1;
  unsigned int s3214c2f18:1;
  unsigned int s3214c2f19:1;
  unsigned int s3214c2f20:1;
  unsigned int s3214c2f21:1;
  unsigned int s3214c2f22:1;
  unsigned int s3214c2f23:1;
  unsigned int s3214c2f24:1;
  unsigned int s3214c2f25:1;
  unsigned int s3214c2f26:1;
  unsigned int s3214c2f27:1;
  unsigned int s3214c2f28:1;
  unsigned int s3214c2f29:1;
  unsigned int s3214c2f30:1;
  unsigned int s3214c2f31:1;
  unsigned int s3214c2f32:1;
  unsigned int s3214c2f33:1;
  unsigned int s3214c2f34:1;
  unsigned int s3214c2f35:1;
  unsigned int s3214c2f36:1;
  unsigned int s3214c2f37:1;
  unsigned int s3214c2f38:1;
  unsigned int s3214c2f39:1;
  unsigned int s3214c2f40:1;
  unsigned int s3214c2f41:1;
  unsigned int s3214c2f42:1;
  unsigned int s3214c2f43:1;
  unsigned int s3214c2f44:1;
  unsigned int s3214c2f45:1;
  unsigned int s3214c2f46:1;
  unsigned int s3214c2f47:1;
  unsigned int s3214c2f48:1;
  unsigned int s3214c2f49:1;
  unsigned int s3214c2f50:1;
  unsigned int s3214c2f51:1;
  unsigned int s3214c2f52:1;
  unsigned int s3214c2f53:1;
  unsigned int s3214c2f54:1;
  unsigned int s3214c2f55:1;
  unsigned int s3214c2f56:1;
  unsigned int s3214c2f57:1;
  unsigned int s3214c2f58:1;
  unsigned int s3214c2f59:1;
  unsigned int s3214c2f60:1;
  unsigned int s3214c2f61:1;
  unsigned int s3214c2f62:1;
  unsigned int s3214c2f63:1;
  unsigned int s3214c2f64:1;
  unsigned int s3214c2f65:1;
  unsigned int s3214c2f66:1;
  unsigned int s3214c2f67:1;
  unsigned int s3214c2f68:1;
  unsigned int s3214c2f69:1;
  unsigned int s3214c2f70:1;
  unsigned int s3214c2f71:1;
  unsigned int s3214c2f72:1;
  unsigned int s3214c2f73:1;
  unsigned int s3214c2f74:1;
  unsigned int s3214c2f75:1;
  unsigned int s3214c2f76:1;
  unsigned int s3214c2f77:1;
  unsigned int s3214c2f78:1;
  unsigned int s3214c2f79:1;
  unsigned int s3214c2f80:1;
  unsigned int s3214c2f81:1;
  unsigned int s3214c2f82:1;
  unsigned int s3214c2f83:1;
  int s3214c2f84[5];
  void *s3214c2f85[2];
  int s3214c2f86[3];
  ::S3214C4_nt s3214c2f87;
  ::S3214C4_nt s3214c2f88;
  ::S3214C4_nt s3214c2f89;
  ::S3214C11 s3214c2f90;
  ::S3214C11 s3214c2f91;
  int s3214c2f92;
  void *s3214c2f93[2];
  ::S3214C13_nt s3214c2f94;
  ::S3214C13_nt s3214c2f95;
  ::S3214C13_nt s3214c2f96;
  ::S3214C13_nt s3214c2f97;
  void *s3214c2f98;
  ::S3214C4_nt s3214c2f99;
  ::S3214C11 s3214c2f100;
  ::S3214C13_nt s3214c2f101;
  ::S3214C13_nt s3214c2f102;
  int s3214c2f103;
  ::S3214C13_nt s3214c2f104;
  ::S3214C13_nt s3214c2f105;
  void *s3214c2f106;
  int s3214c2f107;
  char s3214c2f108;
  ::S3214C13_nt s3214c2f109;
  ::S3214C13_nt s3214c2f110;
  void *s3214c2f111;
  int s3214c2f112;
  void *s3214c2f113;
  ::S3214C11 s3214c2f114;
  ::S3214C17 s3214c2f115;
  ::S3214C17 s3214c2f116;
  virtual  ~S3214C2_nt(); // _ZN10S3214C2_ntD1Ev
  virtual void  v68(); // _ZN10S3214C2_nt3v68Ev
  virtual void  v69(); // _ZN10S3214C2_nt3v69Ev
  virtual void  v70(); // _ZN10S3214C2_nt3v70Ev
  virtual void  v71(); // _ZN10S3214C2_nt3v71Ev
  virtual void  v72(); // _ZN10S3214C2_nt3v72Ev
  virtual void  v73(); // _ZN10S3214C2_nt3v73Ev
  virtual void  v74(); // _ZN10S3214C2_nt3v74Ev
  virtual void  v75(); // _ZN10S3214C2_nt3v75Ev
  virtual void  v76(); // _ZN10S3214C2_nt3v76Ev
  virtual void  v77(); // _ZN10S3214C2_nt3v77Ev
  virtual void  v78(); // _ZN10S3214C2_nt3v78Ev
  virtual void  v79(); // _ZN10S3214C2_nt3v79Ev
  virtual void  v80(); // _ZN10S3214C2_nt3v80Ev
  virtual void  v81(); // _ZN10S3214C2_nt3v81Ev
  virtual void  v82(); // _ZN10S3214C2_nt3v82Ev
  virtual void  v83(); // _ZN10S3214C2_nt3v83Ev
  virtual void  v84(); // _ZN10S3214C2_nt3v84Ev
  virtual void  v85(); // _ZN10S3214C2_nt3v85Ev
  virtual void  v86(); // _ZN10S3214C2_nt3v86Ev
  virtual void  v87(); // _ZN10S3214C2_nt3v87Ev
  virtual void  v88(); // _ZN10S3214C2_nt3v88Ev
  virtual void  v89(); // _ZN10S3214C2_nt3v89Ev
  virtual void  v90(); // _ZN10S3214C2_nt3v90Ev
  virtual void  v91(); // _ZN10S3214C2_nt3v91Ev
  virtual void  v92(); // _ZN10S3214C2_nt3v92Ev
  virtual void  v93(); // _ZN10S3214C2_nt3v93Ev
  virtual void  v94(); // _ZN10S3214C2_nt3v94Ev
  virtual void  v95(); // _ZN10S3214C2_nt3v95Ev
  virtual void  v96(); // _ZN10S3214C2_nt3v96Ev
  virtual void  v97(); // _ZN10S3214C2_nt3v97Ev
  virtual void  v98(); // _ZN10S3214C2_nt3v98Ev
  virtual void  v99(); // _ZN10S3214C2_nt3v99Ev
  virtual void  v100(); // _ZN10S3214C2_nt4v100Ev
  virtual void  v101(); // _ZN10S3214C2_nt4v101Ev
  virtual void  v102(); // _ZN10S3214C2_nt4v102Ev
  virtual void  v103(); // _ZN10S3214C2_nt4v103Ev
  virtual void  v104(); // _ZN10S3214C2_nt4v104Ev
  virtual void  v105(); // _ZN10S3214C2_nt4v105Ev
  virtual void  v106(); // _ZN10S3214C2_nt4v106Ev
  virtual void  v107(); // _ZN10S3214C2_nt4v107Ev
  virtual void  v108(); // _ZN10S3214C2_nt4v108Ev
  virtual void  v109(); // _ZN10S3214C2_nt4v109Ev
  virtual void  v110(); // _ZN10S3214C2_nt4v110Ev
  virtual void  v111(); // _ZN10S3214C2_nt4v111Ev
  virtual void  v112(); // _ZN10S3214C2_nt4v112Ev
  virtual void  v113(); // _ZN10S3214C2_nt4v113Ev
  virtual void  v114(); // _ZN10S3214C2_nt4v114Ev
  virtual void  v115(); // _ZN10S3214C2_nt4v115Ev
  virtual void  v116(); // _ZN10S3214C2_nt4v116Ev
  virtual void  v117(); // _ZN10S3214C2_nt4v117Ev
  virtual void  v118(); // _ZN10S3214C2_nt4v118Ev
  virtual void  v119(); // _ZN10S3214C2_nt4v119Ev
  virtual void  v120(); // _ZN10S3214C2_nt4v120Ev
  virtual void  v121(); // _ZN10S3214C2_nt4v121Ev
  virtual void  v122(); // _ZN10S3214C2_nt4v122Ev
  virtual void  v123(); // _ZN10S3214C2_nt4v123Ev
  virtual void  v124(); // _ZN10S3214C2_nt4v124Ev
  virtual void  v125(); // _ZN10S3214C2_nt4v125Ev
  virtual void  v126(); // _ZN10S3214C2_nt4v126Ev
  virtual void  v127(); // _ZN10S3214C2_nt4v127Ev
  virtual void  v128(); // _ZN10S3214C2_nt4v128Ev
  virtual void  v129(); // _ZN10S3214C2_nt4v129Ev
  virtual void  v130(); // _ZN10S3214C2_nt4v130Ev
  virtual void  v131(); // _ZN10S3214C2_nt4v131Ev
  virtual void  v132(); // _ZN10S3214C2_nt4v132Ev
  virtual void  v133(); // _ZN10S3214C2_nt4v133Ev
  virtual void  v134(); // _ZN10S3214C2_nt4v134Ev
  virtual void  v135(); // _ZN10S3214C2_nt4v135Ev
  virtual void  v136(); // _ZN10S3214C2_nt4v136Ev
  virtual void  v137(); // _ZN10S3214C2_nt4v137Ev
  virtual void  v138(); // _ZN10S3214C2_nt4v138Ev
  virtual void  v139(); // _ZN10S3214C2_nt4v139Ev
  virtual void  v140(); // _ZN10S3214C2_nt4v140Ev
  virtual void  v141(); // _ZN10S3214C2_nt4v141Ev
  virtual void  v142(); // _ZN10S3214C2_nt4v142Ev
  virtual void  v143(); // _ZN10S3214C2_nt4v143Ev
  virtual void  v144(); // _ZN10S3214C2_nt4v144Ev
  virtual void  v145(); // _ZN10S3214C2_nt4v145Ev
  virtual void  v146(); // _ZN10S3214C2_nt4v146Ev
  virtual void  v147(); // _ZN10S3214C2_nt4v147Ev
  virtual void  v148(); // _ZN10S3214C2_nt4v148Ev
  virtual void  v149(); // _ZN10S3214C2_nt4v149Ev
  virtual void  v150(); // _ZN10S3214C2_nt4v150Ev
  virtual void  v151(); // _ZN10S3214C2_nt4v151Ev
  virtual void  v152(); // _ZN10S3214C2_nt4v152Ev
  virtual void  v153(); // _ZN10S3214C2_nt4v153Ev
  virtual void  v154(); // _ZN10S3214C2_nt4v154Ev
  virtual void  v155(); // _ZN10S3214C2_nt4v155Ev
  virtual void  v156(); // _ZN10S3214C2_nt4v156Ev
  virtual void  v157(); // _ZN10S3214C2_nt4v157Ev
  virtual void  v158(); // _ZN10S3214C2_nt4v158Ev
  virtual void  v159(); // _ZN10S3214C2_nt4v159Ev
  virtual void  v160(); // _ZN10S3214C2_nt4v160Ev
  virtual void  v161(); // _ZN10S3214C2_nt4v161Ev
  virtual void  v162(); // _ZN10S3214C2_nt4v162Ev
  virtual void  v163(); // _ZN10S3214C2_nt4v163Ev
  virtual void  v164(); // _ZN10S3214C2_nt4v164Ev
  virtual void  v165(); // _ZN10S3214C2_nt4v165Ev
  virtual void  v166(); // _ZN10S3214C2_nt4v166Ev
  virtual void  v167(); // _ZN10S3214C2_nt4v167Ev
  virtual void  v168(); // _ZN10S3214C2_nt4v168Ev
  virtual void  v169(); // _ZN10S3214C2_nt4v169Ev
  virtual void  v170(); // _ZN10S3214C2_nt4v170Ev
  virtual void  v171(); // _ZN10S3214C2_nt4v171Ev
  virtual void  v172(); // _ZN10S3214C2_nt4v172Ev
  virtual void  v173(); // _ZN10S3214C2_nt4v173Ev
  virtual void  v174(); // _ZN10S3214C2_nt4v174Ev
  virtual void  v175(); // _ZN10S3214C2_nt4v175Ev
  virtual void  v176(); // _ZN10S3214C2_nt4v176Ev
  virtual void  v177(); // _ZN10S3214C2_nt4v177Ev
  virtual void  v178(); // _ZN10S3214C2_nt4v178Ev
  virtual void  v179(); // _ZN10S3214C2_nt4v179Ev
  virtual void  v180(); // _ZN10S3214C2_nt4v180Ev
  virtual void  v181(); // _ZN10S3214C2_nt4v181Ev
  virtual void  v182(); // _ZN10S3214C2_nt4v182Ev
  virtual void  v183(); // _ZN10S3214C2_nt4v183Ev
  virtual void  v184(); // _ZN10S3214C2_nt4v184Ev
  virtual void  v185(); // _ZN10S3214C2_nt4v185Ev
  virtual void  v186(); // _ZN10S3214C2_nt4v186Ev
  virtual void  v187(); // _ZN10S3214C2_nt4v187Ev
  virtual void  v188(); // _ZN10S3214C2_nt4v188Ev
  virtual void  v189(); // _ZN10S3214C2_nt4v189Ev
  virtual void  v190(); // _ZN10S3214C2_nt4v190Ev
  virtual void  v191(); // _ZN10S3214C2_nt4v191Ev
  virtual void  v192(); // _ZN10S3214C2_nt4v192Ev
  virtual void  v193(); // _ZN10S3214C2_nt4v193Ev
  virtual void  v194(); // _ZN10S3214C2_nt4v194Ev
  virtual void  v195(); // _ZN10S3214C2_nt4v195Ev
  virtual void  v196(); // _ZN10S3214C2_nt4v196Ev
  virtual void  v197(); // _ZN10S3214C2_nt4v197Ev
  virtual void  v198(); // _ZN10S3214C2_nt4v198Ev
  virtual void  v199(); // _ZN10S3214C2_nt4v199Ev
  virtual void  v200(); // _ZN10S3214C2_nt4v200Ev
  virtual void  v201(); // _ZN10S3214C2_nt4v201Ev
  virtual void  v202(); // _ZN10S3214C2_nt4v202Ev
  virtual void  v203(); // _ZN10S3214C2_nt4v203Ev
  virtual void  v204(); // _ZN10S3214C2_nt4v204Ev
  virtual void  v205(); // _ZN10S3214C2_nt4v205Ev
  virtual void  v206(); // _ZN10S3214C2_nt4v206Ev
  virtual void  v207(); // _ZN10S3214C2_nt4v207Ev
  virtual void  v208(); // _ZN10S3214C2_nt4v208Ev
  virtual void  v209(); // _ZN10S3214C2_nt4v209Ev
  virtual void  v210(); // _ZN10S3214C2_nt4v210Ev
  S3214C2_nt(); // tgen
};
//SIG(-1 S3214C2_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}


 S3214C2_nt ::~S3214C2_nt(){ note_dtor("S3214C2_nt", this);}
void  S3214C2_nt ::v68(){vfunc_called(this, "_ZN10S3214C2_nt3v68Ev");}
void  S3214C2_nt ::v69(){vfunc_called(this, "_ZN10S3214C2_nt3v69Ev");}
void  S3214C2_nt ::v70(){vfunc_called(this, "_ZN10S3214C2_nt3v70Ev");}
void  S3214C2_nt ::v71(){vfunc_called(this, "_ZN10S3214C2_nt3v71Ev");}
void  S3214C2_nt ::v72(){vfunc_called(this, "_ZN10S3214C2_nt3v72Ev");}
void  S3214C2_nt ::v73(){vfunc_called(this, "_ZN10S3214C2_nt3v73Ev");}
void  S3214C2_nt ::v74(){vfunc_called(this, "_ZN10S3214C2_nt3v74Ev");}
void  S3214C2_nt ::v75(){vfunc_called(this, "_ZN10S3214C2_nt3v75Ev");}
void  S3214C2_nt ::v76(){vfunc_called(this, "_ZN10S3214C2_nt3v76Ev");}
void  S3214C2_nt ::v77(){vfunc_called(this, "_ZN10S3214C2_nt3v77Ev");}
void  S3214C2_nt ::v78(){vfunc_called(this, "_ZN10S3214C2_nt3v78Ev");}
void  S3214C2_nt ::v79(){vfunc_called(this, "_ZN10S3214C2_nt3v79Ev");}
void  S3214C2_nt ::v80(){vfunc_called(this, "_ZN10S3214C2_nt3v80Ev");}
void  S3214C2_nt ::v81(){vfunc_called(this, "_ZN10S3214C2_nt3v81Ev");}
void  S3214C2_nt ::v82(){vfunc_called(this, "_ZN10S3214C2_nt3v82Ev");}
void  S3214C2_nt ::v83(){vfunc_called(this, "_ZN10S3214C2_nt3v83Ev");}
void  S3214C2_nt ::v84(){vfunc_called(this, "_ZN10S3214C2_nt3v84Ev");}
void  S3214C2_nt ::v85(){vfunc_called(this, "_ZN10S3214C2_nt3v85Ev");}
void  S3214C2_nt ::v86(){vfunc_called(this, "_ZN10S3214C2_nt3v86Ev");}
void  S3214C2_nt ::v87(){vfunc_called(this, "_ZN10S3214C2_nt3v87Ev");}
void  S3214C2_nt ::v88(){vfunc_called(this, "_ZN10S3214C2_nt3v88Ev");}
void  S3214C2_nt ::v89(){vfunc_called(this, "_ZN10S3214C2_nt3v89Ev");}
void  S3214C2_nt ::v90(){vfunc_called(this, "_ZN10S3214C2_nt3v90Ev");}
void  S3214C2_nt ::v91(){vfunc_called(this, "_ZN10S3214C2_nt3v91Ev");}
void  S3214C2_nt ::v92(){vfunc_called(this, "_ZN10S3214C2_nt3v92Ev");}
void  S3214C2_nt ::v93(){vfunc_called(this, "_ZN10S3214C2_nt3v93Ev");}
void  S3214C2_nt ::v94(){vfunc_called(this, "_ZN10S3214C2_nt3v94Ev");}
void  S3214C2_nt ::v95(){vfunc_called(this, "_ZN10S3214C2_nt3v95Ev");}
void  S3214C2_nt ::v96(){vfunc_called(this, "_ZN10S3214C2_nt3v96Ev");}
void  S3214C2_nt ::v97(){vfunc_called(this, "_ZN10S3214C2_nt3v97Ev");}
void  S3214C2_nt ::v98(){vfunc_called(this, "_ZN10S3214C2_nt3v98Ev");}
void  S3214C2_nt ::v99(){vfunc_called(this, "_ZN10S3214C2_nt3v99Ev");}
void  S3214C2_nt ::v100(){vfunc_called(this, "_ZN10S3214C2_nt4v100Ev");}
void  S3214C2_nt ::v101(){vfunc_called(this, "_ZN10S3214C2_nt4v101Ev");}
void  S3214C2_nt ::v102(){vfunc_called(this, "_ZN10S3214C2_nt4v102Ev");}
void  S3214C2_nt ::v103(){vfunc_called(this, "_ZN10S3214C2_nt4v103Ev");}
void  S3214C2_nt ::v104(){vfunc_called(this, "_ZN10S3214C2_nt4v104Ev");}
void  S3214C2_nt ::v105(){vfunc_called(this, "_ZN10S3214C2_nt4v105Ev");}
void  S3214C2_nt ::v106(){vfunc_called(this, "_ZN10S3214C2_nt4v106Ev");}
void  S3214C2_nt ::v107(){vfunc_called(this, "_ZN10S3214C2_nt4v107Ev");}
void  S3214C2_nt ::v108(){vfunc_called(this, "_ZN10S3214C2_nt4v108Ev");}
void  S3214C2_nt ::v109(){vfunc_called(this, "_ZN10S3214C2_nt4v109Ev");}
void  S3214C2_nt ::v110(){vfunc_called(this, "_ZN10S3214C2_nt4v110Ev");}
void  S3214C2_nt ::v111(){vfunc_called(this, "_ZN10S3214C2_nt4v111Ev");}
void  S3214C2_nt ::v112(){vfunc_called(this, "_ZN10S3214C2_nt4v112Ev");}
void  S3214C2_nt ::v113(){vfunc_called(this, "_ZN10S3214C2_nt4v113Ev");}
void  S3214C2_nt ::v114(){vfunc_called(this, "_ZN10S3214C2_nt4v114Ev");}
void  S3214C2_nt ::v115(){vfunc_called(this, "_ZN10S3214C2_nt4v115Ev");}
void  S3214C2_nt ::v116(){vfunc_called(this, "_ZN10S3214C2_nt4v116Ev");}
void  S3214C2_nt ::v117(){vfunc_called(this, "_ZN10S3214C2_nt4v117Ev");}
void  S3214C2_nt ::v118(){vfunc_called(this, "_ZN10S3214C2_nt4v118Ev");}
void  S3214C2_nt ::v119(){vfunc_called(this, "_ZN10S3214C2_nt4v119Ev");}
void  S3214C2_nt ::v120(){vfunc_called(this, "_ZN10S3214C2_nt4v120Ev");}
void  S3214C2_nt ::v121(){vfunc_called(this, "_ZN10S3214C2_nt4v121Ev");}
void  S3214C2_nt ::v122(){vfunc_called(this, "_ZN10S3214C2_nt4v122Ev");}
void  S3214C2_nt ::v123(){vfunc_called(this, "_ZN10S3214C2_nt4v123Ev");}
void  S3214C2_nt ::v124(){vfunc_called(this, "_ZN10S3214C2_nt4v124Ev");}
void  S3214C2_nt ::v125(){vfunc_called(this, "_ZN10S3214C2_nt4v125Ev");}
void  S3214C2_nt ::v126(){vfunc_called(this, "_ZN10S3214C2_nt4v126Ev");}
void  S3214C2_nt ::v127(){vfunc_called(this, "_ZN10S3214C2_nt4v127Ev");}
void  S3214C2_nt ::v128(){vfunc_called(this, "_ZN10S3214C2_nt4v128Ev");}
void  S3214C2_nt ::v129(){vfunc_called(this, "_ZN10S3214C2_nt4v129Ev");}
void  S3214C2_nt ::v130(){vfunc_called(this, "_ZN10S3214C2_nt4v130Ev");}
void  S3214C2_nt ::v131(){vfunc_called(this, "_ZN10S3214C2_nt4v131Ev");}
void  S3214C2_nt ::v132(){vfunc_called(this, "_ZN10S3214C2_nt4v132Ev");}
void  S3214C2_nt ::v133(){vfunc_called(this, "_ZN10S3214C2_nt4v133Ev");}
void  S3214C2_nt ::v134(){vfunc_called(this, "_ZN10S3214C2_nt4v134Ev");}
void  S3214C2_nt ::v135(){vfunc_called(this, "_ZN10S3214C2_nt4v135Ev");}
void  S3214C2_nt ::v136(){vfunc_called(this, "_ZN10S3214C2_nt4v136Ev");}
void  S3214C2_nt ::v137(){vfunc_called(this, "_ZN10S3214C2_nt4v137Ev");}
void  S3214C2_nt ::v138(){vfunc_called(this, "_ZN10S3214C2_nt4v138Ev");}
void  S3214C2_nt ::v139(){vfunc_called(this, "_ZN10S3214C2_nt4v139Ev");}
void  S3214C2_nt ::v140(){vfunc_called(this, "_ZN10S3214C2_nt4v140Ev");}
void  S3214C2_nt ::v141(){vfunc_called(this, "_ZN10S3214C2_nt4v141Ev");}
void  S3214C2_nt ::v142(){vfunc_called(this, "_ZN10S3214C2_nt4v142Ev");}
void  S3214C2_nt ::v143(){vfunc_called(this, "_ZN10S3214C2_nt4v143Ev");}
void  S3214C2_nt ::v144(){vfunc_called(this, "_ZN10S3214C2_nt4v144Ev");}
void  S3214C2_nt ::v145(){vfunc_called(this, "_ZN10S3214C2_nt4v145Ev");}
void  S3214C2_nt ::v146(){vfunc_called(this, "_ZN10S3214C2_nt4v146Ev");}
void  S3214C2_nt ::v147(){vfunc_called(this, "_ZN10S3214C2_nt4v147Ev");}
void  S3214C2_nt ::v148(){vfunc_called(this, "_ZN10S3214C2_nt4v148Ev");}
void  S3214C2_nt ::v149(){vfunc_called(this, "_ZN10S3214C2_nt4v149Ev");}
void  S3214C2_nt ::v150(){vfunc_called(this, "_ZN10S3214C2_nt4v150Ev");}
void  S3214C2_nt ::v151(){vfunc_called(this, "_ZN10S3214C2_nt4v151Ev");}
void  S3214C2_nt ::v152(){vfunc_called(this, "_ZN10S3214C2_nt4v152Ev");}
void  S3214C2_nt ::v153(){vfunc_called(this, "_ZN10S3214C2_nt4v153Ev");}
void  S3214C2_nt ::v154(){vfunc_called(this, "_ZN10S3214C2_nt4v154Ev");}
void  S3214C2_nt ::v155(){vfunc_called(this, "_ZN10S3214C2_nt4v155Ev");}
void  S3214C2_nt ::v156(){vfunc_called(this, "_ZN10S3214C2_nt4v156Ev");}
void  S3214C2_nt ::v157(){vfunc_called(this, "_ZN10S3214C2_nt4v157Ev");}
void  S3214C2_nt ::v158(){vfunc_called(this, "_ZN10S3214C2_nt4v158Ev");}
void  S3214C2_nt ::v159(){vfunc_called(this, "_ZN10S3214C2_nt4v159Ev");}
void  S3214C2_nt ::v160(){vfunc_called(this, "_ZN10S3214C2_nt4v160Ev");}
void  S3214C2_nt ::v161(){vfunc_called(this, "_ZN10S3214C2_nt4v161Ev");}
void  S3214C2_nt ::v162(){vfunc_called(this, "_ZN10S3214C2_nt4v162Ev");}
void  S3214C2_nt ::v163(){vfunc_called(this, "_ZN10S3214C2_nt4v163Ev");}
void  S3214C2_nt ::v164(){vfunc_called(this, "_ZN10S3214C2_nt4v164Ev");}
void  S3214C2_nt ::v165(){vfunc_called(this, "_ZN10S3214C2_nt4v165Ev");}
void  S3214C2_nt ::v166(){vfunc_called(this, "_ZN10S3214C2_nt4v166Ev");}
void  S3214C2_nt ::v167(){vfunc_called(this, "_ZN10S3214C2_nt4v167Ev");}
void  S3214C2_nt ::v168(){vfunc_called(this, "_ZN10S3214C2_nt4v168Ev");}
void  S3214C2_nt ::v169(){vfunc_called(this, "_ZN10S3214C2_nt4v169Ev");}
void  S3214C2_nt ::v170(){vfunc_called(this, "_ZN10S3214C2_nt4v170Ev");}
void  S3214C2_nt ::v171(){vfunc_called(this, "_ZN10S3214C2_nt4v171Ev");}
void  S3214C2_nt ::v172(){vfunc_called(this, "_ZN10S3214C2_nt4v172Ev");}
void  S3214C2_nt ::v173(){vfunc_called(this, "_ZN10S3214C2_nt4v173Ev");}
void  S3214C2_nt ::v174(){vfunc_called(this, "_ZN10S3214C2_nt4v174Ev");}
void  S3214C2_nt ::v175(){vfunc_called(this, "_ZN10S3214C2_nt4v175Ev");}
void  S3214C2_nt ::v176(){vfunc_called(this, "_ZN10S3214C2_nt4v176Ev");}
void  S3214C2_nt ::v177(){vfunc_called(this, "_ZN10S3214C2_nt4v177Ev");}
void  S3214C2_nt ::v178(){vfunc_called(this, "_ZN10S3214C2_nt4v178Ev");}
void  S3214C2_nt ::v179(){vfunc_called(this, "_ZN10S3214C2_nt4v179Ev");}
void  S3214C2_nt ::v180(){vfunc_called(this, "_ZN10S3214C2_nt4v180Ev");}
void  S3214C2_nt ::v181(){vfunc_called(this, "_ZN10S3214C2_nt4v181Ev");}
void  S3214C2_nt ::v182(){vfunc_called(this, "_ZN10S3214C2_nt4v182Ev");}
void  S3214C2_nt ::v183(){vfunc_called(this, "_ZN10S3214C2_nt4v183Ev");}
void  S3214C2_nt ::v184(){vfunc_called(this, "_ZN10S3214C2_nt4v184Ev");}
void  S3214C2_nt ::v185(){vfunc_called(this, "_ZN10S3214C2_nt4v185Ev");}
void  S3214C2_nt ::v186(){vfunc_called(this, "_ZN10S3214C2_nt4v186Ev");}
void  S3214C2_nt ::v187(){vfunc_called(this, "_ZN10S3214C2_nt4v187Ev");}
void  S3214C2_nt ::v188(){vfunc_called(this, "_ZN10S3214C2_nt4v188Ev");}
void  S3214C2_nt ::v189(){vfunc_called(this, "_ZN10S3214C2_nt4v189Ev");}
void  S3214C2_nt ::v190(){vfunc_called(this, "_ZN10S3214C2_nt4v190Ev");}
void  S3214C2_nt ::v191(){vfunc_called(this, "_ZN10S3214C2_nt4v191Ev");}
void  S3214C2_nt ::v192(){vfunc_called(this, "_ZN10S3214C2_nt4v192Ev");}
void  S3214C2_nt ::v193(){vfunc_called(this, "_ZN10S3214C2_nt4v193Ev");}
void  S3214C2_nt ::v194(){vfunc_called(this, "_ZN10S3214C2_nt4v194Ev");}
void  S3214C2_nt ::v195(){vfunc_called(this, "_ZN10S3214C2_nt4v195Ev");}
void  S3214C2_nt ::v196(){vfunc_called(this, "_ZN10S3214C2_nt4v196Ev");}
void  S3214C2_nt ::v197(){vfunc_called(this, "_ZN10S3214C2_nt4v197Ev");}
void  S3214C2_nt ::v198(){vfunc_called(this, "_ZN10S3214C2_nt4v198Ev");}
void  S3214C2_nt ::v199(){vfunc_called(this, "_ZN10S3214C2_nt4v199Ev");}
void  S3214C2_nt ::v200(){vfunc_called(this, "_ZN10S3214C2_nt4v200Ev");}
void  S3214C2_nt ::v201(){vfunc_called(this, "_ZN10S3214C2_nt4v201Ev");}
void  S3214C2_nt ::v202(){vfunc_called(this, "_ZN10S3214C2_nt4v202Ev");}
void  S3214C2_nt ::v203(){vfunc_called(this, "_ZN10S3214C2_nt4v203Ev");}
void  S3214C2_nt ::v204(){vfunc_called(this, "_ZN10S3214C2_nt4v204Ev");}
void  S3214C2_nt ::v205(){vfunc_called(this, "_ZN10S3214C2_nt4v205Ev");}
void  S3214C2_nt ::v206(){vfunc_called(this, "_ZN10S3214C2_nt4v206Ev");}
void  S3214C2_nt ::v207(){vfunc_called(this, "_ZN10S3214C2_nt4v207Ev");}
void  S3214C2_nt ::v208(){vfunc_called(this, "_ZN10S3214C2_nt4v208Ev");}
void  S3214C2_nt ::v209(){vfunc_called(this, "_ZN10S3214C2_nt4v209Ev");}
void  S3214C2_nt ::v210(){vfunc_called(this, "_ZN10S3214C2_nt4v210Ev");}
S3214C2_nt ::S3214C2_nt(){ note_ctor("S3214C2_nt", this);} // tgen

//skip512 S3214C2_nt

#else // __cplusplus

extern void _ZN10S3214C2_ntC1Ev();
extern void _ZN10S3214C2_ntD1Ev();
Name_Map name_map_S3214C2_nt[] = {
  NSPAIR(_ZN10S3214C2_ntC1Ev),
  NSPAIR(_ZN10S3214C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3214C3_nt;
extern VTBL_ENTRY _ZTI10S3214C3_nt[];
extern  VTBL_ENTRY _ZTV10S3214C3_nt[];
static Base_Class bases_S3214C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3214C2_nt[];
extern void _ZN10S3214C2_ntD1Ev();
extern void _ZN10S3214C2_ntD0Ev();
extern void _ZN10S3214C3_nt2v4Ev();
extern void _ZN10S3214C3_nt2v5Ev();
extern void _ZN10S3214C3_nt2v6Ev();
extern void _ZN10S3214C3_nt2v7Ev();
extern void _ZN10S3214C3_nt2v8Ev();
extern void _ZN10S3214C3_nt2v9Ev();
extern void _ZN10S3214C3_nt3v10Ev();
extern void _ZN10S3214C3_nt3v11Ev();
extern void _ZN10S3214C3_nt3v12Ev();
extern void _ZN10S3214C3_nt3v13Ev();
extern void _ZN10S3214C3_nt3v14Ev();
extern void _ZN10S3214C3_nt3v15Ev();
extern void _ZN10S3214C3_nt3v16Ev();
extern void _ZN10S3214C3_nt3v17Ev();
extern void _ZN10S3214C3_nt3v18Ev();
extern void _ZN10S3214C3_nt3v19Ev();
extern void _ZN10S3214C3_nt3v20Ev();
extern void _ZN10S3214C3_nt3v21Ev();
extern void _ZN10S3214C3_nt3v22Ev();
extern void _ZN10S3214C3_nt3v23Ev();
extern void _ZN10S3214C3_nt3v24Ev();
extern void _ZN10S3214C3_nt3v25Ev();
extern void _ZN10S3214C3_nt3v26Ev();
extern void _ZN10S3214C3_nt3v27Ev();
extern void _ZN10S3214C3_nt3v28Ev();
extern void _ZN10S3214C3_nt3v29Ev();
extern void _ZN10S3214C3_nt3v30Ev();
extern void _ZN10S3214C3_nt3v31Ev();
extern void _ZN10S3214C3_nt3v32Ev();
extern void _ZN10S3214C3_nt3v33Ev();
extern void _ZN10S3214C3_nt3v34Ev();
extern void _ZN10S3214C3_nt3v35Ev();
extern void _ZN10S3214C3_nt3v36Ev();
extern void _ZN10S3214C3_nt3v37Ev();
extern void _ZN10S3214C3_nt3v38Ev();
extern void _ZN10S3214C3_nt3v39Ev();
extern void _ZN10S3214C3_nt3v40Ev();
extern void _ZN10S3214C3_nt3v41Ev();
extern void _ZN10S3214C3_nt3v42Ev();
extern void _ZN10S3214C3_nt3v43Ev();
extern void _ZN10S3214C3_nt3v44Ev();
extern void _ZN10S3214C3_nt3v45Ev();
extern void _ZN10S3214C3_nt3v46Ev();
extern void _ZN10S3214C3_nt3v47Ev();
extern void _ZN10S3214C3_nt3v48Ev();
extern void _ZN10S3214C3_nt3v49Ev();
extern void _ZN10S3214C3_nt3v50Ev();
extern void _ZN10S3214C3_nt3v51Ev();
extern void _ZN10S3214C3_nt3v52Ev();
extern void _ZN10S3214C3_nt3v53Ev();
extern void _ZN10S3214C3_nt3v54Ev();
extern void _ZN10S3214C3_nt3v55Ev();
extern void _ZN10S3214C3_nt3v56Ev();
extern void _ZN10S3214C3_nt3v57Ev();
extern void _ZN10S3214C3_nt3v58Ev();
extern void _ZN10S3214C3_nt3v59Ev();
extern void _ZN10S3214C3_nt3v60Ev();
extern void _ZN10S3214C3_nt3v61Ev();
extern void _ZN10S3214C3_nt3v62Ev();
extern void _ZN10S3214C3_nt3v63Ev();
extern void _ZN10S3214C3_nt3v64Ev();
extern void _ZN10S3214C3_nt3v65Ev();
extern void _ZN10S3214C3_nt3v66Ev();
extern void _ZN10S3214C3_nt3v67Ev();
extern void _ZN10S3214C2_nt3v68Ev();
extern void _ZN10S3214C2_nt3v69Ev();
extern void _ZN10S3214C2_nt3v70Ev();
extern void _ZN10S3214C2_nt3v71Ev();
extern void _ZN10S3214C2_nt3v72Ev();
extern void _ZN10S3214C2_nt3v73Ev();
extern void _ZN10S3214C2_nt3v74Ev();
extern void _ZN10S3214C2_nt3v75Ev();
extern void _ZN10S3214C2_nt3v76Ev();
extern void _ZN10S3214C2_nt3v77Ev();
extern void _ZN10S3214C2_nt3v78Ev();
extern void _ZN10S3214C2_nt3v79Ev();
extern void _ZN10S3214C2_nt3v80Ev();
extern void _ZN10S3214C2_nt3v81Ev();
extern void _ZN10S3214C2_nt3v82Ev();
extern void _ZN10S3214C2_nt3v83Ev();
extern void _ZN10S3214C2_nt3v84Ev();
extern void _ZN10S3214C2_nt3v85Ev();
extern void _ZN10S3214C2_nt3v86Ev();
extern void _ZN10S3214C2_nt3v87Ev();
extern void _ZN10S3214C2_nt3v88Ev();
extern void _ZN10S3214C2_nt3v89Ev();
extern void _ZN10S3214C2_nt3v90Ev();
extern void _ZN10S3214C2_nt3v91Ev();
extern void _ZN10S3214C2_nt3v92Ev();
extern void _ZN10S3214C2_nt3v93Ev();
extern void _ZN10S3214C2_nt3v94Ev();
extern void _ZN10S3214C2_nt3v95Ev();
extern void _ZN10S3214C2_nt3v96Ev();
extern void _ZN10S3214C2_nt3v97Ev();
extern void _ZN10S3214C2_nt3v98Ev();
extern void _ZN10S3214C2_nt3v99Ev();
extern void _ZN10S3214C2_nt4v100Ev();
extern void _ZN10S3214C2_nt4v101Ev();
extern void _ZN10S3214C2_nt4v102Ev();
extern void _ZN10S3214C2_nt4v103Ev();
extern void _ZN10S3214C2_nt4v104Ev();
extern void _ZN10S3214C2_nt4v105Ev();
extern void _ZN10S3214C2_nt4v106Ev();
extern void _ZN10S3214C2_nt4v107Ev();
extern void _ZN10S3214C2_nt4v108Ev();
extern void _ZN10S3214C2_nt4v109Ev();
extern void _ZN10S3214C2_nt4v110Ev();
extern void _ZN10S3214C2_nt4v111Ev();
extern void _ZN10S3214C2_nt4v112Ev();
extern void _ZN10S3214C2_nt4v113Ev();
extern void _ZN10S3214C2_nt4v114Ev();
extern void _ZN10S3214C2_nt4v115Ev();
extern void _ZN10S3214C2_nt4v116Ev();
extern void _ZN10S3214C2_nt4v117Ev();
extern void _ZN10S3214C2_nt4v118Ev();
extern void _ZN10S3214C2_nt4v119Ev();
extern void _ZN10S3214C2_nt4v120Ev();
extern void _ZN10S3214C2_nt4v121Ev();
extern void _ZN10S3214C2_nt4v122Ev();
extern void _ZN10S3214C2_nt4v123Ev();
extern void _ZN10S3214C2_nt4v124Ev();
extern void _ZN10S3214C2_nt4v125Ev();
extern void _ZN10S3214C2_nt4v126Ev();
extern void _ZN10S3214C2_nt4v127Ev();
extern void _ZN10S3214C2_nt4v128Ev();
extern void _ZN10S3214C2_nt4v129Ev();
extern void _ZN10S3214C2_nt4v130Ev();
extern void _ZN10S3214C2_nt4v131Ev();
extern void _ZN10S3214C2_nt4v132Ev();
extern void _ZN10S3214C2_nt4v133Ev();
extern void _ZN10S3214C2_nt4v134Ev();
extern void _ZN10S3214C2_nt4v135Ev();
extern void _ZN10S3214C2_nt4v136Ev();
extern void _ZN10S3214C2_nt4v137Ev();
extern void _ZN10S3214C2_nt4v138Ev();
extern void _ZN10S3214C2_nt4v139Ev();
extern void _ZN10S3214C2_nt4v140Ev();
extern void _ZN10S3214C2_nt4v141Ev();
extern void _ZN10S3214C2_nt4v142Ev();
extern void _ZN10S3214C2_nt4v143Ev();
extern void _ZN10S3214C2_nt4v144Ev();
extern void _ZN10S3214C2_nt4v145Ev();
extern void _ZN10S3214C2_nt4v146Ev();
extern void _ZN10S3214C2_nt4v147Ev();
extern void _ZN10S3214C2_nt4v148Ev();
extern void _ZN10S3214C2_nt4v149Ev();
extern void _ZN10S3214C2_nt4v150Ev();
extern void _ZN10S3214C2_nt4v151Ev();
extern void _ZN10S3214C2_nt4v152Ev();
extern void _ZN10S3214C2_nt4v153Ev();
extern void _ZN10S3214C2_nt4v154Ev();
extern void _ZN10S3214C2_nt4v155Ev();
extern void _ZN10S3214C2_nt4v156Ev();
extern void _ZN10S3214C2_nt4v157Ev();
extern void _ZN10S3214C2_nt4v158Ev();
extern void _ZN10S3214C2_nt4v159Ev();
extern void _ZN10S3214C2_nt4v160Ev();
extern void _ZN10S3214C2_nt4v161Ev();
extern void _ZN10S3214C2_nt4v162Ev();
extern void _ZN10S3214C2_nt4v163Ev();
extern void _ZN10S3214C2_nt4v164Ev();
extern void _ZN10S3214C2_nt4v165Ev();
extern void _ZN10S3214C2_nt4v166Ev();
extern void _ZN10S3214C2_nt4v167Ev();
extern void _ZN10S3214C2_nt4v168Ev();
extern void _ZN10S3214C2_nt4v169Ev();
extern void _ZN10S3214C2_nt4v170Ev();
extern void _ZN10S3214C2_nt4v171Ev();
extern void _ZN10S3214C2_nt4v172Ev();
extern void _ZN10S3214C2_nt4v173Ev();
extern void _ZN10S3214C2_nt4v174Ev();
extern void _ZN10S3214C2_nt4v175Ev();
extern void _ZN10S3214C2_nt4v176Ev();
extern void _ZN10S3214C2_nt4v177Ev();
extern void _ZN10S3214C2_nt4v178Ev();
extern void _ZN10S3214C2_nt4v179Ev();
extern void _ZN10S3214C2_nt4v180Ev();
extern void _ZN10S3214C2_nt4v181Ev();
extern void _ZN10S3214C2_nt4v182Ev();
extern void _ZN10S3214C2_nt4v183Ev();
extern void _ZN10S3214C2_nt4v184Ev();
extern void _ZN10S3214C2_nt4v185Ev();
extern void _ZN10S3214C2_nt4v186Ev();
extern void _ZN10S3214C2_nt4v187Ev();
extern void _ZN10S3214C2_nt4v188Ev();
extern void _ZN10S3214C2_nt4v189Ev();
extern void _ZN10S3214C2_nt4v190Ev();
extern void _ZN10S3214C2_nt4v191Ev();
extern void _ZN10S3214C2_nt4v192Ev();
extern void _ZN10S3214C2_nt4v193Ev();
extern void _ZN10S3214C2_nt4v194Ev();
extern void _ZN10S3214C2_nt4v195Ev();
extern void _ZN10S3214C2_nt4v196Ev();
extern void _ZN10S3214C2_nt4v197Ev();
extern void _ZN10S3214C2_nt4v198Ev();
extern void _ZN10S3214C2_nt4v199Ev();
extern void _ZN10S3214C2_nt4v200Ev();
extern void _ZN10S3214C2_nt4v201Ev();
extern void _ZN10S3214C2_nt4v202Ev();
extern void _ZN10S3214C2_nt4v203Ev();
extern void _ZN10S3214C2_nt4v204Ev();
extern void _ZN10S3214C2_nt4v205Ev();
extern void _ZN10S3214C2_nt4v206Ev();
extern void _ZN10S3214C2_nt4v207Ev();
extern void _ZN10S3214C2_nt4v208Ev();
extern void _ZN10S3214C2_nt4v209Ev();
extern void _ZN10S3214C2_nt4v210Ev();
static  VTBL_ENTRY vtc_S3214C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3214C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3214C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v210Ev,
};
extern VTBL_ENTRY _ZTI10S3214C2_nt[];
VTBL_ENTRY *P__ZTI10S3214C2_nt = _ZTI10S3214C2_nt; 
extern  VTBL_ENTRY _ZTV10S3214C2_nt[];
Class_Descriptor cd_S3214C2_nt = {  "S3214C2_nt", // class name
  bases_S3214C2_nt, 1,
  &(vtc_S3214C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI10S3214C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3214C2_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  S3214C23  : S3214C7_nt {
};
//SIG(-1 S3214C23) C1{ BC2{ m Fp Fi[2]}}



static void Test_S3214C23()
{
  extern Class_Descriptor cd_S3214C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3214C23, buf);
    S3214C23 &lv = *(new (buf) S3214C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3214C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3214C23)");
    check_base_class_offset(lv, (S3214C7_nt*), 0, "S3214C23");
    test_class_info(&lv, &cd_S3214C23);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3214C23(Test_S3214C23, "S3214C23", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S3214C22()
{
  extern Class_Descriptor cd_S3214C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3214C22, buf);
    S3214C22 &lv = *(new (buf) S3214C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3214C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3214C22)");
    check_base_class_offset(lv, (S3214C7_nt*)(S3214C23*), 0, "S3214C22");
    check_base_class_offset(lv, (S3214C23*), 0, "S3214C22");
    test_class_info(&lv, &cd_S3214C22);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3214C22(Test_S3214C22, "S3214C22", ABISELECT(16,12));

#else // __cplusplus

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



//skip512 S3214C21_nt

#else // __cplusplus

extern Class_Descriptor cd_S3214C7_nt;
extern Class_Descriptor cd_S3214C23;
extern Class_Descriptor cd_S3214C22;
static Base_Class bases_S3214C21_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3214C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3214C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S3214C1  : S3214C2_nt {
  ::S3214C21_nt s3214c1f0;
  virtual  ~S3214C1(); // _ZN7S3214C1D1Ev
  virtual void  v1(); // _ZN7S3214C12v1Ev
  virtual void  v2(); // _ZN7S3214C12v2Ev
  virtual void  v3(); // _ZN7S3214C12v3Ev
  S3214C1(); // tgen
};
//SIG(1 S3214C1) 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 FC14{ BC15{ BC16{ BC7}}}}


 S3214C1 ::~S3214C1(){ note_dtor("S3214C1", this);}
void  S3214C1 ::v1(){vfunc_called(this, "_ZN7S3214C12v1Ev");}
void  S3214C1 ::v2(){vfunc_called(this, "_ZN7S3214C12v2Ev");}
void  S3214C1 ::v3(){vfunc_called(this, "_ZN7S3214C12v3Ev");}
S3214C1 ::S3214C1(){ note_ctor("S3214C1", this);} // tgen

static void Test_S3214C1()
{
  extern Class_Descriptor cd_S3214C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(74,113)];
    init_test(&cd_S3214C1, buf);
    S3214C1 *dp, &lv = *(dp=new (buf) S3214C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(584,448), "sizeof(S3214C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3214C1)");
    check_base_class_offset(lv, (S3214C3_nt*)(S3214C2_nt*), 0, "S3214C1");
    check_base_class_offset(lv, (S3214C2_nt*), 0, "S3214C1");
    check_field_offset(lv, s3214c1f0, ABISELECT(568,436), "S3214C1.s3214c1f0");
    test_class_info(&lv, &cd_S3214C1);
    dp->~S3214C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3214C1(Test_S3214C1, "S3214C1", ABISELECT(584,448));

#else // __cplusplus

extern void _ZN7S3214C1C1Ev();
extern void _ZN7S3214C1D1Ev();
Name_Map name_map_S3214C1[] = {
  NSPAIR(_ZN7S3214C1C1Ev),
  NSPAIR(_ZN7S3214C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3214C3_nt;
extern VTBL_ENTRY _ZTI10S3214C3_nt[];
extern  VTBL_ENTRY _ZTV10S3214C3_nt[];
extern Class_Descriptor cd_S3214C2_nt;
extern VTBL_ENTRY _ZTI10S3214C2_nt[];
extern  VTBL_ENTRY _ZTV10S3214C2_nt[];
static Base_Class bases_S3214C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3214C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3214C1[];
extern void _ZN7S3214C1D1Ev();
extern void _ZN7S3214C1D0Ev();
extern void _ZN10S3214C3_nt2v4Ev();
extern void _ZN10S3214C3_nt2v5Ev();
extern void _ZN10S3214C3_nt2v6Ev();
extern void _ZN10S3214C3_nt2v7Ev();
extern void _ZN10S3214C3_nt2v8Ev();
extern void _ZN10S3214C3_nt2v9Ev();
extern void _ZN10S3214C3_nt3v10Ev();
extern void _ZN10S3214C3_nt3v11Ev();
extern void _ZN10S3214C3_nt3v12Ev();
extern void _ZN10S3214C3_nt3v13Ev();
extern void _ZN10S3214C3_nt3v14Ev();
extern void _ZN10S3214C3_nt3v15Ev();
extern void _ZN10S3214C3_nt3v16Ev();
extern void _ZN10S3214C3_nt3v17Ev();
extern void _ZN10S3214C3_nt3v18Ev();
extern void _ZN10S3214C3_nt3v19Ev();
extern void _ZN10S3214C3_nt3v20Ev();
extern void _ZN10S3214C3_nt3v21Ev();
extern void _ZN10S3214C3_nt3v22Ev();
extern void _ZN10S3214C3_nt3v23Ev();
extern void _ZN10S3214C3_nt3v24Ev();
extern void _ZN10S3214C3_nt3v25Ev();
extern void _ZN10S3214C3_nt3v26Ev();
extern void _ZN10S3214C3_nt3v27Ev();
extern void _ZN10S3214C3_nt3v28Ev();
extern void _ZN10S3214C3_nt3v29Ev();
extern void _ZN10S3214C3_nt3v30Ev();
extern void _ZN10S3214C3_nt3v31Ev();
extern void _ZN10S3214C3_nt3v32Ev();
extern void _ZN10S3214C3_nt3v33Ev();
extern void _ZN10S3214C3_nt3v34Ev();
extern void _ZN10S3214C3_nt3v35Ev();
extern void _ZN10S3214C3_nt3v36Ev();
extern void _ZN10S3214C3_nt3v37Ev();
extern void _ZN10S3214C3_nt3v38Ev();
extern void _ZN10S3214C3_nt3v39Ev();
extern void _ZN10S3214C3_nt3v40Ev();
extern void _ZN10S3214C3_nt3v41Ev();
extern void _ZN10S3214C3_nt3v42Ev();
extern void _ZN10S3214C3_nt3v43Ev();
extern void _ZN10S3214C3_nt3v44Ev();
extern void _ZN10S3214C3_nt3v45Ev();
extern void _ZN10S3214C3_nt3v46Ev();
extern void _ZN10S3214C3_nt3v47Ev();
extern void _ZN10S3214C3_nt3v48Ev();
extern void _ZN10S3214C3_nt3v49Ev();
extern void _ZN10S3214C3_nt3v50Ev();
extern void _ZN10S3214C3_nt3v51Ev();
extern void _ZN10S3214C3_nt3v52Ev();
extern void _ZN10S3214C3_nt3v53Ev();
extern void _ZN10S3214C3_nt3v54Ev();
extern void _ZN10S3214C3_nt3v55Ev();
extern void _ZN10S3214C3_nt3v56Ev();
extern void _ZN10S3214C3_nt3v57Ev();
extern void _ZN10S3214C3_nt3v58Ev();
extern void _ZN10S3214C3_nt3v59Ev();
extern void _ZN10S3214C3_nt3v60Ev();
extern void _ZN10S3214C3_nt3v61Ev();
extern void _ZN10S3214C3_nt3v62Ev();
extern void _ZN10S3214C3_nt3v63Ev();
extern void _ZN10S3214C3_nt3v64Ev();
extern void _ZN10S3214C3_nt3v65Ev();
extern void _ZN10S3214C3_nt3v66Ev();
extern void _ZN10S3214C3_nt3v67Ev();
extern void _ZN10S3214C2_nt3v68Ev();
extern void _ZN10S3214C2_nt3v69Ev();
extern void _ZN10S3214C2_nt3v70Ev();
extern void _ZN10S3214C2_nt3v71Ev();
extern void _ZN10S3214C2_nt3v72Ev();
extern void _ZN10S3214C2_nt3v73Ev();
extern void _ZN10S3214C2_nt3v74Ev();
extern void _ZN10S3214C2_nt3v75Ev();
extern void _ZN10S3214C2_nt3v76Ev();
extern void _ZN10S3214C2_nt3v77Ev();
extern void _ZN10S3214C2_nt3v78Ev();
extern void _ZN10S3214C2_nt3v79Ev();
extern void _ZN10S3214C2_nt3v80Ev();
extern void _ZN10S3214C2_nt3v81Ev();
extern void _ZN10S3214C2_nt3v82Ev();
extern void _ZN10S3214C2_nt3v83Ev();
extern void _ZN10S3214C2_nt3v84Ev();
extern void _ZN10S3214C2_nt3v85Ev();
extern void _ZN10S3214C2_nt3v86Ev();
extern void _ZN10S3214C2_nt3v87Ev();
extern void _ZN10S3214C2_nt3v88Ev();
extern void _ZN10S3214C2_nt3v89Ev();
extern void _ZN10S3214C2_nt3v90Ev();
extern void _ZN10S3214C2_nt3v91Ev();
extern void _ZN10S3214C2_nt3v92Ev();
extern void _ZN10S3214C2_nt3v93Ev();
extern void _ZN10S3214C2_nt3v94Ev();
extern void _ZN10S3214C2_nt3v95Ev();
extern void _ZN10S3214C2_nt3v96Ev();
extern void _ZN10S3214C2_nt3v97Ev();
extern void _ZN10S3214C2_nt3v98Ev();
extern void _ZN10S3214C2_nt3v99Ev();
extern void _ZN10S3214C2_nt4v100Ev();
extern void _ZN10S3214C2_nt4v101Ev();
extern void _ZN10S3214C2_nt4v102Ev();
extern void _ZN10S3214C2_nt4v103Ev();
extern void _ZN10S3214C2_nt4v104Ev();
extern void _ZN10S3214C2_nt4v105Ev();
extern void _ZN10S3214C2_nt4v106Ev();
extern void _ZN10S3214C2_nt4v107Ev();
extern void _ZN10S3214C2_nt4v108Ev();
extern void _ZN10S3214C2_nt4v109Ev();
extern void _ZN10S3214C2_nt4v110Ev();
extern void _ZN10S3214C2_nt4v111Ev();
extern void _ZN10S3214C2_nt4v112Ev();
extern void _ZN10S3214C2_nt4v113Ev();
extern void _ZN10S3214C2_nt4v114Ev();
extern void _ZN10S3214C2_nt4v115Ev();
extern void _ZN10S3214C2_nt4v116Ev();
extern void _ZN10S3214C2_nt4v117Ev();
extern void _ZN10S3214C2_nt4v118Ev();
extern void _ZN10S3214C2_nt4v119Ev();
extern void _ZN10S3214C2_nt4v120Ev();
extern void _ZN10S3214C2_nt4v121Ev();
extern void _ZN10S3214C2_nt4v122Ev();
extern void _ZN10S3214C2_nt4v123Ev();
extern void _ZN10S3214C2_nt4v124Ev();
extern void _ZN10S3214C2_nt4v125Ev();
extern void _ZN10S3214C2_nt4v126Ev();
extern void _ZN10S3214C2_nt4v127Ev();
extern void _ZN10S3214C2_nt4v128Ev();
extern void _ZN10S3214C2_nt4v129Ev();
extern void _ZN10S3214C2_nt4v130Ev();
extern void _ZN10S3214C2_nt4v131Ev();
extern void _ZN10S3214C2_nt4v132Ev();
extern void _ZN10S3214C2_nt4v133Ev();
extern void _ZN10S3214C2_nt4v134Ev();
extern void _ZN10S3214C2_nt4v135Ev();
extern void _ZN10S3214C2_nt4v136Ev();
extern void _ZN10S3214C2_nt4v137Ev();
extern void _ZN10S3214C2_nt4v138Ev();
extern void _ZN10S3214C2_nt4v139Ev();
extern void _ZN10S3214C2_nt4v140Ev();
extern void _ZN10S3214C2_nt4v141Ev();
extern void _ZN10S3214C2_nt4v142Ev();
extern void _ZN10S3214C2_nt4v143Ev();
extern void _ZN10S3214C2_nt4v144Ev();
extern void _ZN10S3214C2_nt4v145Ev();
extern void _ZN10S3214C2_nt4v146Ev();
extern void _ZN10S3214C2_nt4v147Ev();
extern void _ZN10S3214C2_nt4v148Ev();
extern void _ZN10S3214C2_nt4v149Ev();
extern void _ZN10S3214C2_nt4v150Ev();
extern void _ZN10S3214C2_nt4v151Ev();
extern void _ZN10S3214C2_nt4v152Ev();
extern void _ZN10S3214C2_nt4v153Ev();
extern void _ZN10S3214C2_nt4v154Ev();
extern void _ZN10S3214C2_nt4v155Ev();
extern void _ZN10S3214C2_nt4v156Ev();
extern void _ZN10S3214C2_nt4v157Ev();
extern void _ZN10S3214C2_nt4v158Ev();
extern void _ZN10S3214C2_nt4v159Ev();
extern void _ZN10S3214C2_nt4v160Ev();
extern void _ZN10S3214C2_nt4v161Ev();
extern void _ZN10S3214C2_nt4v162Ev();
extern void _ZN10S3214C2_nt4v163Ev();
extern void _ZN10S3214C2_nt4v164Ev();
extern void _ZN10S3214C2_nt4v165Ev();
extern void _ZN10S3214C2_nt4v166Ev();
extern void _ZN10S3214C2_nt4v167Ev();
extern void _ZN10S3214C2_nt4v168Ev();
extern void _ZN10S3214C2_nt4v169Ev();
extern void _ZN10S3214C2_nt4v170Ev();
extern void _ZN10S3214C2_nt4v171Ev();
extern void _ZN10S3214C2_nt4v172Ev();
extern void _ZN10S3214C2_nt4v173Ev();
extern void _ZN10S3214C2_nt4v174Ev();
extern void _ZN10S3214C2_nt4v175Ev();
extern void _ZN10S3214C2_nt4v176Ev();
extern void _ZN10S3214C2_nt4v177Ev();
extern void _ZN10S3214C2_nt4v178Ev();
extern void _ZN10S3214C2_nt4v179Ev();
extern void _ZN10S3214C2_nt4v180Ev();
extern void _ZN10S3214C2_nt4v181Ev();
extern void _ZN10S3214C2_nt4v182Ev();
extern void _ZN10S3214C2_nt4v183Ev();
extern void _ZN10S3214C2_nt4v184Ev();
extern void _ZN10S3214C2_nt4v185Ev();
extern void _ZN10S3214C2_nt4v186Ev();
extern void _ZN10S3214C2_nt4v187Ev();
extern void _ZN10S3214C2_nt4v188Ev();
extern void _ZN10S3214C2_nt4v189Ev();
extern void _ZN10S3214C2_nt4v190Ev();
extern void _ZN10S3214C2_nt4v191Ev();
extern void _ZN10S3214C2_nt4v192Ev();
extern void _ZN10S3214C2_nt4v193Ev();
extern void _ZN10S3214C2_nt4v194Ev();
extern void _ZN10S3214C2_nt4v195Ev();
extern void _ZN10S3214C2_nt4v196Ev();
extern void _ZN10S3214C2_nt4v197Ev();
extern void _ZN10S3214C2_nt4v198Ev();
extern void _ZN10S3214C2_nt4v199Ev();
extern void _ZN10S3214C2_nt4v200Ev();
extern void _ZN10S3214C2_nt4v201Ev();
extern void _ZN10S3214C2_nt4v202Ev();
extern void _ZN10S3214C2_nt4v203Ev();
extern void _ZN10S3214C2_nt4v204Ev();
extern void _ZN10S3214C2_nt4v205Ev();
extern void _ZN10S3214C2_nt4v206Ev();
extern void _ZN10S3214C2_nt4v207Ev();
extern void _ZN10S3214C2_nt4v208Ev();
extern void _ZN10S3214C2_nt4v209Ev();
extern void _ZN10S3214C2_nt4v210Ev();
extern void _ZN7S3214C12v1Ev();
extern void _ZN7S3214C12v2Ev();
extern void _ZN7S3214C12v3Ev();
static  VTBL_ENTRY vtc_S3214C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3214C1[0]),
  (VTBL_ENTRY)&_ZN7S3214C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3214C1D0Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S3214C3_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S3214C2_nt4v210Ev,
  (VTBL_ENTRY)&_ZN7S3214C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3214C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3214C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S3214C1[];
extern  VTBL_ENTRY _ZTV7S3214C1[];
Class_Descriptor cd_S3214C1 = {  "S3214C1", // class name
  bases_S3214C1, 2,
  &(vtc_S3214C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(584,448), // object size
  NSPAIRA(_ZTI7S3214C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3214C1),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  S4227C6_nt  {
  void  mf4227c6(); // _ZN10S4227C6_nt8mf4227c6Ev
};
//SIG(-1 S4227C6_nt) C1{ m}


void  S4227C6_nt ::mf4227c6(){}

//skip512 S4227C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C5_nt  {
  void *s4227c5f0;
  int s4227c5f1;
  ::S4227C6_nt s4227c5f2;
  ::S4227C6_nt s4227c5f3;
  void  mf4227c5(); // _ZN10S4227C5_nt8mf4227c5Ev
};
//SIG(-1 S4227C5_nt) C1{ m Fp Fi FC2{ m} FC2}


void  S4227C5_nt ::mf4227c5(){}

//skip512 S4227C5_nt

#else // __cplusplus

Class_Descriptor cd_S4227C5_nt = {  "S4227C5_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  S4227C4_nt  : S4227C5_nt {
};
//SIG(-1 S4227C4_nt) C1{ BC2{ m Fp Fi FC3{ m} FC3}}



//skip512 S4227C4_nt

#else // __cplusplus

extern Class_Descriptor cd_S4227C5_nt;
static Base_Class bases_S4227C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S4227C3_nt  {
  void *s4227c3f0;
  int s4227c3f1;
  ::S4227C4_nt s4227c3f2;
  ::S4227C4_nt s4227c3f3;
  int s4227c3f4;
  virtual  ~S4227C3_nt(); // _ZN10S4227C3_ntD1Ev
  virtual void  v11(); // _ZN10S4227C3_nt3v11Ev
  virtual void  v12(); // _ZN10S4227C3_nt3v12Ev
  virtual void  v13(); // _ZN10S4227C3_nt3v13Ev
  virtual void  v14(); // _ZN10S4227C3_nt3v14Ev
  virtual void  v15(); // _ZN10S4227C3_nt3v15Ev
  virtual void  v16(); // _ZN10S4227C3_nt3v16Ev
  virtual void  v17(); // _ZN10S4227C3_nt3v17Ev
  virtual void  v18(); // _ZN10S4227C3_nt3v18Ev
  virtual void  v19(); // _ZN10S4227C3_nt3v19Ev
  virtual void  v20(); // _ZN10S4227C3_nt3v20Ev
  virtual void  v21(); // _ZN10S4227C3_nt3v21Ev
  virtual void  v22(); // _ZN10S4227C3_nt3v22Ev
  virtual void  v23(); // _ZN10S4227C3_nt3v23Ev
  virtual void  v24(); // _ZN10S4227C3_nt3v24Ev
  virtual void  v25(); // _ZN10S4227C3_nt3v25Ev
  virtual void  v26(); // _ZN10S4227C3_nt3v26Ev
  virtual void  v27(); // _ZN10S4227C3_nt3v27Ev
  virtual void  v28(); // _ZN10S4227C3_nt3v28Ev
  virtual void  v29(); // _ZN10S4227C3_nt3v29Ev
  virtual void  v30(); // _ZN10S4227C3_nt3v30Ev
  virtual void  v31(); // _ZN10S4227C3_nt3v31Ev
  virtual void  v32(); // _ZN10S4227C3_nt3v32Ev
  virtual void  v33(); // _ZN10S4227C3_nt3v33Ev
  S4227C3_nt(); // tgen
};
//SIG(-1 S4227C3_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp Fi FC2{ BC3{ m Fp Fi FC4{ m} FC4}} FC2 Fi}


 S4227C3_nt ::~S4227C3_nt(){ note_dtor("S4227C3_nt", this);}
void  S4227C3_nt ::v11(){vfunc_called(this, "_ZN10S4227C3_nt3v11Ev");}
void  S4227C3_nt ::v12(){vfunc_called(this, "_ZN10S4227C3_nt3v12Ev");}
void  S4227C3_nt ::v13(){vfunc_called(this, "_ZN10S4227C3_nt3v13Ev");}
void  S4227C3_nt ::v14(){vfunc_called(this, "_ZN10S4227C3_nt3v14Ev");}
void  S4227C3_nt ::v15(){vfunc_called(this, "_ZN10S4227C3_nt3v15Ev");}
void  S4227C3_nt ::v16(){vfunc_called(this, "_ZN10S4227C3_nt3v16Ev");}
void  S4227C3_nt ::v17(){vfunc_called(this, "_ZN10S4227C3_nt3v17Ev");}
void  S4227C3_nt ::v18(){vfunc_called(this, "_ZN10S4227C3_nt3v18Ev");}
void  S4227C3_nt ::v19(){vfunc_called(this, "_ZN10S4227C3_nt3v19Ev");}
void  S4227C3_nt ::v20(){vfunc_called(this, "_ZN10S4227C3_nt3v20Ev");}
void  S4227C3_nt ::v21(){vfunc_called(this, "_ZN10S4227C3_nt3v21Ev");}
void  S4227C3_nt ::v22(){vfunc_called(this, "_ZN10S4227C3_nt3v22Ev");}
void  S4227C3_nt ::v23(){vfunc_called(this, "_ZN10S4227C3_nt3v23Ev");}
void  S4227C3_nt ::v24(){vfunc_called(this, "_ZN10S4227C3_nt3v24Ev");}
void  S4227C3_nt ::v25(){vfunc_called(this, "_ZN10S4227C3_nt3v25Ev");}
void  S4227C3_nt ::v26(){vfunc_called(this, "_ZN10S4227C3_nt3v26Ev");}
void  S4227C3_nt ::v27(){vfunc_called(this, "_ZN10S4227C3_nt3v27Ev");}
void  S4227C3_nt ::v28(){vfunc_called(this, "_ZN10S4227C3_nt3v28Ev");}
void  S4227C3_nt ::v29(){vfunc_called(this, "_ZN10S4227C3_nt3v29Ev");}
void  S4227C3_nt ::v30(){vfunc_called(this, "_ZN10S4227C3_nt3v30Ev");}
void  S4227C3_nt ::v31(){vfunc_called(this, "_ZN10S4227C3_nt3v31Ev");}
void  S4227C3_nt ::v32(){vfunc_called(this, "_ZN10S4227C3_nt3v32Ev");}
void  S4227C3_nt ::v33(){vfunc_called(this, "_ZN10S4227C3_nt3v33Ev");}
S4227C3_nt ::S4227C3_nt(){ note_ctor("S4227C3_nt", this);} // tgen

//skip512 S4227C3_nt

#else // __cplusplus

extern void _ZN10S4227C3_ntC1Ev();
extern void _ZN10S4227C3_ntD1Ev();
Name_Map name_map_S4227C3_nt[] = {
  NSPAIR(_ZN10S4227C3_ntC1Ev),
  NSPAIR(_ZN10S4227C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4227C3_nt[];
extern void _ZN10S4227C3_ntD1Ev();
extern void _ZN10S4227C3_ntD0Ev();
extern void _ZN10S4227C3_nt3v11Ev();
extern void _ZN10S4227C3_nt3v12Ev();
extern void _ZN10S4227C3_nt3v13Ev();
extern void _ZN10S4227C3_nt3v14Ev();
extern void _ZN10S4227C3_nt3v15Ev();
extern void _ZN10S4227C3_nt3v16Ev();
extern void _ZN10S4227C3_nt3v17Ev();
extern void _ZN10S4227C3_nt3v18Ev();
extern void _ZN10S4227C3_nt3v19Ev();
extern void _ZN10S4227C3_nt3v20Ev();
extern void _ZN10S4227C3_nt3v21Ev();
extern void _ZN10S4227C3_nt3v22Ev();
extern void _ZN10S4227C3_nt3v23Ev();
extern void _ZN10S4227C3_nt3v24Ev();
extern void _ZN10S4227C3_nt3v25Ev();
extern void _ZN10S4227C3_nt3v26Ev();
extern void _ZN10S4227C3_nt3v27Ev();
extern void _ZN10S4227C3_nt3v28Ev();
extern void _ZN10S4227C3_nt3v29Ev();
extern void _ZN10S4227C3_nt3v30Ev();
extern void _ZN10S4227C3_nt3v31Ev();
extern void _ZN10S4227C3_nt3v32Ev();
extern void _ZN10S4227C3_nt3v33Ev();
static  VTBL_ENTRY vtc_S4227C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4227C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4227C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v33Ev,
};
extern VTBL_ENTRY _ZTI10S4227C3_nt[];
VTBL_ENTRY *P__ZTI10S4227C3_nt = _ZTI10S4227C3_nt; 
extern  VTBL_ENTRY _ZTV10S4227C3_nt[];
Class_Descriptor cd_S4227C3_nt = {  "S4227C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4227C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI10S4227C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4227C3_nt),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C13_nt  {
  __tsi64 s4227c13f0[2];
  void  mf4227c13(); // _ZN11S4227C13_nt9mf4227c13Ev
};
//SIG(-1 S4227C13_nt) C1{ m FL[2]}


void  S4227C13_nt ::mf4227c13(){}

//skip512 S4227C13_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C12_nt  {
  ::S4227C13_nt s4227c12f0;
  void  mf4227c12(); // _ZN11S4227C12_nt9mf4227c12Ev
};
//SIG(-1 S4227C12_nt) C1{ m FC2{ m FL[2]}}


void  S4227C12_nt ::mf4227c12(){}

//skip512 S4227C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C16_nt  {
  ::S4227C12_nt s4227c16f0;
  void  mf4227c16(); // _ZN11S4227C16_nt9mf4227c16Ev
};
//SIG(-1 S4227C16_nt) C1{ m FC2{ m FC3{ m FL[2]}}}


void  S4227C16_nt ::mf4227c16(){}

//skip512 S4227C16_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C17_nt  {
  ::S4227C12_nt s4227c17f0;
  ::S4227C12_nt s4227c17f1;
  ::S4227C12_nt s4227c17f2;
  ::S4227C12_nt s4227c17f3;
  void  mf4227c17(); // _ZN11S4227C17_nt9mf4227c17Ev
};
//SIG(-1 S4227C17_nt) C1{ m FC2{ m FC3{ m FL[2]}} FC2 FC2 FC2}


void  S4227C17_nt ::mf4227c17(){}

//skip512 S4227C17_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C20  {
  void  mf4227c20(); // _ZN8S4227C209mf4227c20Ev
};
//SIG(-1 S4227C20) C1{ m}


void  S4227C20 ::mf4227c20(){}

static void Test_S4227C20()
{
  {
    init_simple_test("S4227C20");
    S4227C20 lv;
    check2(sizeof(lv), 1, "sizeof(S4227C20)");
    check2(__alignof__(lv), 1, "__alignof__(S4227C20)");
  }
}
static Arrange_To_Call_Me vS4227C20(Test_S4227C20, "S4227C20", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4227C20[];
VTBL_ENTRY *P__ZTI8S4227C20 = _ZTI8S4227C20; 
Class_Descriptor cd_S4227C20 = {  "S4227C20", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4227C20),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  S4227C19_nt  {
  void *s4227c19f0;
  int s4227c19f1;
  ::S4227C20 s4227c19f2;
  void  mf4227c19(); // _ZN11S4227C19_nt9mf4227c19Ev
};
//SIG(-1 S4227C19_nt) C1{ m Fp Fi FC2{ m}}


void  S4227C19_nt ::mf4227c19(){}

//skip512 S4227C19_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C18_nt  {
  ::S4227C19_nt s4227c18f0;
  int s4227c18f1;
  void  mf4227c18(); // _ZN11S4227C18_nt9mf4227c18Ev
};
//SIG(-1 S4227C18_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S4227C18_nt ::mf4227c18(){}

//skip512 S4227C18_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C23  {
  void  mf4227c23(); // _ZN8S4227C239mf4227c23Ev
};
//SIG(-1 S4227C23) C1{ m}


void  S4227C23 ::mf4227c23(){}

static void Test_S4227C23()
{
  {
    init_simple_test("S4227C23");
    S4227C23 lv;
    check2(sizeof(lv), 1, "sizeof(S4227C23)");
    check2(__alignof__(lv), 1, "__alignof__(S4227C23)");
  }
}
static Arrange_To_Call_Me vS4227C23(Test_S4227C23, "S4227C23", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4227C23[];
VTBL_ENTRY *P__ZTI8S4227C23 = _ZTI8S4227C23; 
Class_Descriptor cd_S4227C23 = {  "S4227C23", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4227C23),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  S4227C21  {
  void *s4227c21f0;
  int s4227c21f1;
  ::S4227C20 s4227c21f2;
  ::S4227C23 s4227c21f3;
  void  mf4227c21(); // _ZN8S4227C219mf4227c21Ev
};
//SIG(-1 S4227C21) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S4227C21 ::mf4227c21(){}

static void Test_S4227C21()
{
  {
    init_simple_test("S4227C21");
    S4227C21 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4227C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4227C21)");
    check_field_offset(lv, s4227c21f0, 0, "S4227C21.s4227c21f0");
    check_field_offset(lv, s4227c21f1, ABISELECT(8,4), "S4227C21.s4227c21f1");
    check_field_offset(lv, s4227c21f2, ABISELECT(12,8), "S4227C21.s4227c21f2");
    check_field_offset(lv, s4227c21f3, ABISELECT(13,9), "S4227C21.s4227c21f3");
  }
}
static Arrange_To_Call_Me vS4227C21(Test_S4227C21, "S4227C21", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C27  {
  void  mf4227c27(); // _ZN8S4227C279mf4227c27Ev
};
//SIG(-1 S4227C27) C1{ m}


void  S4227C27 ::mf4227c27(){}

static void Test_S4227C27()
{
  {
    init_simple_test("S4227C27");
    S4227C27 lv;
    check2(sizeof(lv), 1, "sizeof(S4227C27)");
    check2(__alignof__(lv), 1, "__alignof__(S4227C27)");
  }
}
static Arrange_To_Call_Me vS4227C27(Test_S4227C27, "S4227C27", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4227C27[];
VTBL_ENTRY *P__ZTI8S4227C27 = _ZTI8S4227C27; 
Class_Descriptor cd_S4227C27 = {  "S4227C27", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4227C27),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  S4227C25  {
  void *s4227c25f0;
  int s4227c25f1;
  ::S4227C23 s4227c25f2;
  ::S4227C27 s4227c25f3;
  void  mf4227c25(); // _ZN8S4227C259mf4227c25Ev
};
//SIG(-1 S4227C25) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S4227C25 ::mf4227c25(){}

static void Test_S4227C25()
{
  {
    init_simple_test("S4227C25");
    S4227C25 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4227C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4227C25)");
    check_field_offset(lv, s4227c25f0, 0, "S4227C25.s4227c25f0");
    check_field_offset(lv, s4227c25f1, ABISELECT(8,4), "S4227C25.s4227c25f1");
    check_field_offset(lv, s4227c25f2, ABISELECT(12,8), "S4227C25.s4227c25f2");
    check_field_offset(lv, s4227c25f3, ABISELECT(13,9), "S4227C25.s4227c25f3");
  }
}
static Arrange_To_Call_Me vS4227C25(Test_S4227C25, "S4227C25", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S4227C24()
{
  extern Class_Descriptor cd_S4227C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S4227C24, buf);
    S4227C24 &lv = *(new (buf) S4227C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S4227C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4227C24)");
    check_base_class_offset(lv, (S4227C25*), 0, "S4227C24");
    test_class_info(&lv, &cd_S4227C24);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4227C24(Test_S4227C24, "S4227C24", ABISELECT(16,12));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S4227C28_nt  {
  void *s4227c28f0;
  int s4227c28f1[2];
  ::S4227C27 s4227c28f2;
  void  mf4227c28(); // _ZN11S4227C28_nt9mf4227c28Ev
};
//SIG(-1 S4227C28_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S4227C28_nt ::mf4227c28(){}

//skip512 S4227C28_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C37  {
  void  mf4227c37(); // _ZN8S4227C379mf4227c37Ev
};
//SIG(-1 S4227C37) C1{ m}


void  S4227C37 ::mf4227c37(){}

static void Test_S4227C37()
{
  {
    init_simple_test("S4227C37");
    S4227C37 lv;
    check2(sizeof(lv), 1, "sizeof(S4227C37)");
    check2(__alignof__(lv), 1, "__alignof__(S4227C37)");
  }
}
static Arrange_To_Call_Me vS4227C37(Test_S4227C37, "S4227C37", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S4227C37[];
VTBL_ENTRY *P__ZTI8S4227C37 = _ZTI8S4227C37; 
Class_Descriptor cd_S4227C37 = {  "S4227C37", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S4227C37),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  S4227C36  {
  void *s4227c36f0;
  int s4227c36f1[2];
  ::S4227C37 s4227c36f2;
  void  mf4227c36(); // _ZN8S4227C369mf4227c36Ev
};
//SIG(-1 S4227C36) C1{ m Fp Fi[2] FC2{ m}}


void  S4227C36 ::mf4227c36(){}

static void Test_S4227C36()
{
  {
    init_simple_test("S4227C36");
    S4227C36 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S4227C36)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4227C36)");
    check_field_offset(lv, s4227c36f0, 0, "S4227C36.s4227c36f0");
    check_field_offset(lv, s4227c36f1, ABISELECT(8,4), "S4227C36.s4227c36f1");
    check_field_offset(lv, s4227c36f2, ABISELECT(16,12), "S4227C36.s4227c36f2");
  }
}
static Arrange_To_Call_Me vS4227C36(Test_S4227C36, "S4227C36", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C2_nt  : S4227C3_nt {
  ::S4227C12_nt s4227c2f0;
  ::S4227C12_nt s4227c2f1;
  ::S4227C12_nt s4227c2f2;
  ::S4227C12_nt s4227c2f3;
  ::S4227C16_nt s4227c2f4;
  ::S4227C17_nt s4227c2f5;
  ::S4227C17_nt s4227c2f6;
  ::S4227C12_nt s4227c2f7;
  ::S4227C12_nt s4227c2f8;
  ::S4227C12_nt s4227c2f9;
  void *s4227c2f10;
  ::S4227C16_nt s4227c2f11;
  ::S4227C18_nt s4227c2f12;
  int s4227c2f13;
  void *s4227c2f14[7];
  ::S4227C21 s4227c2f15;
  int s4227c2f16:8;
  int s4227c2f17:8;
  int s4227c2f18:16;
  int s4227c2f19:16;
  int s4227c2f20:8;
  int s4227c2f21:8;
  int s4227c2f22:8;
  int s4227c2f23:32;
  int s4227c2f24:8;
  int s4227c2f25:4;
  int s4227c2f26:4;
  int s4227c2f27:4;
  int s4227c2f28:4;
  int s4227c2f29:4;
  int s4227c2f30:4;
  int s4227c2f31:4;
  int s4227c2f32:4;
  int s4227c2f33:4;
  int s4227c2f34:4;
  unsigned char s4227c2f35:1;
  unsigned char s4227c2f36:1;
  unsigned char s4227c2f37:1;
  unsigned char s4227c2f38:1;
  unsigned char s4227c2f39:1;
  unsigned char s4227c2f40:1;
  unsigned char s4227c2f41:1;
  unsigned char s4227c2f42:1;
  unsigned char s4227c2f43:1;
  unsigned char s4227c2f44:1;
  unsigned char s4227c2f45:1;
  unsigned char s4227c2f46:1;
  unsigned char s4227c2f47:1;
  unsigned char s4227c2f48:1;
  unsigned char s4227c2f49:1;
  unsigned char s4227c2f50:1;
  unsigned char s4227c2f51:1;
  unsigned char s4227c2f52:1;
  unsigned char s4227c2f53:1;
  unsigned char s4227c2f54:1;
  unsigned char s4227c2f55:1;
  unsigned char s4227c2f56:1;
  unsigned char s4227c2f57:1;
  unsigned char s4227c2f58:1;
  unsigned char s4227c2f59:1;
  unsigned char s4227c2f60:1;
  unsigned char s4227c2f61:1;
  unsigned char s4227c2f62:1;
  unsigned char s4227c2f63:1;
  unsigned char s4227c2f64:1;
  unsigned char s4227c2f65:1;
  unsigned char s4227c2f66:1;
  unsigned char s4227c2f67:1;
  unsigned char s4227c2f68:1;
  unsigned char s4227c2f69:1;
  unsigned char s4227c2f70:1;
  unsigned char s4227c2f71:1;
  unsigned char s4227c2f72:1;
  unsigned char s4227c2f73:1;
  unsigned char s4227c2f74:1;
  unsigned char s4227c2f75:1;
  int s4227c2f76[7];
  void *s4227c2f77[6];
  int s4227c2f78:8;
  int s4227c2f79:8;
  int s4227c2f80:8;
  int s4227c2f81:8;
  int s4227c2f82:8;
  int s4227c2f83:8;
  ::S4227C24 s4227c2f84;
  void *s4227c2f85[4];
  int s4227c2f86:8;
  int s4227c2f87:8;
  int s4227c2f88:8;
  int s4227c2f89:8;
  int s4227c2f90:8;
  int s4227c2f91:16;
  int s4227c2f92:16;
  int s4227c2f93:16;
  int s4227c2f94:4;
  int s4227c2f95:4;
  int s4227c2f96:4;
  int s4227c2f97:4;
  int s4227c2f98:4;
  int s4227c2f99:4;
  int s4227c2f100:4;
  int s4227c2f101:4;
  int s4227c2f102:4;
  int s4227c2f103:4;
  int s4227c2f104:4;
  int s4227c2f105:4;
  int s4227c2f106:8;
  int s4227c2f107:8;
  int s4227c2f108:8;
  void *s4227c2f109[7];
  ::S4227C28_nt s4227c2f110;
  void *s4227c2f111[2];
  int s4227c2f112:16;
  int s4227c2f113:16;
  ::S4227C24 s4227c2f114;
  ::S4227C28_nt s4227c2f115;
  ::S4227C36 s4227c2f116;
  void *s4227c2f117[2];
  int s4227c2f118:24;
  int s4227c2f119:8;
  void *s4227c2f120;
  virtual  ~S4227C2_nt(); // _ZN10S4227C2_ntD1Ev
  virtual void  v34(); // _ZN10S4227C2_nt3v34Ev
  virtual void  v35(); // _ZN10S4227C2_nt3v35Ev
  virtual void  v36(); // _ZN10S4227C2_nt3v36Ev
  virtual void  v37(); // _ZN10S4227C2_nt3v37Ev
  virtual void  v38(); // _ZN10S4227C2_nt3v38Ev
  virtual void  v39(); // _ZN10S4227C2_nt3v39Ev
  virtual void  v40(); // _ZN10S4227C2_nt3v40Ev
  virtual void  v41(); // _ZN10S4227C2_nt3v41Ev
  virtual void  v42(); // _ZN10S4227C2_nt3v42Ev
  virtual void  v43(); // _ZN10S4227C2_nt3v43Ev
  virtual void  v44(); // _ZN10S4227C2_nt3v44Ev
  virtual void  v45(); // _ZN10S4227C2_nt3v45Ev
  virtual void  v46(); // _ZN10S4227C2_nt3v46Ev
  virtual void  v47(); // _ZN10S4227C2_nt3v47Ev
  virtual void  v48(); // _ZN10S4227C2_nt3v48Ev
  virtual void  v49(); // _ZN10S4227C2_nt3v49Ev
  virtual void  v50(); // _ZN10S4227C2_nt3v50Ev
  virtual void  v51(); // _ZN10S4227C2_nt3v51Ev
  virtual void  v52(); // _ZN10S4227C2_nt3v52Ev
  virtual void  v53(); // _ZN10S4227C2_nt3v53Ev
  virtual void  v54(); // _ZN10S4227C2_nt3v54Ev
  virtual void  v55(); // _ZN10S4227C2_nt3v55Ev
  virtual void  v56(); // _ZN10S4227C2_nt3v56Ev
  virtual void  v57(); // _ZN10S4227C2_nt3v57Ev
  virtual void  v58(); // _ZN10S4227C2_nt3v58Ev
  virtual void  v59(); // _ZN10S4227C2_nt3v59Ev
  virtual void  v60(); // _ZN10S4227C2_nt3v60Ev
  virtual void  v61(); // _ZN10S4227C2_nt3v61Ev
  virtual void  v62(); // _ZN10S4227C2_nt3v62Ev
  virtual void  v63(); // _ZN10S4227C2_nt3v63Ev
  virtual void  v64(); // _ZN10S4227C2_nt3v64Ev
  virtual void  v65(); // _ZN10S4227C2_nt3v65Ev
  virtual void  v66(); // _ZN10S4227C2_nt3v66Ev
  virtual void  v67(); // _ZN10S4227C2_nt3v67Ev
  virtual void  v68(); // _ZN10S4227C2_nt3v68Ev
  virtual void  v69(); // _ZN10S4227C2_nt3v69Ev
  virtual void  v70(); // _ZN10S4227C2_nt3v70Ev
  virtual void  v71(); // _ZN10S4227C2_nt3v71Ev
  virtual void  v72(); // _ZN10S4227C2_nt3v72Ev
  virtual void  v73(); // _ZN10S4227C2_nt3v73Ev
  virtual void  v74(); // _ZN10S4227C2_nt3v74Ev
  virtual void  v75(); // _ZN10S4227C2_nt3v75Ev
  virtual void  v76(); // _ZN10S4227C2_nt3v76Ev
  virtual void  v77(); // _ZN10S4227C2_nt3v77Ev
  virtual void  v78(); // _ZN10S4227C2_nt3v78Ev
  virtual void  v79(); // _ZN10S4227C2_nt3v79Ev
  virtual void  v80(); // _ZN10S4227C2_nt3v80Ev
  virtual void  v81(); // _ZN10S4227C2_nt3v81Ev
  virtual void  v82(); // _ZN10S4227C2_nt3v82Ev
  virtual void  v83(); // _ZN10S4227C2_nt3v83Ev
  virtual void  v84(); // _ZN10S4227C2_nt3v84Ev
  virtual void  v85(); // _ZN10S4227C2_nt3v85Ev
  virtual void  v86(); // _ZN10S4227C2_nt3v86Ev
  virtual void  v87(); // _ZN10S4227C2_nt3v87Ev
  virtual void  v88(); // _ZN10S4227C2_nt3v88Ev
  virtual void  v89(); // _ZN10S4227C2_nt3v89Ev
  virtual void  v90(); // _ZN10S4227C2_nt3v90Ev
  virtual void  v91(); // _ZN10S4227C2_nt3v91Ev
  virtual void  v92(); // _ZN10S4227C2_nt3v92Ev
  virtual void  v93(); // _ZN10S4227C2_nt3v93Ev
  virtual void  v94(); // _ZN10S4227C2_nt3v94Ev
  virtual void  v95(); // _ZN10S4227C2_nt3v95Ev
  virtual void  v96(); // _ZN10S4227C2_nt3v96Ev
  virtual void  v97(); // _ZN10S4227C2_nt3v97Ev
  virtual void  v98(); // _ZN10S4227C2_nt3v98Ev
  virtual void  v99(); // _ZN10S4227C2_nt3v99Ev
  virtual void  v100(); // _ZN10S4227C2_nt4v100Ev
  virtual void  v101(); // _ZN10S4227C2_nt4v101Ev
  virtual void  v102(); // _ZN10S4227C2_nt4v102Ev
  virtual void  v103(); // _ZN10S4227C2_nt4v103Ev
  virtual void  v104(); // _ZN10S4227C2_nt4v104Ev
  virtual void  v105(); // _ZN10S4227C2_nt4v105Ev
  virtual void  v106(); // _ZN10S4227C2_nt4v106Ev
  virtual void  v107(); // _ZN10S4227C2_nt4v107Ev
  virtual void  v108(); // _ZN10S4227C2_nt4v108Ev
  virtual void  v109(); // _ZN10S4227C2_nt4v109Ev
  virtual void  v110(); // _ZN10S4227C2_nt4v110Ev
  virtual void  v111(); // _ZN10S4227C2_nt4v111Ev
  S4227C2_nt(); // tgen
};
//SIG(-1 S4227C2_nt) C1{ BC2{ vd v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 Fp Fi FC3{ BC4{ m Fp Fi FC5{ m} FC5}} FC3 Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 FC6{ m FC7{ m FL[2]}} FC6 FC6 FC6 FC8{ m FC6} FC9{ m FC6 FC6 FC6 FC6} FC9 FC6 FC6 FC6 Fp FC8 FC10{ m FC11{ m Fp Fi FC12{ m}} Fi} Fi Fp[7] FC13{ m Fp Fi FC12 FC14{ m}} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC15{ BC16{ m Fp Fi FC14 FC17{ m}}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC18{ m Fp Fi[2] FC17} Fp[2] Fi:16 Fi:16 FC15 FC18 FC19{ m Fp Fi[2] FC20{ m}} Fp[2] Fi:24 Fi:8 Fp}


 S4227C2_nt ::~S4227C2_nt(){ note_dtor("S4227C2_nt", this);}
void  S4227C2_nt ::v34(){vfunc_called(this, "_ZN10S4227C2_nt3v34Ev");}
void  S4227C2_nt ::v35(){vfunc_called(this, "_ZN10S4227C2_nt3v35Ev");}
void  S4227C2_nt ::v36(){vfunc_called(this, "_ZN10S4227C2_nt3v36Ev");}
void  S4227C2_nt ::v37(){vfunc_called(this, "_ZN10S4227C2_nt3v37Ev");}
void  S4227C2_nt ::v38(){vfunc_called(this, "_ZN10S4227C2_nt3v38Ev");}
void  S4227C2_nt ::v39(){vfunc_called(this, "_ZN10S4227C2_nt3v39Ev");}
void  S4227C2_nt ::v40(){vfunc_called(this, "_ZN10S4227C2_nt3v40Ev");}
void  S4227C2_nt ::v41(){vfunc_called(this, "_ZN10S4227C2_nt3v41Ev");}
void  S4227C2_nt ::v42(){vfunc_called(this, "_ZN10S4227C2_nt3v42Ev");}
void  S4227C2_nt ::v43(){vfunc_called(this, "_ZN10S4227C2_nt3v43Ev");}
void  S4227C2_nt ::v44(){vfunc_called(this, "_ZN10S4227C2_nt3v44Ev");}
void  S4227C2_nt ::v45(){vfunc_called(this, "_ZN10S4227C2_nt3v45Ev");}
void  S4227C2_nt ::v46(){vfunc_called(this, "_ZN10S4227C2_nt3v46Ev");}
void  S4227C2_nt ::v47(){vfunc_called(this, "_ZN10S4227C2_nt3v47Ev");}
void  S4227C2_nt ::v48(){vfunc_called(this, "_ZN10S4227C2_nt3v48Ev");}
void  S4227C2_nt ::v49(){vfunc_called(this, "_ZN10S4227C2_nt3v49Ev");}
void  S4227C2_nt ::v50(){vfunc_called(this, "_ZN10S4227C2_nt3v50Ev");}
void  S4227C2_nt ::v51(){vfunc_called(this, "_ZN10S4227C2_nt3v51Ev");}
void  S4227C2_nt ::v52(){vfunc_called(this, "_ZN10S4227C2_nt3v52Ev");}
void  S4227C2_nt ::v53(){vfunc_called(this, "_ZN10S4227C2_nt3v53Ev");}
void  S4227C2_nt ::v54(){vfunc_called(this, "_ZN10S4227C2_nt3v54Ev");}
void  S4227C2_nt ::v55(){vfunc_called(this, "_ZN10S4227C2_nt3v55Ev");}
void  S4227C2_nt ::v56(){vfunc_called(this, "_ZN10S4227C2_nt3v56Ev");}
void  S4227C2_nt ::v57(){vfunc_called(this, "_ZN10S4227C2_nt3v57Ev");}
void  S4227C2_nt ::v58(){vfunc_called(this, "_ZN10S4227C2_nt3v58Ev");}
void  S4227C2_nt ::v59(){vfunc_called(this, "_ZN10S4227C2_nt3v59Ev");}
void  S4227C2_nt ::v60(){vfunc_called(this, "_ZN10S4227C2_nt3v60Ev");}
void  S4227C2_nt ::v61(){vfunc_called(this, "_ZN10S4227C2_nt3v61Ev");}
void  S4227C2_nt ::v62(){vfunc_called(this, "_ZN10S4227C2_nt3v62Ev");}
void  S4227C2_nt ::v63(){vfunc_called(this, "_ZN10S4227C2_nt3v63Ev");}
void  S4227C2_nt ::v64(){vfunc_called(this, "_ZN10S4227C2_nt3v64Ev");}
void  S4227C2_nt ::v65(){vfunc_called(this, "_ZN10S4227C2_nt3v65Ev");}
void  S4227C2_nt ::v66(){vfunc_called(this, "_ZN10S4227C2_nt3v66Ev");}
void  S4227C2_nt ::v67(){vfunc_called(this, "_ZN10S4227C2_nt3v67Ev");}
void  S4227C2_nt ::v68(){vfunc_called(this, "_ZN10S4227C2_nt3v68Ev");}
void  S4227C2_nt ::v69(){vfunc_called(this, "_ZN10S4227C2_nt3v69Ev");}
void  S4227C2_nt ::v70(){vfunc_called(this, "_ZN10S4227C2_nt3v70Ev");}
void  S4227C2_nt ::v71(){vfunc_called(this, "_ZN10S4227C2_nt3v71Ev");}
void  S4227C2_nt ::v72(){vfunc_called(this, "_ZN10S4227C2_nt3v72Ev");}
void  S4227C2_nt ::v73(){vfunc_called(this, "_ZN10S4227C2_nt3v73Ev");}
void  S4227C2_nt ::v74(){vfunc_called(this, "_ZN10S4227C2_nt3v74Ev");}
void  S4227C2_nt ::v75(){vfunc_called(this, "_ZN10S4227C2_nt3v75Ev");}
void  S4227C2_nt ::v76(){vfunc_called(this, "_ZN10S4227C2_nt3v76Ev");}
void  S4227C2_nt ::v77(){vfunc_called(this, "_ZN10S4227C2_nt3v77Ev");}
void  S4227C2_nt ::v78(){vfunc_called(this, "_ZN10S4227C2_nt3v78Ev");}
void  S4227C2_nt ::v79(){vfunc_called(this, "_ZN10S4227C2_nt3v79Ev");}
void  S4227C2_nt ::v80(){vfunc_called(this, "_ZN10S4227C2_nt3v80Ev");}
void  S4227C2_nt ::v81(){vfunc_called(this, "_ZN10S4227C2_nt3v81Ev");}
void  S4227C2_nt ::v82(){vfunc_called(this, "_ZN10S4227C2_nt3v82Ev");}
void  S4227C2_nt ::v83(){vfunc_called(this, "_ZN10S4227C2_nt3v83Ev");}
void  S4227C2_nt ::v84(){vfunc_called(this, "_ZN10S4227C2_nt3v84Ev");}
void  S4227C2_nt ::v85(){vfunc_called(this, "_ZN10S4227C2_nt3v85Ev");}
void  S4227C2_nt ::v86(){vfunc_called(this, "_ZN10S4227C2_nt3v86Ev");}
void  S4227C2_nt ::v87(){vfunc_called(this, "_ZN10S4227C2_nt3v87Ev");}
void  S4227C2_nt ::v88(){vfunc_called(this, "_ZN10S4227C2_nt3v88Ev");}
void  S4227C2_nt ::v89(){vfunc_called(this, "_ZN10S4227C2_nt3v89Ev");}
void  S4227C2_nt ::v90(){vfunc_called(this, "_ZN10S4227C2_nt3v90Ev");}
void  S4227C2_nt ::v91(){vfunc_called(this, "_ZN10S4227C2_nt3v91Ev");}
void  S4227C2_nt ::v92(){vfunc_called(this, "_ZN10S4227C2_nt3v92Ev");}
void  S4227C2_nt ::v93(){vfunc_called(this, "_ZN10S4227C2_nt3v93Ev");}
void  S4227C2_nt ::v94(){vfunc_called(this, "_ZN10S4227C2_nt3v94Ev");}
void  S4227C2_nt ::v95(){vfunc_called(this, "_ZN10S4227C2_nt3v95Ev");}
void  S4227C2_nt ::v96(){vfunc_called(this, "_ZN10S4227C2_nt3v96Ev");}
void  S4227C2_nt ::v97(){vfunc_called(this, "_ZN10S4227C2_nt3v97Ev");}
void  S4227C2_nt ::v98(){vfunc_called(this, "_ZN10S4227C2_nt3v98Ev");}
void  S4227C2_nt ::v99(){vfunc_called(this, "_ZN10S4227C2_nt3v99Ev");}
void  S4227C2_nt ::v100(){vfunc_called(this, "_ZN10S4227C2_nt4v100Ev");}
void  S4227C2_nt ::v101(){vfunc_called(this, "_ZN10S4227C2_nt4v101Ev");}
void  S4227C2_nt ::v102(){vfunc_called(this, "_ZN10S4227C2_nt4v102Ev");}
void  S4227C2_nt ::v103(){vfunc_called(this, "_ZN10S4227C2_nt4v103Ev");}
void  S4227C2_nt ::v104(){vfunc_called(this, "_ZN10S4227C2_nt4v104Ev");}
void  S4227C2_nt ::v105(){vfunc_called(this, "_ZN10S4227C2_nt4v105Ev");}
void  S4227C2_nt ::v106(){vfunc_called(this, "_ZN10S4227C2_nt4v106Ev");}
void  S4227C2_nt ::v107(){vfunc_called(this, "_ZN10S4227C2_nt4v107Ev");}
void  S4227C2_nt ::v108(){vfunc_called(this, "_ZN10S4227C2_nt4v108Ev");}
void  S4227C2_nt ::v109(){vfunc_called(this, "_ZN10S4227C2_nt4v109Ev");}
void  S4227C2_nt ::v110(){vfunc_called(this, "_ZN10S4227C2_nt4v110Ev");}
void  S4227C2_nt ::v111(){vfunc_called(this, "_ZN10S4227C2_nt4v111Ev");}
S4227C2_nt ::S4227C2_nt(){ note_ctor("S4227C2_nt", this);} // tgen

//skip512 S4227C2_nt

#else // __cplusplus

extern void _ZN10S4227C2_ntC1Ev();
extern void _ZN10S4227C2_ntD1Ev();
Name_Map name_map_S4227C2_nt[] = {
  NSPAIR(_ZN10S4227C2_ntC1Ev),
  NSPAIR(_ZN10S4227C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C3_nt;
extern VTBL_ENTRY _ZTI10S4227C3_nt[];
extern  VTBL_ENTRY _ZTV10S4227C3_nt[];
static Base_Class bases_S4227C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4227C2_nt[];
extern void _ZN10S4227C2_ntD1Ev();
extern void _ZN10S4227C2_ntD0Ev();
extern void _ZN10S4227C3_nt3v11Ev();
extern void _ZN10S4227C3_nt3v12Ev();
extern void _ZN10S4227C3_nt3v13Ev();
extern void _ZN10S4227C3_nt3v14Ev();
extern void _ZN10S4227C3_nt3v15Ev();
extern void _ZN10S4227C3_nt3v16Ev();
extern void _ZN10S4227C3_nt3v17Ev();
extern void _ZN10S4227C3_nt3v18Ev();
extern void _ZN10S4227C3_nt3v19Ev();
extern void _ZN10S4227C3_nt3v20Ev();
extern void _ZN10S4227C3_nt3v21Ev();
extern void _ZN10S4227C3_nt3v22Ev();
extern void _ZN10S4227C3_nt3v23Ev();
extern void _ZN10S4227C3_nt3v24Ev();
extern void _ZN10S4227C3_nt3v25Ev();
extern void _ZN10S4227C3_nt3v26Ev();
extern void _ZN10S4227C3_nt3v27Ev();
extern void _ZN10S4227C3_nt3v28Ev();
extern void _ZN10S4227C3_nt3v29Ev();
extern void _ZN10S4227C3_nt3v30Ev();
extern void _ZN10S4227C3_nt3v31Ev();
extern void _ZN10S4227C3_nt3v32Ev();
extern void _ZN10S4227C3_nt3v33Ev();
extern void _ZN10S4227C2_nt3v34Ev();
extern void _ZN10S4227C2_nt3v35Ev();
extern void _ZN10S4227C2_nt3v36Ev();
extern void _ZN10S4227C2_nt3v37Ev();
extern void _ZN10S4227C2_nt3v38Ev();
extern void _ZN10S4227C2_nt3v39Ev();
extern void _ZN10S4227C2_nt3v40Ev();
extern void _ZN10S4227C2_nt3v41Ev();
extern void _ZN10S4227C2_nt3v42Ev();
extern void _ZN10S4227C2_nt3v43Ev();
extern void _ZN10S4227C2_nt3v44Ev();
extern void _ZN10S4227C2_nt3v45Ev();
extern void _ZN10S4227C2_nt3v46Ev();
extern void _ZN10S4227C2_nt3v47Ev();
extern void _ZN10S4227C2_nt3v48Ev();
extern void _ZN10S4227C2_nt3v49Ev();
extern void _ZN10S4227C2_nt3v50Ev();
extern void _ZN10S4227C2_nt3v51Ev();
extern void _ZN10S4227C2_nt3v52Ev();
extern void _ZN10S4227C2_nt3v53Ev();
extern void _ZN10S4227C2_nt3v54Ev();
extern void _ZN10S4227C2_nt3v55Ev();
extern void _ZN10S4227C2_nt3v56Ev();
extern void _ZN10S4227C2_nt3v57Ev();
extern void _ZN10S4227C2_nt3v58Ev();
extern void _ZN10S4227C2_nt3v59Ev();
extern void _ZN10S4227C2_nt3v60Ev();
extern void _ZN10S4227C2_nt3v61Ev();
extern void _ZN10S4227C2_nt3v62Ev();
extern void _ZN10S4227C2_nt3v63Ev();
extern void _ZN10S4227C2_nt3v64Ev();
extern void _ZN10S4227C2_nt3v65Ev();
extern void _ZN10S4227C2_nt3v66Ev();
extern void _ZN10S4227C2_nt3v67Ev();
extern void _ZN10S4227C2_nt3v68Ev();
extern void _ZN10S4227C2_nt3v69Ev();
extern void _ZN10S4227C2_nt3v70Ev();
extern void _ZN10S4227C2_nt3v71Ev();
extern void _ZN10S4227C2_nt3v72Ev();
extern void _ZN10S4227C2_nt3v73Ev();
extern void _ZN10S4227C2_nt3v74Ev();
extern void _ZN10S4227C2_nt3v75Ev();
extern void _ZN10S4227C2_nt3v76Ev();
extern void _ZN10S4227C2_nt3v77Ev();
extern void _ZN10S4227C2_nt3v78Ev();
extern void _ZN10S4227C2_nt3v79Ev();
extern void _ZN10S4227C2_nt3v80Ev();
extern void _ZN10S4227C2_nt3v81Ev();
extern void _ZN10S4227C2_nt3v82Ev();
extern void _ZN10S4227C2_nt3v83Ev();
extern void _ZN10S4227C2_nt3v84Ev();
extern void _ZN10S4227C2_nt3v85Ev();
extern void _ZN10S4227C2_nt3v86Ev();
extern void _ZN10S4227C2_nt3v87Ev();
extern void _ZN10S4227C2_nt3v88Ev();
extern void _ZN10S4227C2_nt3v89Ev();
extern void _ZN10S4227C2_nt3v90Ev();
extern void _ZN10S4227C2_nt3v91Ev();
extern void _ZN10S4227C2_nt3v92Ev();
extern void _ZN10S4227C2_nt3v93Ev();
extern void _ZN10S4227C2_nt3v94Ev();
extern void _ZN10S4227C2_nt3v95Ev();
extern void _ZN10S4227C2_nt3v96Ev();
extern void _ZN10S4227C2_nt3v97Ev();
extern void _ZN10S4227C2_nt3v98Ev();
extern void _ZN10S4227C2_nt3v99Ev();
extern void _ZN10S4227C2_nt4v100Ev();
extern void _ZN10S4227C2_nt4v101Ev();
extern void _ZN10S4227C2_nt4v102Ev();
extern void _ZN10S4227C2_nt4v103Ev();
extern void _ZN10S4227C2_nt4v104Ev();
extern void _ZN10S4227C2_nt4v105Ev();
extern void _ZN10S4227C2_nt4v106Ev();
extern void _ZN10S4227C2_nt4v107Ev();
extern void _ZN10S4227C2_nt4v108Ev();
extern void _ZN10S4227C2_nt4v109Ev();
extern void _ZN10S4227C2_nt4v110Ev();
extern void _ZN10S4227C2_nt4v111Ev();
static  VTBL_ENTRY vtc_S4227C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4227C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4227C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v111Ev,
};
extern VTBL_ENTRY _ZTI10S4227C2_nt[];
VTBL_ENTRY *P__ZTI10S4227C2_nt = _ZTI10S4227C2_nt; 
extern  VTBL_ENTRY _ZTV10S4227C2_nt[];
Class_Descriptor cd_S4227C2_nt = {  "S4227C2_nt", // class name
  bases_S4227C2_nt, 1,
  &(vtc_S4227C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(832,632), // object size
  NSPAIRA(_ZTI10S4227C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4227C2_nt),105, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S4227C41_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C40_nt  {
  ::S4227C41_nt s4227c40f0;
  void  mf4227c40(); // _ZN11S4227C40_nt9mf4227c40Ev
};
//SIG(-1 S4227C40_nt) C1{ m FC2{ FL[4]}}


void  S4227C40_nt ::mf4227c40(){}

//skip512 S4227C40_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C43_nt  {
  char s4227c43f0;
  long s4227c43f1[2];
  short s4227c43f2[12];
  char s4227c43f3[5];
  void  mf4227c43(); // _ZN11S4227C43_nt9mf4227c43Ev
};
//SIG(-1 S4227C43_nt) C1{ m Fc Fl[2] Fs[12] Fc[5]}


void  S4227C43_nt ::mf4227c43(){}

//skip512 S4227C43_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C42_nt  {
  ::S4227C43_nt s4227c42f0;
  ::S3214C4_nt s4227c42f1;
  char s4227c42f2[2];
  void  mf4227c42(); // _ZN11S4227C42_nt9mf4227c42Ev
  virtual  ~S4227C42_nt(); // _ZN11S4227C42_ntD1Ev
  S4227C42_nt(); // tgen
};
//SIG(-1 S4227C42_nt) C1{ vd m FC2{ m Fc Fl[2] Fs[12] Fc[5]} FC3{ m Fi[2]} Fc[2]}


void  S4227C42_nt ::mf4227c42(){}
 S4227C42_nt ::~S4227C42_nt(){ note_dtor("S4227C42_nt", this);}
S4227C42_nt ::S4227C42_nt(){ note_ctor("S4227C42_nt", this);} // tgen

//skip512 S4227C42_nt

#else // __cplusplus

extern void _ZN11S4227C42_ntC1Ev();
extern void _ZN11S4227C42_ntD1Ev();
Name_Map name_map_S4227C42_nt[] = {
  NSPAIR(_ZN11S4227C42_ntC1Ev),
  NSPAIR(_ZN11S4227C42_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S4227C42_nt[];
extern void _ZN11S4227C42_ntD1Ev();
extern void _ZN11S4227C42_ntD0Ev();
static  VTBL_ENTRY vtc_S4227C42_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S4227C42_nt[0]),
  (VTBL_ENTRY)&_ZN11S4227C42_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S4227C42_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S4227C42_nt[];
VTBL_ENTRY *P__ZTI11S4227C42_nt = _ZTI11S4227C42_nt; 
extern  VTBL_ENTRY _ZTV11S4227C42_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C45  {
  void *s4227c45f0;
  int s4227c45f1[2];
  ::S4227C37 s4227c45f2;
  void  mf4227c45(); // _ZN8S4227C459mf4227c45Ev
};
//SIG(-1 S4227C45) C1{ m Fp Fi[2] FC2{ m}}


void  S4227C45 ::mf4227c45(){}

static void Test_S4227C45()
{
  {
    init_simple_test("S4227C45");
    S4227C45 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S4227C45)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4227C45)");
    check_field_offset(lv, s4227c45f0, 0, "S4227C45.s4227c45f0");
    check_field_offset(lv, s4227c45f1, ABISELECT(8,4), "S4227C45.s4227c45f1");
    check_field_offset(lv, s4227c45f2, ABISELECT(16,12), "S4227C45.s4227c45f2");
  }
}
static Arrange_To_Call_Me vS4227C45(Test_S4227C45, "S4227C45", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4227C1  : S4227C2_nt {
  int s4227c1f0[3];
  ::S4227C36 s4227c1f1;
  ::S4227C36 s4227c1f2;
  int s4227c1f3[3];
  ::S4227C40_nt s4227c1f4;
  ::S4227C42_nt s4227c1f5;
  ::S4227C45 s4227c1f6;
  int s4227c1f7[2];
  void *s4227c1f8[2];
  ::S4227C12_nt s4227c1f9;
  void *s4227c1f10;
  int s4227c1f11;
  virtual  ~S4227C1(); // _ZN7S4227C1D1Ev
  virtual void  v1(); // _ZN7S4227C12v1Ev
  virtual void  v2(); // _ZN7S4227C12v2Ev
  virtual void  v3(); // _ZN7S4227C12v3Ev
  virtual void  v4(); // _ZN7S4227C12v4Ev
  virtual void  v5(); // _ZN7S4227C12v5Ev
  virtual void  v6(); // _ZN7S4227C12v6Ev
  virtual void  v7(); // _ZN7S4227C12v7Ev
  virtual void  v8(); // _ZN7S4227C12v8Ev
  virtual void  v9(); // _ZN7S4227C12v9Ev
  virtual void  v10(); // _ZN7S4227C13v10Ev
  S4227C1(); // tgen
};
//SIG(1 S4227C1) C1{ BC2{ BC3{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 Fp Fi FC4{ BC5{ m Fp Fi FC6{ m} FC6}} FC4 Fi} vd v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 FC7{ m FC8{ m FL[2]}} FC7 FC7 FC7 FC9{ m FC7} FC10{ m FC7 FC7 FC7 FC7} FC10 FC7 FC7 FC7 Fp FC9 FC11{ m FC12{ m Fp Fi FC13{ m}} Fi} Fi Fp[7] FC14{ m Fp Fi FC13 FC15{ m}} Fi:8 Fi:8 Fi:16 Fi:16 Fi:8 Fi:8 Fi:8 Fi:32 Fi:8 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fc:1 Fi[7] Fp[6] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 FC16{ BC17{ m Fp Fi FC15 FC18{ m}}} Fp[4] Fi:8 Fi:8 Fi:8 Fi:8 Fi:8 Fi:16 Fi:16 Fi:16 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:4 Fi:8 Fi:8 Fi:8 Fp[7] FC19{ m Fp Fi[2] FC18} Fp[2] Fi:16 Fi:16 FC16 FC19 FC20{ m Fp Fi[2] FC21{ m}} Fp[2] Fi:24 Fi:8 Fp} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fi[3] FC20 FC20 Fi[3] FC22{ m FC23{ FL[4]}} FC24{ vd m FC25{ m Fc Fl[2] Fs[12] Fc[5]} FC26{ m Fi[2]} Fc[2]} FC27{ m Fp Fi[2] FC21} Fi[2] Fp[2] FC7 Fp Fi}


 S4227C1 ::~S4227C1(){ note_dtor("S4227C1", this);}
void  S4227C1 ::v1(){vfunc_called(this, "_ZN7S4227C12v1Ev");}
void  S4227C1 ::v2(){vfunc_called(this, "_ZN7S4227C12v2Ev");}
void  S4227C1 ::v3(){vfunc_called(this, "_ZN7S4227C12v3Ev");}
void  S4227C1 ::v4(){vfunc_called(this, "_ZN7S4227C12v4Ev");}
void  S4227C1 ::v5(){vfunc_called(this, "_ZN7S4227C12v5Ev");}
void  S4227C1 ::v6(){vfunc_called(this, "_ZN7S4227C12v6Ev");}
void  S4227C1 ::v7(){vfunc_called(this, "_ZN7S4227C12v7Ev");}
void  S4227C1 ::v8(){vfunc_called(this, "_ZN7S4227C12v8Ev");}
void  S4227C1 ::v9(){vfunc_called(this, "_ZN7S4227C12v9Ev");}
void  S4227C1 ::v10(){vfunc_called(this, "_ZN7S4227C13v10Ev");}
S4227C1 ::S4227C1(){ note_ctor("S4227C1", this);} // tgen

static void Test_S4227C1()
{
  extern Class_Descriptor cd_S4227C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(139,210)];
    init_test(&cd_S4227C1, buf);
    S4227C1 *dp, &lv = *(dp=new (buf) S4227C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1104,836), "sizeof(S4227C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4227C1)");
    check_base_class_offset(lv, (S4227C3_nt*)(S4227C2_nt*), 0, "S4227C1");
    check_base_class_offset(lv, (S4227C2_nt*), 0, "S4227C1");
    check_field_offset(lv, s4227c1f0, ABISELECT(832,632), "S4227C1.s4227c1f0");
    check_field_offset(lv, s4227c1f1, ABISELECT(848,644), "S4227C1.s4227c1f1");
    check_field_offset(lv, s4227c1f2, ABISELECT(872,660), "S4227C1.s4227c1f2");
    check_field_offset(lv, s4227c1f3, ABISELECT(896,676), "S4227C1.s4227c1f3");
    check_field_offset(lv, s4227c1f4, ABISELECT(912,688), "S4227C1.s4227c1f4");
    check_field_offset(lv, s4227c1f5, ABISELECT(944,720), "S4227C1.s4227c1f5");
    check_field_offset(lv, s4227c1f6, ABISELECT(1024,780), "S4227C1.s4227c1f6");
    check_field_offset(lv, s4227c1f7, ABISELECT(1048,796), "S4227C1.s4227c1f7");
    check_field_offset(lv, s4227c1f8, ABISELECT(1056,804), "S4227C1.s4227c1f8");
    check_field_offset(lv, s4227c1f9, ABISELECT(1072,812), "S4227C1.s4227c1f9");
    check_field_offset(lv, s4227c1f10, ABISELECT(1088,828), "S4227C1.s4227c1f10");
    check_field_offset(lv, s4227c1f11, ABISELECT(1096,832), "S4227C1.s4227c1f11");
    test_class_info(&lv, &cd_S4227C1);
    dp->~S4227C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4227C1(Test_S4227C1, "S4227C1", ABISELECT(1104,836));

#else // __cplusplus

extern void _ZN7S4227C1C1Ev();
extern void _ZN7S4227C1D1Ev();
Name_Map name_map_S4227C1[] = {
  NSPAIR(_ZN7S4227C1C1Ev),
  NSPAIR(_ZN7S4227C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C3_nt;
extern VTBL_ENTRY _ZTI10S4227C3_nt[];
extern  VTBL_ENTRY _ZTV10S4227C3_nt[];
extern Class_Descriptor cd_S4227C2_nt;
extern VTBL_ENTRY _ZTI10S4227C2_nt[];
extern  VTBL_ENTRY _ZTV10S4227C2_nt[];
static Base_Class bases_S4227C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4227C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4227C1[];
extern void _ZN7S4227C1D1Ev();
extern void _ZN7S4227C1D0Ev();
extern void _ZN10S4227C3_nt3v11Ev();
extern void _ZN10S4227C3_nt3v12Ev();
extern void _ZN10S4227C3_nt3v13Ev();
extern void _ZN10S4227C3_nt3v14Ev();
extern void _ZN10S4227C3_nt3v15Ev();
extern void _ZN10S4227C3_nt3v16Ev();
extern void _ZN10S4227C3_nt3v17Ev();
extern void _ZN10S4227C3_nt3v18Ev();
extern void _ZN10S4227C3_nt3v19Ev();
extern void _ZN10S4227C3_nt3v20Ev();
extern void _ZN10S4227C3_nt3v21Ev();
extern void _ZN10S4227C3_nt3v22Ev();
extern void _ZN10S4227C3_nt3v23Ev();
extern void _ZN10S4227C3_nt3v24Ev();
extern void _ZN10S4227C3_nt3v25Ev();
extern void _ZN10S4227C3_nt3v26Ev();
extern void _ZN10S4227C3_nt3v27Ev();
extern void _ZN10S4227C3_nt3v28Ev();
extern void _ZN10S4227C3_nt3v29Ev();
extern void _ZN10S4227C3_nt3v30Ev();
extern void _ZN10S4227C3_nt3v31Ev();
extern void _ZN10S4227C3_nt3v32Ev();
extern void _ZN10S4227C3_nt3v33Ev();
extern void _ZN10S4227C2_nt3v34Ev();
extern void _ZN10S4227C2_nt3v35Ev();
extern void _ZN10S4227C2_nt3v36Ev();
extern void _ZN10S4227C2_nt3v37Ev();
extern void _ZN10S4227C2_nt3v38Ev();
extern void _ZN10S4227C2_nt3v39Ev();
extern void _ZN10S4227C2_nt3v40Ev();
extern void _ZN10S4227C2_nt3v41Ev();
extern void _ZN10S4227C2_nt3v42Ev();
extern void _ZN10S4227C2_nt3v43Ev();
extern void _ZN10S4227C2_nt3v44Ev();
extern void _ZN10S4227C2_nt3v45Ev();
extern void _ZN10S4227C2_nt3v46Ev();
extern void _ZN10S4227C2_nt3v47Ev();
extern void _ZN10S4227C2_nt3v48Ev();
extern void _ZN10S4227C2_nt3v49Ev();
extern void _ZN10S4227C2_nt3v50Ev();
extern void _ZN10S4227C2_nt3v51Ev();
extern void _ZN10S4227C2_nt3v52Ev();
extern void _ZN10S4227C2_nt3v53Ev();
extern void _ZN10S4227C2_nt3v54Ev();
extern void _ZN10S4227C2_nt3v55Ev();
extern void _ZN10S4227C2_nt3v56Ev();
extern void _ZN10S4227C2_nt3v57Ev();
extern void _ZN10S4227C2_nt3v58Ev();
extern void _ZN10S4227C2_nt3v59Ev();
extern void _ZN10S4227C2_nt3v60Ev();
extern void _ZN10S4227C2_nt3v61Ev();
extern void _ZN10S4227C2_nt3v62Ev();
extern void _ZN10S4227C2_nt3v63Ev();
extern void _ZN10S4227C2_nt3v64Ev();
extern void _ZN10S4227C2_nt3v65Ev();
extern void _ZN10S4227C2_nt3v66Ev();
extern void _ZN10S4227C2_nt3v67Ev();
extern void _ZN10S4227C2_nt3v68Ev();
extern void _ZN10S4227C2_nt3v69Ev();
extern void _ZN10S4227C2_nt3v70Ev();
extern void _ZN10S4227C2_nt3v71Ev();
extern void _ZN10S4227C2_nt3v72Ev();
extern void _ZN10S4227C2_nt3v73Ev();
extern void _ZN10S4227C2_nt3v74Ev();
extern void _ZN10S4227C2_nt3v75Ev();
extern void _ZN10S4227C2_nt3v76Ev();
extern void _ZN10S4227C2_nt3v77Ev();
extern void _ZN10S4227C2_nt3v78Ev();
extern void _ZN10S4227C2_nt3v79Ev();
extern void _ZN10S4227C2_nt3v80Ev();
extern void _ZN10S4227C2_nt3v81Ev();
extern void _ZN10S4227C2_nt3v82Ev();
extern void _ZN10S4227C2_nt3v83Ev();
extern void _ZN10S4227C2_nt3v84Ev();
extern void _ZN10S4227C2_nt3v85Ev();
extern void _ZN10S4227C2_nt3v86Ev();
extern void _ZN10S4227C2_nt3v87Ev();
extern void _ZN10S4227C2_nt3v88Ev();
extern void _ZN10S4227C2_nt3v89Ev();
extern void _ZN10S4227C2_nt3v90Ev();
extern void _ZN10S4227C2_nt3v91Ev();
extern void _ZN10S4227C2_nt3v92Ev();
extern void _ZN10S4227C2_nt3v93Ev();
extern void _ZN10S4227C2_nt3v94Ev();
extern void _ZN10S4227C2_nt3v95Ev();
extern void _ZN10S4227C2_nt3v96Ev();
extern void _ZN10S4227C2_nt3v97Ev();
extern void _ZN10S4227C2_nt3v98Ev();
extern void _ZN10S4227C2_nt3v99Ev();
extern void _ZN10S4227C2_nt4v100Ev();
extern void _ZN10S4227C2_nt4v101Ev();
extern void _ZN10S4227C2_nt4v102Ev();
extern void _ZN10S4227C2_nt4v103Ev();
extern void _ZN10S4227C2_nt4v104Ev();
extern void _ZN10S4227C2_nt4v105Ev();
extern void _ZN10S4227C2_nt4v106Ev();
extern void _ZN10S4227C2_nt4v107Ev();
extern void _ZN10S4227C2_nt4v108Ev();
extern void _ZN10S4227C2_nt4v109Ev();
extern void _ZN10S4227C2_nt4v110Ev();
extern void _ZN10S4227C2_nt4v111Ev();
extern void _ZN7S4227C12v1Ev();
extern void _ZN7S4227C12v2Ev();
extern void _ZN7S4227C12v3Ev();
extern void _ZN7S4227C12v4Ev();
extern void _ZN7S4227C12v5Ev();
extern void _ZN7S4227C12v6Ev();
extern void _ZN7S4227C12v7Ev();
extern void _ZN7S4227C12v8Ev();
extern void _ZN7S4227C12v9Ev();
extern void _ZN7S4227C13v10Ev();
static  VTBL_ENTRY vtc_S4227C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4227C1[0]),
  (VTBL_ENTRY)&_ZN7S4227C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4227C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S4227C3_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S4227C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN7S4227C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4227C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4227C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4227C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4227C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4227C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4227C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4227C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4227C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4227C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S4227C1[];
extern  VTBL_ENTRY _ZTV7S4227C1[];
Class_Descriptor cd_S4227C1 = {  "S4227C1", // class name
  bases_S4227C1, 2,
  &(vtc_S4227C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1104,836), // object size
  NSPAIRA(_ZTI7S4227C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4227C1),115, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10258C2_nt  {
  virtual  ~S10258C2_nt(); // _ZN11S10258C2_ntD1Ev
  virtual void  v81(); // _ZN11S10258C2_nt3v81Ev
  virtual void  v82(); // _ZN11S10258C2_nt3v82Ev
  virtual void  v83(); // _ZN11S10258C2_nt3v83Ev
  virtual void  v84(); // _ZN11S10258C2_nt3v84Ev
  virtual void  v85(); // _ZN11S10258C2_nt3v85Ev
  virtual void  v86(); // _ZN11S10258C2_nt3v86Ev
  virtual void  v87(); // _ZN11S10258C2_nt3v87Ev
  virtual void  v88(); // _ZN11S10258C2_nt3v88Ev
  virtual void  v89(); // _ZN11S10258C2_nt3v89Ev
  virtual void  v90(); // _ZN11S10258C2_nt3v90Ev
  virtual void  v91(); // _ZN11S10258C2_nt3v91Ev
  virtual void  v92(); // _ZN11S10258C2_nt3v92Ev
  virtual void  v93(); // _ZN11S10258C2_nt3v93Ev
  virtual void  v94(); // _ZN11S10258C2_nt3v94Ev
  virtual void  v95(); // _ZN11S10258C2_nt3v95Ev
  virtual void  v96(); // _ZN11S10258C2_nt3v96Ev
  virtual void  v97(); // _ZN11S10258C2_nt3v97Ev
  virtual void  v98(); // _ZN11S10258C2_nt3v98Ev
  virtual void  v99(); // _ZN11S10258C2_nt3v99Ev
  virtual void  v100(); // _ZN11S10258C2_nt4v100Ev
  virtual void  v101(); // _ZN11S10258C2_nt4v101Ev
  virtual void  v102(); // _ZN11S10258C2_nt4v102Ev
  virtual void  v103(); // _ZN11S10258C2_nt4v103Ev
  virtual void  v104(); // _ZN11S10258C2_nt4v104Ev
  virtual void  v105(); // _ZN11S10258C2_nt4v105Ev
  virtual void  v106(); // _ZN11S10258C2_nt4v106Ev
  virtual void  v107(); // _ZN11S10258C2_nt4v107Ev
  virtual void  v108(); // _ZN11S10258C2_nt4v108Ev
  virtual void  v109(); // _ZN11S10258C2_nt4v109Ev
  virtual void  v110(); // _ZN11S10258C2_nt4v110Ev
  virtual void  v111(); // _ZN11S10258C2_nt4v111Ev
  virtual void  v112(); // _ZN11S10258C2_nt4v112Ev
  virtual void  v113(); // _ZN11S10258C2_nt4v113Ev
  virtual void  v114(); // _ZN11S10258C2_nt4v114Ev
  virtual void  v115(); // _ZN11S10258C2_nt4v115Ev
  virtual void  v116(); // _ZN11S10258C2_nt4v116Ev
  virtual void  v117(); // _ZN11S10258C2_nt4v117Ev
  virtual void  v118(); // _ZN11S10258C2_nt4v118Ev
  virtual void  v119(); // _ZN11S10258C2_nt4v119Ev
  virtual void  v120(); // _ZN11S10258C2_nt4v120Ev
  virtual void  v121(); // _ZN11S10258C2_nt4v121Ev
  virtual void  v122(); // _ZN11S10258C2_nt4v122Ev
  virtual void  v123(); // _ZN11S10258C2_nt4v123Ev
  virtual void  v124(); // _ZN11S10258C2_nt4v124Ev
  virtual void  v125(); // _ZN11S10258C2_nt4v125Ev
  virtual void  v126(); // _ZN11S10258C2_nt4v126Ev
  virtual void  v127(); // _ZN11S10258C2_nt4v127Ev
  virtual void  v128(); // _ZN11S10258C2_nt4v128Ev
  virtual void  v129(); // _ZN11S10258C2_nt4v129Ev
  virtual void  v130(); // _ZN11S10258C2_nt4v130Ev
  virtual void  v131(); // _ZN11S10258C2_nt4v131Ev
  virtual void  v132(); // _ZN11S10258C2_nt4v132Ev
  virtual void  v133(); // _ZN11S10258C2_nt4v133Ev
  virtual void  v134(); // _ZN11S10258C2_nt4v134Ev
  virtual void  v135(); // _ZN11S10258C2_nt4v135Ev
  virtual void  v136(); // _ZN11S10258C2_nt4v136Ev
  virtual void  v137(); // _ZN11S10258C2_nt4v137Ev
  virtual void  v138(); // _ZN11S10258C2_nt4v138Ev
  virtual void  v139(); // _ZN11S10258C2_nt4v139Ev
  virtual void  v140(); // _ZN11S10258C2_nt4v140Ev
  virtual void  v141(); // _ZN11S10258C2_nt4v141Ev
  virtual void  v142(); // _ZN11S10258C2_nt4v142Ev
  virtual void  v143(); // _ZN11S10258C2_nt4v143Ev
  virtual void  v144(); // _ZN11S10258C2_nt4v144Ev
  virtual void  v145(); // _ZN11S10258C2_nt4v145Ev
  virtual void  v146(); // _ZN11S10258C2_nt4v146Ev
  virtual void  v147(); // _ZN11S10258C2_nt4v147Ev
  virtual void  v148(); // _ZN11S10258C2_nt4v148Ev
  virtual void  v149(); // _ZN11S10258C2_nt4v149Ev
  virtual void  v150(); // _ZN11S10258C2_nt4v150Ev
  virtual void  v151(); // _ZN11S10258C2_nt4v151Ev
  virtual void  v152(); // _ZN11S10258C2_nt4v152Ev
  virtual void  v153(); // _ZN11S10258C2_nt4v153Ev
  virtual void  v154(); // _ZN11S10258C2_nt4v154Ev
  virtual void  v155(); // _ZN11S10258C2_nt4v155Ev
  virtual void  v156(); // _ZN11S10258C2_nt4v156Ev
  virtual void  v157(); // _ZN11S10258C2_nt4v157Ev
  virtual void  v158(); // _ZN11S10258C2_nt4v158Ev
  virtual void  v159(); // _ZN11S10258C2_nt4v159Ev
  virtual void  v160(); // _ZN11S10258C2_nt4v160Ev
  S10258C2_nt(); // tgen
};
//SIG(-1 S10258C2_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 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80}


 S10258C2_nt ::~S10258C2_nt(){ note_dtor("S10258C2_nt", this);}
void  S10258C2_nt ::v81(){vfunc_called(this, "_ZN11S10258C2_nt3v81Ev");}
void  S10258C2_nt ::v82(){vfunc_called(this, "_ZN11S10258C2_nt3v82Ev");}
void  S10258C2_nt ::v83(){vfunc_called(this, "_ZN11S10258C2_nt3v83Ev");}
void  S10258C2_nt ::v84(){vfunc_called(this, "_ZN11S10258C2_nt3v84Ev");}
void  S10258C2_nt ::v85(){vfunc_called(this, "_ZN11S10258C2_nt3v85Ev");}
void  S10258C2_nt ::v86(){vfunc_called(this, "_ZN11S10258C2_nt3v86Ev");}
void  S10258C2_nt ::v87(){vfunc_called(this, "_ZN11S10258C2_nt3v87Ev");}
void  S10258C2_nt ::v88(){vfunc_called(this, "_ZN11S10258C2_nt3v88Ev");}
void  S10258C2_nt ::v89(){vfunc_called(this, "_ZN11S10258C2_nt3v89Ev");}
void  S10258C2_nt ::v90(){vfunc_called(this, "_ZN11S10258C2_nt3v90Ev");}
void  S10258C2_nt ::v91(){vfunc_called(this, "_ZN11S10258C2_nt3v91Ev");}
void  S10258C2_nt ::v92(){vfunc_called(this, "_ZN11S10258C2_nt3v92Ev");}
void  S10258C2_nt ::v93(){vfunc_called(this, "_ZN11S10258C2_nt3v93Ev");}
void  S10258C2_nt ::v94(){vfunc_called(this, "_ZN11S10258C2_nt3v94Ev");}
void  S10258C2_nt ::v95(){vfunc_called(this, "_ZN11S10258C2_nt3v95Ev");}
void  S10258C2_nt ::v96(){vfunc_called(this, "_ZN11S10258C2_nt3v96Ev");}
void  S10258C2_nt ::v97(){vfunc_called(this, "_ZN11S10258C2_nt3v97Ev");}
void  S10258C2_nt ::v98(){vfunc_called(this, "_ZN11S10258C2_nt3v98Ev");}
void  S10258C2_nt ::v99(){vfunc_called(this, "_ZN11S10258C2_nt3v99Ev");}
void  S10258C2_nt ::v100(){vfunc_called(this, "_ZN11S10258C2_nt4v100Ev");}
void  S10258C2_nt ::v101(){vfunc_called(this, "_ZN11S10258C2_nt4v101Ev");}
void  S10258C2_nt ::v102(){vfunc_called(this, "_ZN11S10258C2_nt4v102Ev");}
void  S10258C2_nt ::v103(){vfunc_called(this, "_ZN11S10258C2_nt4v103Ev");}
void  S10258C2_nt ::v104(){vfunc_called(this, "_ZN11S10258C2_nt4v104Ev");}
void  S10258C2_nt ::v105(){vfunc_called(this, "_ZN11S10258C2_nt4v105Ev");}
void  S10258C2_nt ::v106(){vfunc_called(this, "_ZN11S10258C2_nt4v106Ev");}
void  S10258C2_nt ::v107(){vfunc_called(this, "_ZN11S10258C2_nt4v107Ev");}
void  S10258C2_nt ::v108(){vfunc_called(this, "_ZN11S10258C2_nt4v108Ev");}
void  S10258C2_nt ::v109(){vfunc_called(this, "_ZN11S10258C2_nt4v109Ev");}
void  S10258C2_nt ::v110(){vfunc_called(this, "_ZN11S10258C2_nt4v110Ev");}
void  S10258C2_nt ::v111(){vfunc_called(this, "_ZN11S10258C2_nt4v111Ev");}
void  S10258C2_nt ::v112(){vfunc_called(this, "_ZN11S10258C2_nt4v112Ev");}
void  S10258C2_nt ::v113(){vfunc_called(this, "_ZN11S10258C2_nt4v113Ev");}
void  S10258C2_nt ::v114(){vfunc_called(this, "_ZN11S10258C2_nt4v114Ev");}
void  S10258C2_nt ::v115(){vfunc_called(this, "_ZN11S10258C2_nt4v115Ev");}
void  S10258C2_nt ::v116(){vfunc_called(this, "_ZN11S10258C2_nt4v116Ev");}
void  S10258C2_nt ::v117(){vfunc_called(this, "_ZN11S10258C2_nt4v117Ev");}
void  S10258C2_nt ::v118(){vfunc_called(this, "_ZN11S10258C2_nt4v118Ev");}
void  S10258C2_nt ::v119(){vfunc_called(this, "_ZN11S10258C2_nt4v119Ev");}
void  S10258C2_nt ::v120(){vfunc_called(this, "_ZN11S10258C2_nt4v120Ev");}
void  S10258C2_nt ::v121(){vfunc_called(this, "_ZN11S10258C2_nt4v121Ev");}
void  S10258C2_nt ::v122(){vfunc_called(this, "_ZN11S10258C2_nt4v122Ev");}
void  S10258C2_nt ::v123(){vfunc_called(this, "_ZN11S10258C2_nt4v123Ev");}
void  S10258C2_nt ::v124(){vfunc_called(this, "_ZN11S10258C2_nt4v124Ev");}
void  S10258C2_nt ::v125(){vfunc_called(this, "_ZN11S10258C2_nt4v125Ev");}
void  S10258C2_nt ::v126(){vfunc_called(this, "_ZN11S10258C2_nt4v126Ev");}
void  S10258C2_nt ::v127(){vfunc_called(this, "_ZN11S10258C2_nt4v127Ev");}
void  S10258C2_nt ::v128(){vfunc_called(this, "_ZN11S10258C2_nt4v128Ev");}
void  S10258C2_nt ::v129(){vfunc_called(this, "_ZN11S10258C2_nt4v129Ev");}
void  S10258C2_nt ::v130(){vfunc_called(this, "_ZN11S10258C2_nt4v130Ev");}
void  S10258C2_nt ::v131(){vfunc_called(this, "_ZN11S10258C2_nt4v131Ev");}
void  S10258C2_nt ::v132(){vfunc_called(this, "_ZN11S10258C2_nt4v132Ev");}
void  S10258C2_nt ::v133(){vfunc_called(this, "_ZN11S10258C2_nt4v133Ev");}
void  S10258C2_nt ::v134(){vfunc_called(this, "_ZN11S10258C2_nt4v134Ev");}
void  S10258C2_nt ::v135(){vfunc_called(this, "_ZN11S10258C2_nt4v135Ev");}
void  S10258C2_nt ::v136(){vfunc_called(this, "_ZN11S10258C2_nt4v136Ev");}
void  S10258C2_nt ::v137(){vfunc_called(this, "_ZN11S10258C2_nt4v137Ev");}
void  S10258C2_nt ::v138(){vfunc_called(this, "_ZN11S10258C2_nt4v138Ev");}
void  S10258C2_nt ::v139(){vfunc_called(this, "_ZN11S10258C2_nt4v139Ev");}
void  S10258C2_nt ::v140(){vfunc_called(this, "_ZN11S10258C2_nt4v140Ev");}
void  S10258C2_nt ::v141(){vfunc_called(this, "_ZN11S10258C2_nt4v141Ev");}
void  S10258C2_nt ::v142(){vfunc_called(this, "_ZN11S10258C2_nt4v142Ev");}
void  S10258C2_nt ::v143(){vfunc_called(this, "_ZN11S10258C2_nt4v143Ev");}
void  S10258C2_nt ::v144(){vfunc_called(this, "_ZN11S10258C2_nt4v144Ev");}
void  S10258C2_nt ::v145(){vfunc_called(this, "_ZN11S10258C2_nt4v145Ev");}
void  S10258C2_nt ::v146(){vfunc_called(this, "_ZN11S10258C2_nt4v146Ev");}
void  S10258C2_nt ::v147(){vfunc_called(this, "_ZN11S10258C2_nt4v147Ev");}
void  S10258C2_nt ::v148(){vfunc_called(this, "_ZN11S10258C2_nt4v148Ev");}
void  S10258C2_nt ::v149(){vfunc_called(this, "_ZN11S10258C2_nt4v149Ev");}
void  S10258C2_nt ::v150(){vfunc_called(this, "_ZN11S10258C2_nt4v150Ev");}
void  S10258C2_nt ::v151(){vfunc_called(this, "_ZN11S10258C2_nt4v151Ev");}
void  S10258C2_nt ::v152(){vfunc_called(this, "_ZN11S10258C2_nt4v152Ev");}
void  S10258C2_nt ::v153(){vfunc_called(this, "_ZN11S10258C2_nt4v153Ev");}
void  S10258C2_nt ::v154(){vfunc_called(this, "_ZN11S10258C2_nt4v154Ev");}
void  S10258C2_nt ::v155(){vfunc_called(this, "_ZN11S10258C2_nt4v155Ev");}
void  S10258C2_nt ::v156(){vfunc_called(this, "_ZN11S10258C2_nt4v156Ev");}
void  S10258C2_nt ::v157(){vfunc_called(this, "_ZN11S10258C2_nt4v157Ev");}
void  S10258C2_nt ::v158(){vfunc_called(this, "_ZN11S10258C2_nt4v158Ev");}
void  S10258C2_nt ::v159(){vfunc_called(this, "_ZN11S10258C2_nt4v159Ev");}
void  S10258C2_nt ::v160(){vfunc_called(this, "_ZN11S10258C2_nt4v160Ev");}
S10258C2_nt ::S10258C2_nt(){ note_ctor("S10258C2_nt", this);} // tgen

//skip512 S10258C2_nt

#else // __cplusplus

extern void _ZN11S10258C2_ntC1Ev();
extern void _ZN11S10258C2_ntD1Ev();
Name_Map name_map_S10258C2_nt[] = {
  NSPAIR(_ZN11S10258C2_ntC1Ev),
  NSPAIR(_ZN11S10258C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10258C2_nt[];
extern void _ZN11S10258C2_ntD1Ev();
extern void _ZN11S10258C2_ntD0Ev();
extern void _ZN11S10258C2_nt3v81Ev();
extern void _ZN11S10258C2_nt3v82Ev();
extern void _ZN11S10258C2_nt3v83Ev();
extern void _ZN11S10258C2_nt3v84Ev();
extern void _ZN11S10258C2_nt3v85Ev();
extern void _ZN11S10258C2_nt3v86Ev();
extern void _ZN11S10258C2_nt3v87Ev();
extern void _ZN11S10258C2_nt3v88Ev();
extern void _ZN11S10258C2_nt3v89Ev();
extern void _ZN11S10258C2_nt3v90Ev();
extern void _ZN11S10258C2_nt3v91Ev();
extern void _ZN11S10258C2_nt3v92Ev();
extern void _ZN11S10258C2_nt3v93Ev();
extern void _ZN11S10258C2_nt3v94Ev();
extern void _ZN11S10258C2_nt3v95Ev();
extern void _ZN11S10258C2_nt3v96Ev();
extern void _ZN11S10258C2_nt3v97Ev();
extern void _ZN11S10258C2_nt3v98Ev();
extern void _ZN11S10258C2_nt3v99Ev();
extern void _ZN11S10258C2_nt4v100Ev();
extern void _ZN11S10258C2_nt4v101Ev();
extern void _ZN11S10258C2_nt4v102Ev();
extern void _ZN11S10258C2_nt4v103Ev();
extern void _ZN11S10258C2_nt4v104Ev();
extern void _ZN11S10258C2_nt4v105Ev();
extern void _ZN11S10258C2_nt4v106Ev();
extern void _ZN11S10258C2_nt4v107Ev();
extern void _ZN11S10258C2_nt4v108Ev();
extern void _ZN11S10258C2_nt4v109Ev();
extern void _ZN11S10258C2_nt4v110Ev();
extern void _ZN11S10258C2_nt4v111Ev();
extern void _ZN11S10258C2_nt4v112Ev();
extern void _ZN11S10258C2_nt4v113Ev();
extern void _ZN11S10258C2_nt4v114Ev();
extern void _ZN11S10258C2_nt4v115Ev();
extern void _ZN11S10258C2_nt4v116Ev();
extern void _ZN11S10258C2_nt4v117Ev();
extern void _ZN11S10258C2_nt4v118Ev();
extern void _ZN11S10258C2_nt4v119Ev();
extern void _ZN11S10258C2_nt4v120Ev();
extern void _ZN11S10258C2_nt4v121Ev();
extern void _ZN11S10258C2_nt4v122Ev();
extern void _ZN11S10258C2_nt4v123Ev();
extern void _ZN11S10258C2_nt4v124Ev();
extern void _ZN11S10258C2_nt4v125Ev();
extern void _ZN11S10258C2_nt4v126Ev();
extern void _ZN11S10258C2_nt4v127Ev();
extern void _ZN11S10258C2_nt4v128Ev();
extern void _ZN11S10258C2_nt4v129Ev();
extern void _ZN11S10258C2_nt4v130Ev();
extern void _ZN11S10258C2_nt4v131Ev();
extern void _ZN11S10258C2_nt4v132Ev();
extern void _ZN11S10258C2_nt4v133Ev();
extern void _ZN11S10258C2_nt4v134Ev();
extern void _ZN11S10258C2_nt4v135Ev();
extern void _ZN11S10258C2_nt4v136Ev();
extern void _ZN11S10258C2_nt4v137Ev();
extern void _ZN11S10258C2_nt4v138Ev();
extern void _ZN11S10258C2_nt4v139Ev();
extern void _ZN11S10258C2_nt4v140Ev();
extern void _ZN11S10258C2_nt4v141Ev();
extern void _ZN11S10258C2_nt4v142Ev();
extern void _ZN11S10258C2_nt4v143Ev();
extern void _ZN11S10258C2_nt4v144Ev();
extern void _ZN11S10258C2_nt4v145Ev();
extern void _ZN11S10258C2_nt4v146Ev();
extern void _ZN11S10258C2_nt4v147Ev();
extern void _ZN11S10258C2_nt4v148Ev();
extern void _ZN11S10258C2_nt4v149Ev();
extern void _ZN11S10258C2_nt4v150Ev();
extern void _ZN11S10258C2_nt4v151Ev();
extern void _ZN11S10258C2_nt4v152Ev();
extern void _ZN11S10258C2_nt4v153Ev();
extern void _ZN11S10258C2_nt4v154Ev();
extern void _ZN11S10258C2_nt4v155Ev();
extern void _ZN11S10258C2_nt4v156Ev();
extern void _ZN11S10258C2_nt4v157Ev();
extern void _ZN11S10258C2_nt4v158Ev();
extern void _ZN11S10258C2_nt4v159Ev();
extern void _ZN11S10258C2_nt4v160Ev();
static  VTBL_ENTRY vtc_S10258C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10258C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S10258C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v160Ev,
};
extern VTBL_ENTRY _ZTI11S10258C2_nt[];
VTBL_ENTRY *P__ZTI11S10258C2_nt = _ZTI11S10258C2_nt; 
extern  VTBL_ENTRY _ZTV11S10258C2_nt[];
Class_Descriptor cd_S10258C2_nt = {  "S10258C2_nt", // class name
  0,0,//no base classes
  &(vtc_S10258C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S10258C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10258C2_nt),84, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10258C6_nt  {
  __tsi64 s10258c6f0[4];
  void  mf10258c6(); // _ZN11S10258C6_nt9mf10258c6Ev
};
//SIG(-1 S10258C6_nt) C1{ m FL[4]}


void  S10258C6_nt ::mf10258c6(){}

//skip512 S10258C6_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S10258C6_nt[];
VTBL_ENTRY *P__ZTI11S10258C6_nt = _ZTI11S10258C6_nt; 
Class_Descriptor cd_S10258C6_nt = {  "S10258C6_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  32, // object size
  NSPAIRA(_ZTI11S10258C6_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  S10258C11_nt  {
  int s10258c11f0[4];
  void *s10258c11f1;
  char s10258c11f2;
  int s10258c11f3[2];
  void *s10258c11f4[2];
  void  mf10258c11(); // _ZN12S10258C11_nt10mf10258c11Ev
};
//SIG(-1 S10258C11_nt) C1{ m Fi[4] Fp Fc Fi[2] Fp[2]}


void  S10258C11_nt ::mf10258c11(){}

//skip512 S10258C11_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10258C12_nt  {
  int s10258c12f0;
};
//SIG(-1 S10258C12_nt) C1{ Fi}



//skip512 S10258C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10258C10_nt  {
  ::S10258C11_nt s10258c10f0;
  int s10258c10f1[5];
  __tsi64 s10258c10f2[2];
  ::S10258C12_nt s10258c10f3;
  int s10258c10f4;
  char s10258c10f5;
  int s10258c10f6;
  char s10258c10f7;
  void  mf10258c10(); // _ZN12S10258C10_nt10mf10258c10Ev
};
//SIG(-1 S10258C10_nt) C1{ m FC2{ m Fi[4] Fp Fc Fi[2] Fp[2]} Fi[5] FL[2] FC3{ Fi} Fi Fc Fi Fc}


void  S10258C10_nt ::mf10258c10(){}

//skip512 S10258C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10258C1  : S10258C2_nt {
  void *s10258c1f0;
  ::S4227C25 s10258c1f1;
  ::S10258C6_nt s10258c1f2;
  ::S4227C25 s10258c1f3;
  ::S10258C6_nt s10258c1f4;
  ::S4227C21 s10258c1f5;
  void *s10258c1f6[10];
  ::S4227C25 s10258c1f7;
  ::S10258C6_nt s10258c1f8;
  ::S10258C10_nt s10258c1f9;
  ::S10258C6_nt s10258c1f10;
  ::S4227C25 s10258c1f11;
  void *s10258c1f12;
  virtual  ~S10258C1(); // _ZN8S10258C1D1Ev
  virtual void  v1(); // _ZN8S10258C12v1Ev
  virtual void  v2(); // _ZN8S10258C12v2Ev
  virtual void  v3(); // _ZN8S10258C12v3Ev
  virtual void  v4(); // _ZN8S10258C12v4Ev
  virtual void  v5(); // _ZN8S10258C12v5Ev
  virtual void  v6(); // _ZN8S10258C12v6Ev
  virtual void  v7(); // _ZN8S10258C12v7Ev
  virtual void  v8(); // _ZN8S10258C12v8Ev
  virtual void  v9(); // _ZN8S10258C12v9Ev
  virtual void  v10(); // _ZN8S10258C13v10Ev
  virtual void  v11(); // _ZN8S10258C13v11Ev
  virtual void  v12(); // _ZN8S10258C13v12Ev
  virtual void  v13(); // _ZN8S10258C13v13Ev
  virtual void  v14(); // _ZN8S10258C13v14Ev
  virtual void  v15(); // _ZN8S10258C13v15Ev
  virtual void  v16(); // _ZN8S10258C13v16Ev
  virtual void  v17(); // _ZN8S10258C13v17Ev
  virtual void  v18(); // _ZN8S10258C13v18Ev
  virtual void  v19(); // _ZN8S10258C13v19Ev
  virtual void  v20(); // _ZN8S10258C13v20Ev
  virtual void  v21(); // _ZN8S10258C13v21Ev
  virtual void  v22(); // _ZN8S10258C13v22Ev
  virtual void  v23(); // _ZN8S10258C13v23Ev
  virtual void  v24(); // _ZN8S10258C13v24Ev
  virtual void  v25(); // _ZN8S10258C13v25Ev
  virtual void  v26(); // _ZN8S10258C13v26Ev
  virtual void  v27(); // _ZN8S10258C13v27Ev
  virtual void  v28(); // _ZN8S10258C13v28Ev
  virtual void  v29(); // _ZN8S10258C13v29Ev
  virtual void  v30(); // _ZN8S10258C13v30Ev
  virtual void  v31(); // _ZN8S10258C13v31Ev
  virtual void  v32(); // _ZN8S10258C13v32Ev
  virtual void  v33(); // _ZN8S10258C13v33Ev
  virtual void  v34(); // _ZN8S10258C13v34Ev
  virtual void  v35(); // _ZN8S10258C13v35Ev
  virtual void  v36(); // _ZN8S10258C13v36Ev
  virtual void  v37(); // _ZN8S10258C13v37Ev
  virtual void  v38(); // _ZN8S10258C13v38Ev
  virtual void  v39(); // _ZN8S10258C13v39Ev
  virtual void  v40(); // _ZN8S10258C13v40Ev
  virtual void  v41(); // _ZN8S10258C13v41Ev
  virtual void  v42(); // _ZN8S10258C13v42Ev
  virtual void  v43(); // _ZN8S10258C13v43Ev
  virtual void  v44(); // _ZN8S10258C13v44Ev
  virtual void  v45(); // _ZN8S10258C13v45Ev
  virtual void  v46(); // _ZN8S10258C13v46Ev
  virtual void  v47(); // _ZN8S10258C13v47Ev
  virtual void  v48(); // _ZN8S10258C13v48Ev
  virtual void  v49(); // _ZN8S10258C13v49Ev
  virtual void  v50(); // _ZN8S10258C13v50Ev
  virtual void  v51(); // _ZN8S10258C13v51Ev
  virtual void  v52(); // _ZN8S10258C13v52Ev
  virtual void  v53(); // _ZN8S10258C13v53Ev
  virtual void  v54(); // _ZN8S10258C13v54Ev
  virtual void  v55(); // _ZN8S10258C13v55Ev
  virtual void  v56(); // _ZN8S10258C13v56Ev
  virtual void  v57(); // _ZN8S10258C13v57Ev
  virtual void  v58(); // _ZN8S10258C13v58Ev
  virtual void  v59(); // _ZN8S10258C13v59Ev
  virtual void  v60(); // _ZN8S10258C13v60Ev
  virtual void  v61(); // _ZN8S10258C13v61Ev
  virtual void  v62(); // _ZN8S10258C13v62Ev
  virtual void  v63(); // _ZN8S10258C13v63Ev
  virtual void  v64(); // _ZN8S10258C13v64Ev
  virtual void  v65(); // _ZN8S10258C13v65Ev
  virtual void  v66(); // _ZN8S10258C13v66Ev
  virtual void  v67(); // _ZN8S10258C13v67Ev
  virtual void  v68(); // _ZN8S10258C13v68Ev
  virtual void  v69(); // _ZN8S10258C13v69Ev
  virtual void  v70(); // _ZN8S10258C13v70Ev
  virtual void  v71(); // _ZN8S10258C13v71Ev
  virtual void  v72(); // _ZN8S10258C13v72Ev
  virtual void  v73(); // _ZN8S10258C13v73Ev
  virtual void  v74(); // _ZN8S10258C13v74Ev
  virtual void  v75(); // _ZN8S10258C13v75Ev
  virtual void  v76(); // _ZN8S10258C13v76Ev
  virtual void  v77(); // _ZN8S10258C13v77Ev
  virtual void  v78(); // _ZN8S10258C13v78Ev
  virtual void  v79(); // _ZN8S10258C13v79Ev
  virtual void  v80(); // _ZN8S10258C13v80Ev
  S10258C1(); // tgen
};
//SIG(1 S10258C1) C1{ BC2{ vd 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} 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 Fp FC3{ m Fp Fi FC4{ m} FC5{ m}} FC6{ m FL[4]} FC3 FC6 FC7{ m Fp Fi FC8{ m} FC4} Fp[10] FC3 FC6 FC9{ m FC10{ m Fi[4] Fp Fc Fi[2] Fp[2]} Fi[5] FL[2] FC11{ Fi} Fi Fc Fi Fc} FC6 FC3 Fp}


 S10258C1 ::~S10258C1(){ note_dtor("S10258C1", this);}
void  S10258C1 ::v1(){vfunc_called(this, "_ZN8S10258C12v1Ev");}
void  S10258C1 ::v2(){vfunc_called(this, "_ZN8S10258C12v2Ev");}
void  S10258C1 ::v3(){vfunc_called(this, "_ZN8S10258C12v3Ev");}
void  S10258C1 ::v4(){vfunc_called(this, "_ZN8S10258C12v4Ev");}
void  S10258C1 ::v5(){vfunc_called(this, "_ZN8S10258C12v5Ev");}
void  S10258C1 ::v6(){vfunc_called(this, "_ZN8S10258C12v6Ev");}
void  S10258C1 ::v7(){vfunc_called(this, "_ZN8S10258C12v7Ev");}
void  S10258C1 ::v8(){vfunc_called(this, "_ZN8S10258C12v8Ev");}
void  S10258C1 ::v9(){vfunc_called(this, "_ZN8S10258C12v9Ev");}
void  S10258C1 ::v10(){vfunc_called(this, "_ZN8S10258C13v10Ev");}
void  S10258C1 ::v11(){vfunc_called(this, "_ZN8S10258C13v11Ev");}
void  S10258C1 ::v12(){vfunc_called(this, "_ZN8S10258C13v12Ev");}
void  S10258C1 ::v13(){vfunc_called(this, "_ZN8S10258C13v13Ev");}
void  S10258C1 ::v14(){vfunc_called(this, "_ZN8S10258C13v14Ev");}
void  S10258C1 ::v15(){vfunc_called(this, "_ZN8S10258C13v15Ev");}
void  S10258C1 ::v16(){vfunc_called(this, "_ZN8S10258C13v16Ev");}
void  S10258C1 ::v17(){vfunc_called(this, "_ZN8S10258C13v17Ev");}
void  S10258C1 ::v18(){vfunc_called(this, "_ZN8S10258C13v18Ev");}
void  S10258C1 ::v19(){vfunc_called(this, "_ZN8S10258C13v19Ev");}
void  S10258C1 ::v20(){vfunc_called(this, "_ZN8S10258C13v20Ev");}
void  S10258C1 ::v21(){vfunc_called(this, "_ZN8S10258C13v21Ev");}
void  S10258C1 ::v22(){vfunc_called(this, "_ZN8S10258C13v22Ev");}
void  S10258C1 ::v23(){vfunc_called(this, "_ZN8S10258C13v23Ev");}
void  S10258C1 ::v24(){vfunc_called(this, "_ZN8S10258C13v24Ev");}
void  S10258C1 ::v25(){vfunc_called(this, "_ZN8S10258C13v25Ev");}
void  S10258C1 ::v26(){vfunc_called(this, "_ZN8S10258C13v26Ev");}
void  S10258C1 ::v27(){vfunc_called(this, "_ZN8S10258C13v27Ev");}
void  S10258C1 ::v28(){vfunc_called(this, "_ZN8S10258C13v28Ev");}
void  S10258C1 ::v29(){vfunc_called(this, "_ZN8S10258C13v29Ev");}
void  S10258C1 ::v30(){vfunc_called(this, "_ZN8S10258C13v30Ev");}
void  S10258C1 ::v31(){vfunc_called(this, "_ZN8S10258C13v31Ev");}
void  S10258C1 ::v32(){vfunc_called(this, "_ZN8S10258C13v32Ev");}
void  S10258C1 ::v33(){vfunc_called(this, "_ZN8S10258C13v33Ev");}
void  S10258C1 ::v34(){vfunc_called(this, "_ZN8S10258C13v34Ev");}
void  S10258C1 ::v35(){vfunc_called(this, "_ZN8S10258C13v35Ev");}
void  S10258C1 ::v36(){vfunc_called(this, "_ZN8S10258C13v36Ev");}
void  S10258C1 ::v37(){vfunc_called(this, "_ZN8S10258C13v37Ev");}
void  S10258C1 ::v38(){vfunc_called(this, "_ZN8S10258C13v38Ev");}
void  S10258C1 ::v39(){vfunc_called(this, "_ZN8S10258C13v39Ev");}
void  S10258C1 ::v40(){vfunc_called(this, "_ZN8S10258C13v40Ev");}
void  S10258C1 ::v41(){vfunc_called(this, "_ZN8S10258C13v41Ev");}
void  S10258C1 ::v42(){vfunc_called(this, "_ZN8S10258C13v42Ev");}
void  S10258C1 ::v43(){vfunc_called(this, "_ZN8S10258C13v43Ev");}
void  S10258C1 ::v44(){vfunc_called(this, "_ZN8S10258C13v44Ev");}
void  S10258C1 ::v45(){vfunc_called(this, "_ZN8S10258C13v45Ev");}
void  S10258C1 ::v46(){vfunc_called(this, "_ZN8S10258C13v46Ev");}
void  S10258C1 ::v47(){vfunc_called(this, "_ZN8S10258C13v47Ev");}
void  S10258C1 ::v48(){vfunc_called(this, "_ZN8S10258C13v48Ev");}
void  S10258C1 ::v49(){vfunc_called(this, "_ZN8S10258C13v49Ev");}
void  S10258C1 ::v50(){vfunc_called(this, "_ZN8S10258C13v50Ev");}
void  S10258C1 ::v51(){vfunc_called(this, "_ZN8S10258C13v51Ev");}
void  S10258C1 ::v52(){vfunc_called(this, "_ZN8S10258C13v52Ev");}
void  S10258C1 ::v53(){vfunc_called(this, "_ZN8S10258C13v53Ev");}
void  S10258C1 ::v54(){vfunc_called(this, "_ZN8S10258C13v54Ev");}
void  S10258C1 ::v55(){vfunc_called(this, "_ZN8S10258C13v55Ev");}
void  S10258C1 ::v56(){vfunc_called(this, "_ZN8S10258C13v56Ev");}
void  S10258C1 ::v57(){vfunc_called(this, "_ZN8S10258C13v57Ev");}
void  S10258C1 ::v58(){vfunc_called(this, "_ZN8S10258C13v58Ev");}
void  S10258C1 ::v59(){vfunc_called(this, "_ZN8S10258C13v59Ev");}
void  S10258C1 ::v60(){vfunc_called(this, "_ZN8S10258C13v60Ev");}
void  S10258C1 ::v61(){vfunc_called(this, "_ZN8S10258C13v61Ev");}
void  S10258C1 ::v62(){vfunc_called(this, "_ZN8S10258C13v62Ev");}
void  S10258C1 ::v63(){vfunc_called(this, "_ZN8S10258C13v63Ev");}
void  S10258C1 ::v64(){vfunc_called(this, "_ZN8S10258C13v64Ev");}
void  S10258C1 ::v65(){vfunc_called(this, "_ZN8S10258C13v65Ev");}
void  S10258C1 ::v66(){vfunc_called(this, "_ZN8S10258C13v66Ev");}
void  S10258C1 ::v67(){vfunc_called(this, "_ZN8S10258C13v67Ev");}
void  S10258C1 ::v68(){vfunc_called(this, "_ZN8S10258C13v68Ev");}
void  S10258C1 ::v69(){vfunc_called(this, "_ZN8S10258C13v69Ev");}
void  S10258C1 ::v70(){vfunc_called(this, "_ZN8S10258C13v70Ev");}
void  S10258C1 ::v71(){vfunc_called(this, "_ZN8S10258C13v71Ev");}
void  S10258C1 ::v72(){vfunc_called(this, "_ZN8S10258C13v72Ev");}
void  S10258C1 ::v73(){vfunc_called(this, "_ZN8S10258C13v73Ev");}
void  S10258C1 ::v74(){vfunc_called(this, "_ZN8S10258C13v74Ev");}
void  S10258C1 ::v75(){vfunc_called(this, "_ZN8S10258C13v75Ev");}
void  S10258C1 ::v76(){vfunc_called(this, "_ZN8S10258C13v76Ev");}
void  S10258C1 ::v77(){vfunc_called(this, "_ZN8S10258C13v77Ev");}
void  S10258C1 ::v78(){vfunc_called(this, "_ZN8S10258C13v78Ev");}
void  S10258C1 ::v79(){vfunc_called(this, "_ZN8S10258C13v79Ev");}
void  S10258C1 ::v80(){vfunc_called(this, "_ZN8S10258C13v80Ev");}
S10258C1 ::S10258C1(){ note_ctor("S10258C1", this);} // tgen

static void Test_S10258C1()
{
  extern Class_Descriptor cd_S10258C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(55,85)];
    init_test(&cd_S10258C1, buf);
    S10258C1 *dp, &lv = *(dp=new (buf) S10258C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,336), "sizeof(S10258C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10258C1)");
    check_base_class_offset(lv, (S10258C2_nt*), 0, "S10258C1");
    check_field_offset(lv, s10258c1f0, ABISELECT(8,4), "S10258C1.s10258c1f0");
    check_field_offset(lv, s10258c1f1, ABISELECT(16,8), "S10258C1.s10258c1f1");
    check_field_offset(lv, s10258c1f2, ABISELECT(32,20), "S10258C1.s10258c1f2");
    check_field_offset(lv, s10258c1f3, ABISELECT(64,52), "S10258C1.s10258c1f3");
    check_field_offset(lv, s10258c1f4, ABISELECT(80,64), "S10258C1.s10258c1f4");
    check_field_offset(lv, s10258c1f5, ABISELECT(112,96), "S10258C1.s10258c1f5");
    check_field_offset(lv, s10258c1f6, ABISELECT(128,108), "S10258C1.s10258c1f6");
    check_field_offset(lv, s10258c1f7, ABISELECT(208,148), "S10258C1.s10258c1f7");
    check_field_offset(lv, s10258c1f8, ABISELECT(224,160), "S10258C1.s10258c1f8");
    check_field_offset(lv, s10258c1f9, ABISELECT(256,192), "S10258C1.s10258c1f9");
    check_field_offset(lv, s10258c1f10, ABISELECT(376,288), "S10258C1.s10258c1f10");
    check_field_offset(lv, s10258c1f11, ABISELECT(408,320), "S10258C1.s10258c1f11");
    check_field_offset(lv, s10258c1f12, ABISELECT(424,332), "S10258C1.s10258c1f12");
    test_class_info(&lv, &cd_S10258C1);
    dp->~S10258C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10258C1(Test_S10258C1, "S10258C1", ABISELECT(432,336));

#else // __cplusplus

extern void _ZN8S10258C1C1Ev();
extern void _ZN8S10258C1D1Ev();
Name_Map name_map_S10258C1[] = {
  NSPAIR(_ZN8S10258C1C1Ev),
  NSPAIR(_ZN8S10258C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C2_nt;
extern VTBL_ENTRY _ZTI11S10258C2_nt[];
extern  VTBL_ENTRY _ZTV11S10258C2_nt[];
static Base_Class bases_S10258C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10258C1[];
extern void _ZN8S10258C1D1Ev();
extern void _ZN8S10258C1D0Ev();
extern void _ZN11S10258C2_nt3v81Ev();
extern void _ZN11S10258C2_nt3v82Ev();
extern void _ZN11S10258C2_nt3v83Ev();
extern void _ZN11S10258C2_nt3v84Ev();
extern void _ZN11S10258C2_nt3v85Ev();
extern void _ZN11S10258C2_nt3v86Ev();
extern void _ZN11S10258C2_nt3v87Ev();
extern void _ZN11S10258C2_nt3v88Ev();
extern void _ZN11S10258C2_nt3v89Ev();
extern void _ZN11S10258C2_nt3v90Ev();
extern void _ZN11S10258C2_nt3v91Ev();
extern void _ZN11S10258C2_nt3v92Ev();
extern void _ZN11S10258C2_nt3v93Ev();
extern void _ZN11S10258C2_nt3v94Ev();
extern void _ZN11S10258C2_nt3v95Ev();
extern void _ZN11S10258C2_nt3v96Ev();
extern void _ZN11S10258C2_nt3v97Ev();
extern void _ZN11S10258C2_nt3v98Ev();
extern void _ZN11S10258C2_nt3v99Ev();
extern void _ZN11S10258C2_nt4v100Ev();
extern void _ZN11S10258C2_nt4v101Ev();
extern void _ZN11S10258C2_nt4v102Ev();
extern void _ZN11S10258C2_nt4v103Ev();
extern void _ZN11S10258C2_nt4v104Ev();
extern void _ZN11S10258C2_nt4v105Ev();
extern void _ZN11S10258C2_nt4v106Ev();
extern void _ZN11S10258C2_nt4v107Ev();
extern void _ZN11S10258C2_nt4v108Ev();
extern void _ZN11S10258C2_nt4v109Ev();
extern void _ZN11S10258C2_nt4v110Ev();
extern void _ZN11S10258C2_nt4v111Ev();
extern void _ZN11S10258C2_nt4v112Ev();
extern void _ZN11S10258C2_nt4v113Ev();
extern void _ZN11S10258C2_nt4v114Ev();
extern void _ZN11S10258C2_nt4v115Ev();
extern void _ZN11S10258C2_nt4v116Ev();
extern void _ZN11S10258C2_nt4v117Ev();
extern void _ZN11S10258C2_nt4v118Ev();
extern void _ZN11S10258C2_nt4v119Ev();
extern void _ZN11S10258C2_nt4v120Ev();
extern void _ZN11S10258C2_nt4v121Ev();
extern void _ZN11S10258C2_nt4v122Ev();
extern void _ZN11S10258C2_nt4v123Ev();
extern void _ZN11S10258C2_nt4v124Ev();
extern void _ZN11S10258C2_nt4v125Ev();
extern void _ZN11S10258C2_nt4v126Ev();
extern void _ZN11S10258C2_nt4v127Ev();
extern void _ZN11S10258C2_nt4v128Ev();
extern void _ZN11S10258C2_nt4v129Ev();
extern void _ZN11S10258C2_nt4v130Ev();
extern void _ZN11S10258C2_nt4v131Ev();
extern void _ZN11S10258C2_nt4v132Ev();
extern void _ZN11S10258C2_nt4v133Ev();
extern void _ZN11S10258C2_nt4v134Ev();
extern void _ZN11S10258C2_nt4v135Ev();
extern void _ZN11S10258C2_nt4v136Ev();
extern void _ZN11S10258C2_nt4v137Ev();
extern void _ZN11S10258C2_nt4v138Ev();
extern void _ZN11S10258C2_nt4v139Ev();
extern void _ZN11S10258C2_nt4v140Ev();
extern void _ZN11S10258C2_nt4v141Ev();
extern void _ZN11S10258C2_nt4v142Ev();
extern void _ZN11S10258C2_nt4v143Ev();
extern void _ZN11S10258C2_nt4v144Ev();
extern void _ZN11S10258C2_nt4v145Ev();
extern void _ZN11S10258C2_nt4v146Ev();
extern void _ZN11S10258C2_nt4v147Ev();
extern void _ZN11S10258C2_nt4v148Ev();
extern void _ZN11S10258C2_nt4v149Ev();
extern void _ZN11S10258C2_nt4v150Ev();
extern void _ZN11S10258C2_nt4v151Ev();
extern void _ZN11S10258C2_nt4v152Ev();
extern void _ZN11S10258C2_nt4v153Ev();
extern void _ZN11S10258C2_nt4v154Ev();
extern void _ZN11S10258C2_nt4v155Ev();
extern void _ZN11S10258C2_nt4v156Ev();
extern void _ZN11S10258C2_nt4v157Ev();
extern void _ZN11S10258C2_nt4v158Ev();
extern void _ZN11S10258C2_nt4v159Ev();
extern void _ZN11S10258C2_nt4v160Ev();
extern void _ZN8S10258C12v1Ev();
extern void _ZN8S10258C12v2Ev();
extern void _ZN8S10258C12v3Ev();
extern void _ZN8S10258C12v4Ev();
extern void _ZN8S10258C12v5Ev();
extern void _ZN8S10258C12v6Ev();
extern void _ZN8S10258C12v7Ev();
extern void _ZN8S10258C12v8Ev();
extern void _ZN8S10258C12v9Ev();
extern void _ZN8S10258C13v10Ev();
extern void _ZN8S10258C13v11Ev();
extern void _ZN8S10258C13v12Ev();
extern void _ZN8S10258C13v13Ev();
extern void _ZN8S10258C13v14Ev();
extern void _ZN8S10258C13v15Ev();
extern void _ZN8S10258C13v16Ev();
extern void _ZN8S10258C13v17Ev();
extern void _ZN8S10258C13v18Ev();
extern void _ZN8S10258C13v19Ev();
extern void _ZN8S10258C13v20Ev();
extern void _ZN8S10258C13v21Ev();
extern void _ZN8S10258C13v22Ev();
extern void _ZN8S10258C13v23Ev();
extern void _ZN8S10258C13v24Ev();
extern void _ZN8S10258C13v25Ev();
extern void _ZN8S10258C13v26Ev();
extern void _ZN8S10258C13v27Ev();
extern void _ZN8S10258C13v28Ev();
extern void _ZN8S10258C13v29Ev();
extern void _ZN8S10258C13v30Ev();
extern void _ZN8S10258C13v31Ev();
extern void _ZN8S10258C13v32Ev();
extern void _ZN8S10258C13v33Ev();
extern void _ZN8S10258C13v34Ev();
extern void _ZN8S10258C13v35Ev();
extern void _ZN8S10258C13v36Ev();
extern void _ZN8S10258C13v37Ev();
extern void _ZN8S10258C13v38Ev();
extern void _ZN8S10258C13v39Ev();
extern void _ZN8S10258C13v40Ev();
extern void _ZN8S10258C13v41Ev();
extern void _ZN8S10258C13v42Ev();
extern void _ZN8S10258C13v43Ev();
extern void _ZN8S10258C13v44Ev();
extern void _ZN8S10258C13v45Ev();
extern void _ZN8S10258C13v46Ev();
extern void _ZN8S10258C13v47Ev();
extern void _ZN8S10258C13v48Ev();
extern void _ZN8S10258C13v49Ev();
extern void _ZN8S10258C13v50Ev();
extern void _ZN8S10258C13v51Ev();
extern void _ZN8S10258C13v52Ev();
extern void _ZN8S10258C13v53Ev();
extern void _ZN8S10258C13v54Ev();
extern void _ZN8S10258C13v55Ev();
extern void _ZN8S10258C13v56Ev();
extern void _ZN8S10258C13v57Ev();
extern void _ZN8S10258C13v58Ev();
extern void _ZN8S10258C13v59Ev();
extern void _ZN8S10258C13v60Ev();
extern void _ZN8S10258C13v61Ev();
extern void _ZN8S10258C13v62Ev();
extern void _ZN8S10258C13v63Ev();
extern void _ZN8S10258C13v64Ev();
extern void _ZN8S10258C13v65Ev();
extern void _ZN8S10258C13v66Ev();
extern void _ZN8S10258C13v67Ev();
extern void _ZN8S10258C13v68Ev();
extern void _ZN8S10258C13v69Ev();
extern void _ZN8S10258C13v70Ev();
extern void _ZN8S10258C13v71Ev();
extern void _ZN8S10258C13v72Ev();
extern void _ZN8S10258C13v73Ev();
extern void _ZN8S10258C13v74Ev();
extern void _ZN8S10258C13v75Ev();
extern void _ZN8S10258C13v76Ev();
extern void _ZN8S10258C13v77Ev();
extern void _ZN8S10258C13v78Ev();
extern void _ZN8S10258C13v79Ev();
extern void _ZN8S10258C13v80Ev();
static  VTBL_ENTRY vtc_S10258C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10258C1[0]),
  (VTBL_ENTRY)&_ZN8S10258C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10258C1D0Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v81Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v82Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v83Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v84Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v85Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v86Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v87Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v88Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v89Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v90Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v158Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v159Ev,
  (VTBL_ENTRY)&_ZN11S10258C2_nt4v160Ev,
  (VTBL_ENTRY)&_ZN8S10258C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10258C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10258C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10258C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10258C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10258C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10258C12v7Ev,
  (VTBL_ENTRY)&_ZN8S10258C12v8Ev,
  (VTBL_ENTRY)&_ZN8S10258C12v9Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v10Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v11Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v12Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v13Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v14Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v15Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v16Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v17Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v18Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v19Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v20Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v21Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v22Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v23Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v24Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v25Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v26Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v27Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v28Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v29Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v30Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v31Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v32Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v33Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v34Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v35Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v36Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v37Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v38Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v39Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v40Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v41Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v42Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v43Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v44Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v45Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v46Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v47Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v48Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v49Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v50Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v51Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v52Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v53Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v54Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v55Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v56Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v57Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v58Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v59Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v60Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v61Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v62Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v63Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v64Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v65Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v66Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v67Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v68Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v69Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v70Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v71Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v72Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v73Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v74Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v75Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v76Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v77Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v78Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v79Ev,
  (VTBL_ENTRY)&_ZN8S10258C13v80Ev,
};
extern VTBL_ENTRY _ZTI8S10258C1[];
extern  VTBL_ENTRY _ZTV8S10258C1[];
Class_Descriptor cd_S10258C1 = {  "S10258C1", // class name
  bases_S10258C1, 1,
  &(vtc_S10258C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(432,336), // object size
  NSPAIRA(_ZTI8S10258C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10258C1),164, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S197C6  {
  int s197c6f0;
  __tsi64 s197c6f1;
  void *s197c6f2[4];
  int s197c6f3[2];
  void *s197c6f4;
  ::S3214C4_nt s197c6f5;
  void *s197c6f6[2];
  virtual  ~S197C6(); // _ZN6S197C6D1Ev
  virtual void  v4(); // _ZN6S197C62v4Ev
  virtual void  v5(); // _ZN6S197C62v5Ev
  virtual void  v6(); // _ZN6S197C62v6Ev
  virtual void  v7(); // _ZN6S197C62v7Ev
  virtual void  v8(); // _ZN6S197C62v8Ev
  virtual void  v9(); // _ZN6S197C62v9Ev
  virtual void  v10(); // _ZN6S197C63v10Ev
  virtual void  v11(); // _ZN6S197C63v11Ev
  virtual void  v12(); // _ZN6S197C63v12Ev
  virtual void  v13(); // _ZN6S197C63v13Ev
  virtual void  v14(); // _ZN6S197C63v14Ev
  virtual void  v15(); // _ZN6S197C63v15Ev
  virtual void  v16(); // _ZN6S197C63v16Ev
  virtual void  v17(); // _ZN6S197C63v17Ev
  virtual void  v18(); // _ZN6S197C63v18Ev
  virtual void  v19(); // _ZN6S197C63v19Ev
  virtual void  v20(); // _ZN6S197C63v20Ev
  virtual void  v21(); // _ZN6S197C63v21Ev
  virtual void  v22(); // _ZN6S197C63v22Ev
  virtual void  v23(); // _ZN6S197C63v23Ev
  virtual void  v24(); // _ZN6S197C63v24Ev
  virtual void  v25(); // _ZN6S197C63v25Ev
  virtual void  v26(); // _ZN6S197C63v26Ev
  virtual void  v27(); // _ZN6S197C63v27Ev
  virtual void  v28(); // _ZN6S197C63v28Ev
  virtual void  v29(); // _ZN6S197C63v29Ev
  virtual void  v30(); // _ZN6S197C63v30Ev
  virtual void  v31(); // _ZN6S197C63v31Ev
  virtual void  v32(); // _ZN6S197C63v32Ev
  virtual void  v33(); // _ZN6S197C63v33Ev
  virtual void  v34(); // _ZN6S197C63v34Ev
  virtual void  v35(); // _ZN6S197C63v35Ev
  virtual void  v36(); // _ZN6S197C63v36Ev
  virtual void  v37(); // _ZN6S197C63v37Ev
  virtual void  v38(); // _ZN6S197C63v38Ev
  virtual void  v39(); // _ZN6S197C63v39Ev
  virtual void  v40(); // _ZN6S197C63v40Ev
  virtual void  v41(); // _ZN6S197C63v41Ev
  virtual void  v42(); // _ZN6S197C63v42Ev
  virtual void  v43(); // _ZN6S197C63v43Ev
  virtual void  v44(); // _ZN6S197C63v44Ev
  virtual void  v45(); // _ZN6S197C63v45Ev
  virtual void  v46(); // _ZN6S197C63v46Ev
  virtual void  v47(); // _ZN6S197C63v47Ev
  virtual void  v48(); // _ZN6S197C63v48Ev
  virtual void  v49(); // _ZN6S197C63v49Ev
  virtual void  v50(); // _ZN6S197C63v50Ev
  virtual void  v51(); // _ZN6S197C63v51Ev
  virtual void  v52(); // _ZN6S197C63v52Ev
  virtual void  v53(); // _ZN6S197C63v53Ev
  virtual void  v54(); // _ZN6S197C63v54Ev
  virtual void  v55(); // _ZN6S197C63v55Ev
  virtual void  v56(); // _ZN6S197C63v56Ev
  virtual void  v57(); // _ZN6S197C63v57Ev
  virtual void  v58(); // _ZN6S197C63v58Ev
  virtual void  v59(); // _ZN6S197C63v59Ev
  virtual void  v60(); // _ZN6S197C63v60Ev
  virtual void  v61(); // _ZN6S197C63v61Ev
  virtual void  v62(); // _ZN6S197C63v62Ev
  virtual void  v63(); // _ZN6S197C63v63Ev
  virtual void  v64(); // _ZN6S197C63v64Ev
  virtual void  v65(); // _ZN6S197C63v65Ev
  virtual void  v66(); // _ZN6S197C63v66Ev
  virtual void  v67(); // _ZN6S197C63v67Ev
  S197C6(); // tgen
};
//SIG(-1 S197C6) 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]}


 S197C6 ::~S197C6(){ note_dtor("S197C6", this);}
void  S197C6 ::v4(){vfunc_called(this, "_ZN6S197C62v4Ev");}
void  S197C6 ::v5(){vfunc_called(this, "_ZN6S197C62v5Ev");}
void  S197C6 ::v6(){vfunc_called(this, "_ZN6S197C62v6Ev");}
void  S197C6 ::v7(){vfunc_called(this, "_ZN6S197C62v7Ev");}
void  S197C6 ::v8(){vfunc_called(this, "_ZN6S197C62v8Ev");}
void  S197C6 ::v9(){vfunc_called(this, "_ZN6S197C62v9Ev");}
void  S197C6 ::v10(){vfunc_called(this, "_ZN6S197C63v10Ev");}
void  S197C6 ::v11(){vfunc_called(this, "_ZN6S197C63v11Ev");}
void  S197C6 ::v12(){vfunc_called(this, "_ZN6S197C63v12Ev");}
void  S197C6 ::v13(){vfunc_called(this, "_ZN6S197C63v13Ev");}
void  S197C6 ::v14(){vfunc_called(this, "_ZN6S197C63v14Ev");}
void  S197C6 ::v15(){vfunc_called(this, "_ZN6S197C63v15Ev");}
void  S197C6 ::v16(){vfunc_called(this, "_ZN6S197C63v16Ev");}
void  S197C6 ::v17(){vfunc_called(this, "_ZN6S197C63v17Ev");}
void  S197C6 ::v18(){vfunc_called(this, "_ZN6S197C63v18Ev");}
void  S197C6 ::v19(){vfunc_called(this, "_ZN6S197C63v19Ev");}
void  S197C6 ::v20(){vfunc_called(this, "_ZN6S197C63v20Ev");}
void  S197C6 ::v21(){vfunc_called(this, "_ZN6S197C63v21Ev");}
void  S197C6 ::v22(){vfunc_called(this, "_ZN6S197C63v22Ev");}
void  S197C6 ::v23(){vfunc_called(this, "_ZN6S197C63v23Ev");}
void  S197C6 ::v24(){vfunc_called(this, "_ZN6S197C63v24Ev");}
void  S197C6 ::v25(){vfunc_called(this, "_ZN6S197C63v25Ev");}
void  S197C6 ::v26(){vfunc_called(this, "_ZN6S197C63v26Ev");}
void  S197C6 ::v27(){vfunc_called(this, "_ZN6S197C63v27Ev");}
void  S197C6 ::v28(){vfunc_called(this, "_ZN6S197C63v28Ev");}
void  S197C6 ::v29(){vfunc_called(this, "_ZN6S197C63v29Ev");}
void  S197C6 ::v30(){vfunc_called(this, "_ZN6S197C63v30Ev");}
void  S197C6 ::v31(){vfunc_called(this, "_ZN6S197C63v31Ev");}
void  S197C6 ::v32(){vfunc_called(this, "_ZN6S197C63v32Ev");}
void  S197C6 ::v33(){vfunc_called(this, "_ZN6S197C63v33Ev");}
void  S197C6 ::v34(){vfunc_called(this, "_ZN6S197C63v34Ev");}
void  S197C6 ::v35(){vfunc_called(this, "_ZN6S197C63v35Ev");}
void  S197C6 ::v36(){vfunc_called(this, "_ZN6S197C63v36Ev");}
void  S197C6 ::v37(){vfunc_called(this, "_ZN6S197C63v37Ev");}
void  S197C6 ::v38(){vfunc_called(this, "_ZN6S197C63v38Ev");}
void  S197C6 ::v39(){vfunc_called(this, "_ZN6S197C63v39Ev");}
void  S197C6 ::v40(){vfunc_called(this, "_ZN6S197C63v40Ev");}
void  S197C6 ::v41(){vfunc_called(this, "_ZN6S197C63v41Ev");}
void  S197C6 ::v42(){vfunc_called(this, "_ZN6S197C63v42Ev");}
void  S197C6 ::v43(){vfunc_called(this, "_ZN6S197C63v43Ev");}
void  S197C6 ::v44(){vfunc_called(this, "_ZN6S197C63v44Ev");}
void  S197C6 ::v45(){vfunc_called(this, "_ZN6S197C63v45Ev");}
void  S197C6 ::v46(){vfunc_called(this, "_ZN6S197C63v46Ev");}
void  S197C6 ::v47(){vfunc_called(this, "_ZN6S197C63v47Ev");}
void  S197C6 ::v48(){vfunc_called(this, "_ZN6S197C63v48Ev");}
void  S197C6 ::v49(){vfunc_called(this, "_ZN6S197C63v49Ev");}
void  S197C6 ::v50(){vfunc_called(this, "_ZN6S197C63v50Ev");}
void  S197C6 ::v51(){vfunc_called(this, "_ZN6S197C63v51Ev");}
void  S197C6 ::v52(){vfunc_called(this, "_ZN6S197C63v52Ev");}
void  S197C6 ::v53(){vfunc_called(this, "_ZN6S197C63v53Ev");}
void  S197C6 ::v54(){vfunc_called(this, "_ZN6S197C63v54Ev");}
void  S197C6 ::v55(){vfunc_called(this, "_ZN6S197C63v55Ev");}
void  S197C6 ::v56(){vfunc_called(this, "_ZN6S197C63v56Ev");}
void  S197C6 ::v57(){vfunc_called(this, "_ZN6S197C63v57Ev");}
void  S197C6 ::v58(){vfunc_called(this, "_ZN6S197C63v58Ev");}
void  S197C6 ::v59(){vfunc_called(this, "_ZN6S197C63v59Ev");}
void  S197C6 ::v60(){vfunc_called(this, "_ZN6S197C63v60Ev");}
void  S197C6 ::v61(){vfunc_called(this, "_ZN6S197C63v61Ev");}
void  S197C6 ::v62(){vfunc_called(this, "_ZN6S197C63v62Ev");}
void  S197C6 ::v63(){vfunc_called(this, "_ZN6S197C63v63Ev");}
void  S197C6 ::v64(){vfunc_called(this, "_ZN6S197C63v64Ev");}
void  S197C6 ::v65(){vfunc_called(this, "_ZN6S197C63v65Ev");}
void  S197C6 ::v66(){vfunc_called(this, "_ZN6S197C63v66Ev");}
void  S197C6 ::v67(){vfunc_called(this, "_ZN6S197C63v67Ev");}
S197C6 ::S197C6(){ note_ctor("S197C6", this);} // tgen

static void Test_S197C6()
{
  extern Class_Descriptor cd_S197C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S197C6, buf);
    S197C6 *dp, &lv = *(dp=new (buf) S197C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S197C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S197C6)");
    check_field_offset(lv, s197c6f0, ABISELECT(8,4), "S197C6.s197c6f0");
    check_field_offset(lv, s197c6f1, ABISELECT(16,8), "S197C6.s197c6f1");
    check_field_offset(lv, s197c6f2, ABISELECT(24,16), "S197C6.s197c6f2");
    check_field_offset(lv, s197c6f3, ABISELECT(56,32), "S197C6.s197c6f3");
    check_field_offset(lv, s197c6f4, ABISELECT(64,40), "S197C6.s197c6f4");
    check_field_offset(lv, s197c6f5, ABISELECT(72,44), "S197C6.s197c6f5");
    check_field_offset(lv, s197c6f6, ABISELECT(80,52), "S197C6.s197c6f6");
    test_class_info(&lv, &cd_S197C6);
    dp->~S197C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS197C6(Test_S197C6, "S197C6", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S197C6C1Ev();
extern void _ZN6S197C6D1Ev();
Name_Map name_map_S197C6[] = {
  NSPAIR(_ZN6S197C6C1Ev),
  NSPAIR(_ZN6S197C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S197C6[];
extern void _ZN6S197C6D1Ev();
extern void _ZN6S197C6D0Ev();
extern void _ZN6S197C62v4Ev();
extern void _ZN6S197C62v5Ev();
extern void _ZN6S197C62v6Ev();
extern void _ZN6S197C62v7Ev();
extern void _ZN6S197C62v8Ev();
extern void _ZN6S197C62v9Ev();
extern void _ZN6S197C63v10Ev();
extern void _ZN6S197C63v11Ev();
extern void _ZN6S197C63v12Ev();
extern void _ZN6S197C63v13Ev();
extern void _ZN6S197C63v14Ev();
extern void _ZN6S197C63v15Ev();
extern void _ZN6S197C63v16Ev();
extern void _ZN6S197C63v17Ev();
extern void _ZN6S197C63v18Ev();
extern void _ZN6S197C63v19Ev();
extern void _ZN6S197C63v20Ev();
extern void _ZN6S197C63v21Ev();
extern void _ZN6S197C63v22Ev();
extern void _ZN6S197C63v23Ev();
extern void _ZN6S197C63v24Ev();
extern void _ZN6S197C63v25Ev();
extern void _ZN6S197C63v26Ev();
extern void _ZN6S197C63v27Ev();
extern void _ZN6S197C63v28Ev();
extern void _ZN6S197C63v29Ev();
extern void _ZN6S197C63v30Ev();
extern void _ZN6S197C63v31Ev();
extern void _ZN6S197C63v32Ev();
extern void _ZN6S197C63v33Ev();
extern void _ZN6S197C63v34Ev();
extern void _ZN6S197C63v35Ev();
extern void _ZN6S197C63v36Ev();
extern void _ZN6S197C63v37Ev();
extern void _ZN6S197C63v38Ev();
extern void _ZN6S197C63v39Ev();
extern void _ZN6S197C63v40Ev();
extern void _ZN6S197C63v41Ev();
extern void _ZN6S197C63v42Ev();
extern void _ZN6S197C63v43Ev();
extern void _ZN6S197C63v44Ev();
extern void _ZN6S197C63v45Ev();
extern void _ZN6S197C63v46Ev();
extern void _ZN6S197C63v47Ev();
extern void _ZN6S197C63v48Ev();
extern void _ZN6S197C63v49Ev();
extern void _ZN6S197C63v50Ev();
extern void _ZN6S197C63v51Ev();
extern void _ZN6S197C63v52Ev();
extern void _ZN6S197C63v53Ev();
extern void _ZN6S197C63v54Ev();
extern void _ZN6S197C63v55Ev();
extern void _ZN6S197C63v56Ev();
extern void _ZN6S197C63v57Ev();
extern void _ZN6S197C63v58Ev();
extern void _ZN6S197C63v59Ev();
extern void _ZN6S197C63v60Ev();
extern void _ZN6S197C63v61Ev();
extern void _ZN6S197C63v62Ev();
extern void _ZN6S197C63v63Ev();
extern void _ZN6S197C63v64Ev();
extern void _ZN6S197C63v65Ev();
extern void _ZN6S197C63v66Ev();
extern void _ZN6S197C63v67Ev();
static  VTBL_ENTRY vtc_S197C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S197C6[0]),
  (VTBL_ENTRY)&_ZN6S197C6D1Ev,
  (VTBL_ENTRY)&_ZN6S197C6D0Ev,
  (VTBL_ENTRY)&_ZN6S197C62v4Ev,
  (VTBL_ENTRY)&_ZN6S197C62v5Ev,
  (VTBL_ENTRY)&_ZN6S197C62v6Ev,
  (VTBL_ENTRY)&_ZN6S197C62v7Ev,
  (VTBL_ENTRY)&_ZN6S197C62v8Ev,
  (VTBL_ENTRY)&_ZN6S197C62v9Ev,
  (VTBL_ENTRY)&_ZN6S197C63v10Ev,
  (VTBL_ENTRY)&_ZN6S197C63v11Ev,
  (VTBL_ENTRY)&_ZN6S197C63v12Ev,
  (VTBL_ENTRY)&_ZN6S197C63v13Ev,
  (VTBL_ENTRY)&_ZN6S197C63v14Ev,
  (VTBL_ENTRY)&_ZN6S197C63v15Ev,
  (VTBL_ENTRY)&_ZN6S197C63v16Ev,
  (VTBL_ENTRY)&_ZN6S197C63v17Ev,
  (VTBL_ENTRY)&_ZN6S197C63v18Ev,
  (VTBL_ENTRY)&_ZN6S197C63v19Ev,
  (VTBL_ENTRY)&_ZN6S197C63v20Ev,
  (VTBL_ENTRY)&_ZN6S197C63v21Ev,
  (VTBL_ENTRY)&_ZN6S197C63v22Ev,
  (VTBL_ENTRY)&_ZN6S197C63v23Ev,
  (VTBL_ENTRY)&_ZN6S197C63v24Ev,
  (VTBL_ENTRY)&_ZN6S197C63v25Ev,
  (VTBL_ENTRY)&_ZN6S197C63v26Ev,
  (VTBL_ENTRY)&_ZN6S197C63v27Ev,
  (VTBL_ENTRY)&_ZN6S197C63v28Ev,
  (VTBL_ENTRY)&_ZN6S197C63v29Ev,
  (VTBL_ENTRY)&_ZN6S197C63v30Ev,
  (VTBL_ENTRY)&_ZN6S197C63v31Ev,
  (VTBL_ENTRY)&_ZN6S197C63v32Ev,
  (VTBL_ENTRY)&_ZN6S197C63v33Ev,
  (VTBL_ENTRY)&_ZN6S197C63v34Ev,
  (VTBL_ENTRY)&_ZN6S197C63v35Ev,
  (VTBL_ENTRY)&_ZN6S197C63v36Ev,
  (VTBL_ENTRY)&_ZN6S197C63v37Ev,
  (VTBL_ENTRY)&_ZN6S197C63v38Ev,
  (VTBL_ENTRY)&_ZN6S197C63v39Ev,
  (VTBL_ENTRY)&_ZN6S197C63v40Ev,
  (VTBL_ENTRY)&_ZN6S197C63v41Ev,
  (VTBL_ENTRY)&_ZN6S197C63v42Ev,
  (VTBL_ENTRY)&_ZN6S197C63v43Ev,
  (VTBL_ENTRY)&_ZN6S197C63v44Ev,
  (VTBL_ENTRY)&_ZN6S197C63v45Ev,
  (VTBL_ENTRY)&_ZN6S197C63v46Ev,
  (VTBL_ENTRY)&_ZN6S197C63v47Ev,
  (VTBL_ENTRY)&_ZN6S197C63v48Ev,
  (VTBL_ENTRY)&_ZN6S197C63v49Ev,
  (VTBL_ENTRY)&_ZN6S197C63v50Ev,
  (VTBL_ENTRY)&_ZN6S197C63v51Ev,
  (VTBL_ENTRY)&_ZN6S197C63v52Ev,
  (VTBL_ENTRY)&_ZN6S197C63v53Ev,
  (VTBL_ENTRY)&_ZN6S197C63v54Ev,
  (VTBL_ENTRY)&_ZN6S197C63v55Ev,
  (VTBL_ENTRY)&_ZN6S197C63v56Ev,
  (VTBL_ENTRY)&_ZN6S197C63v57Ev,
  (VTBL_ENTRY)&_ZN6S197C63v58Ev,
  (VTBL_ENTRY)&_ZN6S197C63v59Ev,
  (VTBL_ENTRY)&_ZN6S197C63v60Ev,
  (VTBL_ENTRY)&_ZN6S197C63v61Ev,
  (VTBL_ENTRY)&_ZN6S197C63v62Ev,
  (VTBL_ENTRY)&_ZN6S197C63v63Ev,
  (VTBL_ENTRY)&_ZN6S197C63v64Ev,
  (VTBL_ENTRY)&_ZN6S197C63v65Ev,
  (VTBL_ENTRY)&_ZN6S197C63v66Ev,
  (VTBL_ENTRY)&_ZN6S197C63v67Ev,
};
extern VTBL_ENTRY _ZTI6S197C6[];
extern  VTBL_ENTRY _ZTV6S197C6[];
Class_Descriptor cd_S197C6 = {  "S197C6", // class name
  0,0,//no base classes
  &(vtc_S197C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S197C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S197C6),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  S197C5_nt  : S197C6 {
  int s197c5f0[2];
  void *s197c5f1;
  int s197c5f2[2];
  ::S3214C21_nt s197c5f3;
  ::S3214C21_nt s197c5f4;
  ::S4227C37 s197c5f5;
  ::S3214C21_nt s197c5f6;
  unsigned int s197c5f7:1;
  unsigned int s197c5f8:1;
  unsigned int s197c5f9:1;
  unsigned int s197c5f10:1;
  unsigned int s197c5f11:1;
  int s197c5f12[2];
  virtual  ~S197C5_nt(); // _ZN9S197C5_ntD1Ev
  virtual void  v68(); // _ZN9S197C5_nt3v68Ev
  virtual void  v69(); // _ZN9S197C5_nt3v69Ev
  virtual void  v70(); // _ZN9S197C5_nt3v70Ev
  virtual void  v71(); // _ZN9S197C5_nt3v71Ev
  virtual void  v72(); // _ZN9S197C5_nt3v72Ev
  virtual void  v73(); // _ZN9S197C5_nt3v73Ev
  virtual void  v74(); // _ZN9S197C5_nt3v74Ev
  virtual void  v75(); // _ZN9S197C5_nt3v75Ev
  virtual void  v76(); // _ZN9S197C5_nt3v76Ev
  virtual void  v77(); // _ZN9S197C5_nt3v77Ev
  virtual void  v78(); // _ZN9S197C5_nt3v78Ev
  virtual void  v79(); // _ZN9S197C5_nt3v79Ev
  virtual void  v80(); // _ZN9S197C5_nt3v80Ev
  virtual void  v81(); // _ZN9S197C5_nt3v81Ev
  virtual void  v82(); // _ZN9S197C5_nt3v82Ev
  virtual void  v83(); // _ZN9S197C5_nt3v83Ev
  virtual void  v84(); // _ZN9S197C5_nt3v84Ev
  virtual void  v85(); // _ZN9S197C5_nt3v85Ev
  virtual void  v86(); // _ZN9S197C5_nt3v86Ev
  virtual void  v87(); // _ZN9S197C5_nt3v87Ev
  virtual void  v88(); // _ZN9S197C5_nt3v88Ev
  virtual void  v89(); // _ZN9S197C5_nt3v89Ev
  S197C5_nt(); // tgen
};
//SIG(-1 S197C5_nt) C1{ BC2{ vd v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fi[2] Fp Fi[2] FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} FC4 FC8{ m} FC4 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]}


 S197C5_nt ::~S197C5_nt(){ note_dtor("S197C5_nt", this);}
void  S197C5_nt ::v68(){vfunc_called(this, "_ZN9S197C5_nt3v68Ev");}
void  S197C5_nt ::v69(){vfunc_called(this, "_ZN9S197C5_nt3v69Ev");}
void  S197C5_nt ::v70(){vfunc_called(this, "_ZN9S197C5_nt3v70Ev");}
void  S197C5_nt ::v71(){vfunc_called(this, "_ZN9S197C5_nt3v71Ev");}
void  S197C5_nt ::v72(){vfunc_called(this, "_ZN9S197C5_nt3v72Ev");}
void  S197C5_nt ::v73(){vfunc_called(this, "_ZN9S197C5_nt3v73Ev");}
void  S197C5_nt ::v74(){vfunc_called(this, "_ZN9S197C5_nt3v74Ev");}
void  S197C5_nt ::v75(){vfunc_called(this, "_ZN9S197C5_nt3v75Ev");}
void  S197C5_nt ::v76(){vfunc_called(this, "_ZN9S197C5_nt3v76Ev");}
void  S197C5_nt ::v77(){vfunc_called(this, "_ZN9S197C5_nt3v77Ev");}
void  S197C5_nt ::v78(){vfunc_called(this, "_ZN9S197C5_nt3v78Ev");}
void  S197C5_nt ::v79(){vfunc_called(this, "_ZN9S197C5_nt3v79Ev");}
void  S197C5_nt ::v80(){vfunc_called(this, "_ZN9S197C5_nt3v80Ev");}
void  S197C5_nt ::v81(){vfunc_called(this, "_ZN9S197C5_nt3v81Ev");}
void  S197C5_nt ::v82(){vfunc_called(this, "_ZN9S197C5_nt3v82Ev");}
void  S197C5_nt ::v83(){vfunc_called(this, "_ZN9S197C5_nt3v83Ev");}
void  S197C5_nt ::v84(){vfunc_called(this, "_ZN9S197C5_nt3v84Ev");}
void  S197C5_nt ::v85(){vfunc_called(this, "_ZN9S197C5_nt3v85Ev");}
void  S197C5_nt ::v86(){vfunc_called(this, "_ZN9S197C5_nt3v86Ev");}
void  S197C5_nt ::v87(){vfunc_called(this, "_ZN9S197C5_nt3v87Ev");}
void  S197C5_nt ::v88(){vfunc_called(this, "_ZN9S197C5_nt3v88Ev");}
void  S197C5_nt ::v89(){vfunc_called(this, "_ZN9S197C5_nt3v89Ev");}
S197C5_nt ::S197C5_nt(){ note_ctor("S197C5_nt", this);} // tgen

//skip512 S197C5_nt

#else // __cplusplus

extern void _ZN9S197C5_ntC1Ev();
extern void _ZN9S197C5_ntD1Ev();
Name_Map name_map_S197C5_nt[] = {
  NSPAIR(_ZN9S197C5_ntC1Ev),
  NSPAIR(_ZN9S197C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S197C6;
extern VTBL_ENTRY _ZTI6S197C6[];
extern  VTBL_ENTRY _ZTV6S197C6[];
static Base_Class bases_S197C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S197C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S197C5_nt[];
extern void _ZN9S197C5_ntD1Ev();
extern void _ZN9S197C5_ntD0Ev();
extern void _ZN6S197C62v4Ev();
extern void _ZN6S197C62v5Ev();
extern void _ZN6S197C62v6Ev();
extern void _ZN6S197C62v7Ev();
extern void _ZN6S197C62v8Ev();
extern void _ZN6S197C62v9Ev();
extern void _ZN6S197C63v10Ev();
extern void _ZN6S197C63v11Ev();
extern void _ZN6S197C63v12Ev();
extern void _ZN6S197C63v13Ev();
extern void _ZN6S197C63v14Ev();
extern void _ZN6S197C63v15Ev();
extern void _ZN6S197C63v16Ev();
extern void _ZN6S197C63v17Ev();
extern void _ZN6S197C63v18Ev();
extern void _ZN6S197C63v19Ev();
extern void _ZN6S197C63v20Ev();
extern void _ZN6S197C63v21Ev();
extern void _ZN6S197C63v22Ev();
extern void _ZN6S197C63v23Ev();
extern void _ZN6S197C63v24Ev();
extern void _ZN6S197C63v25Ev();
extern void _ZN6S197C63v26Ev();
extern void _ZN6S197C63v27Ev();
extern void _ZN6S197C63v28Ev();
extern void _ZN6S197C63v29Ev();
extern void _ZN6S197C63v30Ev();
extern void _ZN6S197C63v31Ev();
extern void _ZN6S197C63v32Ev();
extern void _ZN6S197C63v33Ev();
extern void _ZN6S197C63v34Ev();
extern void _ZN6S197C63v35Ev();
extern void _ZN6S197C63v36Ev();
extern void _ZN6S197C63v37Ev();
extern void _ZN6S197C63v38Ev();
extern void _ZN6S197C63v39Ev();
extern void _ZN6S197C63v40Ev();
extern void _ZN6S197C63v41Ev();
extern void _ZN6S197C63v42Ev();
extern void _ZN6S197C63v43Ev();
extern void _ZN6S197C63v44Ev();
extern void _ZN6S197C63v45Ev();
extern void _ZN6S197C63v46Ev();
extern void _ZN6S197C63v47Ev();
extern void _ZN6S197C63v48Ev();
extern void _ZN6S197C63v49Ev();
extern void _ZN6S197C63v50Ev();
extern void _ZN6S197C63v51Ev();
extern void _ZN6S197C63v52Ev();
extern void _ZN6S197C63v53Ev();
extern void _ZN6S197C63v54Ev();
extern void _ZN6S197C63v55Ev();
extern void _ZN6S197C63v56Ev();
extern void _ZN6S197C63v57Ev();
extern void _ZN6S197C63v58Ev();
extern void _ZN6S197C63v59Ev();
extern void _ZN6S197C63v60Ev();
extern void _ZN6S197C63v61Ev();
extern void _ZN6S197C63v62Ev();
extern void _ZN6S197C63v63Ev();
extern void _ZN6S197C63v64Ev();
extern void _ZN6S197C63v65Ev();
extern void _ZN6S197C63v66Ev();
extern void _ZN6S197C63v67Ev();
extern void _ZN9S197C5_nt3v68Ev();
extern void _ZN9S197C5_nt3v69Ev();
extern void _ZN9S197C5_nt3v70Ev();
extern void _ZN9S197C5_nt3v71Ev();
extern void _ZN9S197C5_nt3v72Ev();
extern void _ZN9S197C5_nt3v73Ev();
extern void _ZN9S197C5_nt3v74Ev();
extern void _ZN9S197C5_nt3v75Ev();
extern void _ZN9S197C5_nt3v76Ev();
extern void _ZN9S197C5_nt3v77Ev();
extern void _ZN9S197C5_nt3v78Ev();
extern void _ZN9S197C5_nt3v79Ev();
extern void _ZN9S197C5_nt3v80Ev();
extern void _ZN9S197C5_nt3v81Ev();
extern void _ZN9S197C5_nt3v82Ev();
extern void _ZN9S197C5_nt3v83Ev();
extern void _ZN9S197C5_nt3v84Ev();
extern void _ZN9S197C5_nt3v85Ev();
extern void _ZN9S197C5_nt3v86Ev();
extern void _ZN9S197C5_nt3v87Ev();
extern void _ZN9S197C5_nt3v88Ev();
extern void _ZN9S197C5_nt3v89Ev();
static  VTBL_ENTRY vtc_S197C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S197C5_nt[0]),
  (VTBL_ENTRY)&_ZN9S197C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S197C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S197C62v4Ev,
  (VTBL_ENTRY)&_ZN6S197C62v5Ev,
  (VTBL_ENTRY)&_ZN6S197C62v6Ev,
  (VTBL_ENTRY)&_ZN6S197C62v7Ev,
  (VTBL_ENTRY)&_ZN6S197C62v8Ev,
  (VTBL_ENTRY)&_ZN6S197C62v9Ev,
  (VTBL_ENTRY)&_ZN6S197C63v10Ev,
  (VTBL_ENTRY)&_ZN6S197C63v11Ev,
  (VTBL_ENTRY)&_ZN6S197C63v12Ev,
  (VTBL_ENTRY)&_ZN6S197C63v13Ev,
  (VTBL_ENTRY)&_ZN6S197C63v14Ev,
  (VTBL_ENTRY)&_ZN6S197C63v15Ev,
  (VTBL_ENTRY)&_ZN6S197C63v16Ev,
  (VTBL_ENTRY)&_ZN6S197C63v17Ev,
  (VTBL_ENTRY)&_ZN6S197C63v18Ev,
  (VTBL_ENTRY)&_ZN6S197C63v19Ev,
  (VTBL_ENTRY)&_ZN6S197C63v20Ev,
  (VTBL_ENTRY)&_ZN6S197C63v21Ev,
  (VTBL_ENTRY)&_ZN6S197C63v22Ev,
  (VTBL_ENTRY)&_ZN6S197C63v23Ev,
  (VTBL_ENTRY)&_ZN6S197C63v24Ev,
  (VTBL_ENTRY)&_ZN6S197C63v25Ev,
  (VTBL_ENTRY)&_ZN6S197C63v26Ev,
  (VTBL_ENTRY)&_ZN6S197C63v27Ev,
  (VTBL_ENTRY)&_ZN6S197C63v28Ev,
  (VTBL_ENTRY)&_ZN6S197C63v29Ev,
  (VTBL_ENTRY)&_ZN6S197C63v30Ev,
  (VTBL_ENTRY)&_ZN6S197C63v31Ev,
  (VTBL_ENTRY)&_ZN6S197C63v32Ev,
  (VTBL_ENTRY)&_ZN6S197C63v33Ev,
  (VTBL_ENTRY)&_ZN6S197C63v34Ev,
  (VTBL_ENTRY)&_ZN6S197C63v35Ev,
  (VTBL_ENTRY)&_ZN6S197C63v36Ev,
  (VTBL_ENTRY)&_ZN6S197C63v37Ev,
  (VTBL_ENTRY)&_ZN6S197C63v38Ev,
  (VTBL_ENTRY)&_ZN6S197C63v39Ev,
  (VTBL_ENTRY)&_ZN6S197C63v40Ev,
  (VTBL_ENTRY)&_ZN6S197C63v41Ev,
  (VTBL_ENTRY)&_ZN6S197C63v42Ev,
  (VTBL_ENTRY)&_ZN6S197C63v43Ev,
  (VTBL_ENTRY)&_ZN6S197C63v44Ev,
  (VTBL_ENTRY)&_ZN6S197C63v45Ev,
  (VTBL_ENTRY)&_ZN6S197C63v46Ev,
  (VTBL_ENTRY)&_ZN6S197C63v47Ev,
  (VTBL_ENTRY)&_ZN6S197C63v48Ev,
  (VTBL_ENTRY)&_ZN6S197C63v49Ev,
  (VTBL_ENTRY)&_ZN6S197C63v50Ev,
  (VTBL_ENTRY)&_ZN6S197C63v51Ev,
  (VTBL_ENTRY)&_ZN6S197C63v52Ev,
  (VTBL_ENTRY)&_ZN6S197C63v53Ev,
  (VTBL_ENTRY)&_ZN6S197C63v54Ev,
  (VTBL_ENTRY)&_ZN6S197C63v55Ev,
  (VTBL_ENTRY)&_ZN6S197C63v56Ev,
  (VTBL_ENTRY)&_ZN6S197C63v57Ev,
  (VTBL_ENTRY)&_ZN6S197C63v58Ev,
  (VTBL_ENTRY)&_ZN6S197C63v59Ev,
  (VTBL_ENTRY)&_ZN6S197C63v60Ev,
  (VTBL_ENTRY)&_ZN6S197C63v61Ev,
  (VTBL_ENTRY)&_ZN6S197C63v62Ev,
  (VTBL_ENTRY)&_ZN6S197C63v63Ev,
  (VTBL_ENTRY)&_ZN6S197C63v64Ev,
  (VTBL_ENTRY)&_ZN6S197C63v65Ev,
  (VTBL_ENTRY)&_ZN6S197C63v66Ev,
  (VTBL_ENTRY)&_ZN6S197C63v67Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v89Ev,
};
extern VTBL_ENTRY _ZTI9S197C5_nt[];
VTBL_ENTRY *P__ZTI9S197C5_nt = _ZTI9S197C5_nt; 
extern  VTBL_ENTRY _ZTV9S197C5_nt[];
Class_Descriptor cd_S197C5_nt = {  "S197C5_nt", // class name
  bases_S197C5_nt, 1,
  &(vtc_S197C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI9S197C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S197C5_nt),90, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S197C4_nt  : S197C5_nt {
  unsigned int s197c4f0:1;
  unsigned int s197c4f1:1;
  unsigned int s197c4f2:1;
  ::S3214C22 s197c4f3;
  ::S3214C17 s197c4f4;
  ::S3214C11 s197c4f5;
  ::S3214C5_nt s197c4f6;
  int s197c4f7[3];
  virtual  ~S197C4_nt(); // _ZN9S197C4_ntD1Ev
  virtual void  v90(); // _ZN9S197C4_nt3v90Ev
  virtual void  v91(); // _ZN9S197C4_nt3v91Ev
  virtual void  v92(); // _ZN9S197C4_nt3v92Ev
  virtual void  v93(); // _ZN9S197C4_nt3v93Ev
  virtual void  v94(); // _ZN9S197C4_nt3v94Ev
  virtual void  v95(); // _ZN9S197C4_nt3v95Ev
  virtual void  v96(); // _ZN9S197C4_nt3v96Ev
  virtual void  v97(); // _ZN9S197C4_nt3v97Ev
  virtual void  v98(); // _ZN9S197C4_nt3v98Ev
  virtual void  v99(); // _ZN9S197C4_nt3v99Ev
  virtual void  v100(); // _ZN9S197C4_nt4v100Ev
  virtual void  v101(); // _ZN9S197C4_nt4v101Ev
  virtual void  v102(); // _ZN9S197C4_nt4v102Ev
  virtual void  v103(); // _ZN9S197C4_nt4v103Ev
  virtual void  v104(); // _ZN9S197C4_nt4v104Ev
  virtual void  v105(); // _ZN9S197C4_nt4v105Ev
  virtual void  v106(); // _ZN9S197C4_nt4v106Ev
  virtual void  v107(); // _ZN9S197C4_nt4v107Ev
  virtual void  v108(); // _ZN9S197C4_nt4v108Ev
  virtual void  v109(); // _ZN9S197C4_nt4v109Ev
  S197C4_nt(); // tgen
};
//SIG(-1 S197C4_nt) C1{ BC2{ BC3{ vd v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 Fi[2] Fp Fi[2] FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC5 FC9{ m} FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi:1 Fi:1 Fi:1 FC6 FC10{ BC11{ BC8}} FC12{ BC13{ BC8}} FC14{ BC15{ BC8}} Fi[3]}


 S197C4_nt ::~S197C4_nt(){ note_dtor("S197C4_nt", this);}
void  S197C4_nt ::v90(){vfunc_called(this, "_ZN9S197C4_nt3v90Ev");}
void  S197C4_nt ::v91(){vfunc_called(this, "_ZN9S197C4_nt3v91Ev");}
void  S197C4_nt ::v92(){vfunc_called(this, "_ZN9S197C4_nt3v92Ev");}
void  S197C4_nt ::v93(){vfunc_called(this, "_ZN9S197C4_nt3v93Ev");}
void  S197C4_nt ::v94(){vfunc_called(this, "_ZN9S197C4_nt3v94Ev");}
void  S197C4_nt ::v95(){vfunc_called(this, "_ZN9S197C4_nt3v95Ev");}
void  S197C4_nt ::v96(){vfunc_called(this, "_ZN9S197C4_nt3v96Ev");}
void  S197C4_nt ::v97(){vfunc_called(this, "_ZN9S197C4_nt3v97Ev");}
void  S197C4_nt ::v98(){vfunc_called(this, "_ZN9S197C4_nt3v98Ev");}
void  S197C4_nt ::v99(){vfunc_called(this, "_ZN9S197C4_nt3v99Ev");}
void  S197C4_nt ::v100(){vfunc_called(this, "_ZN9S197C4_nt4v100Ev");}
void  S197C4_nt ::v101(){vfunc_called(this, "_ZN9S197C4_nt4v101Ev");}
void  S197C4_nt ::v102(){vfunc_called(this, "_ZN9S197C4_nt4v102Ev");}
void  S197C4_nt ::v103(){vfunc_called(this, "_ZN9S197C4_nt4v103Ev");}
void  S197C4_nt ::v104(){vfunc_called(this, "_ZN9S197C4_nt4v104Ev");}
void  S197C4_nt ::v105(){vfunc_called(this, "_ZN9S197C4_nt4v105Ev");}
void  S197C4_nt ::v106(){vfunc_called(this, "_ZN9S197C4_nt4v106Ev");}
void  S197C4_nt ::v107(){vfunc_called(this, "_ZN9S197C4_nt4v107Ev");}
void  S197C4_nt ::v108(){vfunc_called(this, "_ZN9S197C4_nt4v108Ev");}
void  S197C4_nt ::v109(){vfunc_called(this, "_ZN9S197C4_nt4v109Ev");}
S197C4_nt ::S197C4_nt(){ note_ctor("S197C4_nt", this);} // tgen

//skip512 S197C4_nt

#else // __cplusplus

extern void _ZN9S197C4_ntC1Ev();
extern void _ZN9S197C4_ntD1Ev();
Name_Map name_map_S197C4_nt[] = {
  NSPAIR(_ZN9S197C4_ntC1Ev),
  NSPAIR(_ZN9S197C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S197C6;
extern VTBL_ENTRY _ZTI6S197C6[];
extern  VTBL_ENTRY _ZTV6S197C6[];
extern Class_Descriptor cd_S197C5_nt;
extern VTBL_ENTRY _ZTI9S197C5_nt[];
extern  VTBL_ENTRY _ZTV9S197C5_nt[];
static Base_Class bases_S197C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S197C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S197C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S197C4_nt[];
extern void _ZN9S197C4_ntD1Ev();
extern void _ZN9S197C4_ntD0Ev();
extern void _ZN6S197C62v4Ev();
extern void _ZN6S197C62v5Ev();
extern void _ZN6S197C62v6Ev();
extern void _ZN6S197C62v7Ev();
extern void _ZN6S197C62v8Ev();
extern void _ZN6S197C62v9Ev();
extern void _ZN6S197C63v10Ev();
extern void _ZN6S197C63v11Ev();
extern void _ZN6S197C63v12Ev();
extern void _ZN6S197C63v13Ev();
extern void _ZN6S197C63v14Ev();
extern void _ZN6S197C63v15Ev();
extern void _ZN6S197C63v16Ev();
extern void _ZN6S197C63v17Ev();
extern void _ZN6S197C63v18Ev();
extern void _ZN6S197C63v19Ev();
extern void _ZN6S197C63v20Ev();
extern void _ZN6S197C63v21Ev();
extern void _ZN6S197C63v22Ev();
extern void _ZN6S197C63v23Ev();
extern void _ZN6S197C63v24Ev();
extern void _ZN6S197C63v25Ev();
extern void _ZN6S197C63v26Ev();
extern void _ZN6S197C63v27Ev();
extern void _ZN6S197C63v28Ev();
extern void _ZN6S197C63v29Ev();
extern void _ZN6S197C63v30Ev();
extern void _ZN6S197C63v31Ev();
extern void _ZN6S197C63v32Ev();
extern void _ZN6S197C63v33Ev();
extern void _ZN6S197C63v34Ev();
extern void _ZN6S197C63v35Ev();
extern void _ZN6S197C63v36Ev();
extern void _ZN6S197C63v37Ev();
extern void _ZN6S197C63v38Ev();
extern void _ZN6S197C63v39Ev();
extern void _ZN6S197C63v40Ev();
extern void _ZN6S197C63v41Ev();
extern void _ZN6S197C63v42Ev();
extern void _ZN6S197C63v43Ev();
extern void _ZN6S197C63v44Ev();
extern void _ZN6S197C63v45Ev();
extern void _ZN6S197C63v46Ev();
extern void _ZN6S197C63v47Ev();
extern void _ZN6S197C63v48Ev();
extern void _ZN6S197C63v49Ev();
extern void _ZN6S197C63v50Ev();
extern void _ZN6S197C63v51Ev();
extern void _ZN6S197C63v52Ev();
extern void _ZN6S197C63v53Ev();
extern void _ZN6S197C63v54Ev();
extern void _ZN6S197C63v55Ev();
extern void _ZN6S197C63v56Ev();
extern void _ZN6S197C63v57Ev();
extern void _ZN6S197C63v58Ev();
extern void _ZN6S197C63v59Ev();
extern void _ZN6S197C63v60Ev();
extern void _ZN6S197C63v61Ev();
extern void _ZN6S197C63v62Ev();
extern void _ZN6S197C63v63Ev();
extern void _ZN6S197C63v64Ev();
extern void _ZN6S197C63v65Ev();
extern void _ZN6S197C63v66Ev();
extern void _ZN6S197C63v67Ev();
extern void _ZN9S197C5_nt3v68Ev();
extern void _ZN9S197C5_nt3v69Ev();
extern void _ZN9S197C5_nt3v70Ev();
extern void _ZN9S197C5_nt3v71Ev();
extern void _ZN9S197C5_nt3v72Ev();
extern void _ZN9S197C5_nt3v73Ev();
extern void _ZN9S197C5_nt3v74Ev();
extern void _ZN9S197C5_nt3v75Ev();
extern void _ZN9S197C5_nt3v76Ev();
extern void _ZN9S197C5_nt3v77Ev();
extern void _ZN9S197C5_nt3v78Ev();
extern void _ZN9S197C5_nt3v79Ev();
extern void _ZN9S197C5_nt3v80Ev();
extern void _ZN9S197C5_nt3v81Ev();
extern void _ZN9S197C5_nt3v82Ev();
extern void _ZN9S197C5_nt3v83Ev();
extern void _ZN9S197C5_nt3v84Ev();
extern void _ZN9S197C5_nt3v85Ev();
extern void _ZN9S197C5_nt3v86Ev();
extern void _ZN9S197C5_nt3v87Ev();
extern void _ZN9S197C5_nt3v88Ev();
extern void _ZN9S197C5_nt3v89Ev();
extern void _ZN9S197C4_nt3v90Ev();
extern void _ZN9S197C4_nt3v91Ev();
extern void _ZN9S197C4_nt3v92Ev();
extern void _ZN9S197C4_nt3v93Ev();
extern void _ZN9S197C4_nt3v94Ev();
extern void _ZN9S197C4_nt3v95Ev();
extern void _ZN9S197C4_nt3v96Ev();
extern void _ZN9S197C4_nt3v97Ev();
extern void _ZN9S197C4_nt3v98Ev();
extern void _ZN9S197C4_nt3v99Ev();
extern void _ZN9S197C4_nt4v100Ev();
extern void _ZN9S197C4_nt4v101Ev();
extern void _ZN9S197C4_nt4v102Ev();
extern void _ZN9S197C4_nt4v103Ev();
extern void _ZN9S197C4_nt4v104Ev();
extern void _ZN9S197C4_nt4v105Ev();
extern void _ZN9S197C4_nt4v106Ev();
extern void _ZN9S197C4_nt4v107Ev();
extern void _ZN9S197C4_nt4v108Ev();
extern void _ZN9S197C4_nt4v109Ev();
static  VTBL_ENTRY vtc_S197C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S197C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S197C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S197C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S197C62v4Ev,
  (VTBL_ENTRY)&_ZN6S197C62v5Ev,
  (VTBL_ENTRY)&_ZN6S197C62v6Ev,
  (VTBL_ENTRY)&_ZN6S197C62v7Ev,
  (VTBL_ENTRY)&_ZN6S197C62v8Ev,
  (VTBL_ENTRY)&_ZN6S197C62v9Ev,
  (VTBL_ENTRY)&_ZN6S197C63v10Ev,
  (VTBL_ENTRY)&_ZN6S197C63v11Ev,
  (VTBL_ENTRY)&_ZN6S197C63v12Ev,
  (VTBL_ENTRY)&_ZN6S197C63v13Ev,
  (VTBL_ENTRY)&_ZN6S197C63v14Ev,
  (VTBL_ENTRY)&_ZN6S197C63v15Ev,
  (VTBL_ENTRY)&_ZN6S197C63v16Ev,
  (VTBL_ENTRY)&_ZN6S197C63v17Ev,
  (VTBL_ENTRY)&_ZN6S197C63v18Ev,
  (VTBL_ENTRY)&_ZN6S197C63v19Ev,
  (VTBL_ENTRY)&_ZN6S197C63v20Ev,
  (VTBL_ENTRY)&_ZN6S197C63v21Ev,
  (VTBL_ENTRY)&_ZN6S197C63v22Ev,
  (VTBL_ENTRY)&_ZN6S197C63v23Ev,
  (VTBL_ENTRY)&_ZN6S197C63v24Ev,
  (VTBL_ENTRY)&_ZN6S197C63v25Ev,
  (VTBL_ENTRY)&_ZN6S197C63v26Ev,
  (VTBL_ENTRY)&_ZN6S197C63v27Ev,
  (VTBL_ENTRY)&_ZN6S197C63v28Ev,
  (VTBL_ENTRY)&_ZN6S197C63v29Ev,
  (VTBL_ENTRY)&_ZN6S197C63v30Ev,
  (VTBL_ENTRY)&_ZN6S197C63v31Ev,
  (VTBL_ENTRY)&_ZN6S197C63v32Ev,
  (VTBL_ENTRY)&_ZN6S197C63v33Ev,
  (VTBL_ENTRY)&_ZN6S197C63v34Ev,
  (VTBL_ENTRY)&_ZN6S197C63v35Ev,
  (VTBL_ENTRY)&_ZN6S197C63v36Ev,
  (VTBL_ENTRY)&_ZN6S197C63v37Ev,
  (VTBL_ENTRY)&_ZN6S197C63v38Ev,
  (VTBL_ENTRY)&_ZN6S197C63v39Ev,
  (VTBL_ENTRY)&_ZN6S197C63v40Ev,
  (VTBL_ENTRY)&_ZN6S197C63v41Ev,
  (VTBL_ENTRY)&_ZN6S197C63v42Ev,
  (VTBL_ENTRY)&_ZN6S197C63v43Ev,
  (VTBL_ENTRY)&_ZN6S197C63v44Ev,
  (VTBL_ENTRY)&_ZN6S197C63v45Ev,
  (VTBL_ENTRY)&_ZN6S197C63v46Ev,
  (VTBL_ENTRY)&_ZN6S197C63v47Ev,
  (VTBL_ENTRY)&_ZN6S197C63v48Ev,
  (VTBL_ENTRY)&_ZN6S197C63v49Ev,
  (VTBL_ENTRY)&_ZN6S197C63v50Ev,
  (VTBL_ENTRY)&_ZN6S197C63v51Ev,
  (VTBL_ENTRY)&_ZN6S197C63v52Ev,
  (VTBL_ENTRY)&_ZN6S197C63v53Ev,
  (VTBL_ENTRY)&_ZN6S197C63v54Ev,
  (VTBL_ENTRY)&_ZN6S197C63v55Ev,
  (VTBL_ENTRY)&_ZN6S197C63v56Ev,
  (VTBL_ENTRY)&_ZN6S197C63v57Ev,
  (VTBL_ENTRY)&_ZN6S197C63v58Ev,
  (VTBL_ENTRY)&_ZN6S197C63v59Ev,
  (VTBL_ENTRY)&_ZN6S197C63v60Ev,
  (VTBL_ENTRY)&_ZN6S197C63v61Ev,
  (VTBL_ENTRY)&_ZN6S197C63v62Ev,
  (VTBL_ENTRY)&_ZN6S197C63v63Ev,
  (VTBL_ENTRY)&_ZN6S197C63v64Ev,
  (VTBL_ENTRY)&_ZN6S197C63v65Ev,
  (VTBL_ENTRY)&_ZN6S197C63v66Ev,
  (VTBL_ENTRY)&_ZN6S197C63v67Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v109Ev,
};
extern VTBL_ENTRY _ZTI9S197C4_nt[];
VTBL_ENTRY *P__ZTI9S197C4_nt = _ZTI9S197C4_nt; 
extern  VTBL_ENTRY _ZTV9S197C4_nt[];
Class_Descriptor cd_S197C4_nt = {  "S197C4_nt", // class name
  bases_S197C4_nt, 2,
  &(vtc_S197C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI9S197C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S197C4_nt),110, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S197C22()
{
  extern Class_Descriptor cd_S197C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S197C22, buf);
    S197C22 &lv = *(new (buf) S197C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S197C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S197C22)");
    check_base_class_offset(lv, (S3214C7_nt*), 0, "S197C22");
    test_class_info(&lv, &cd_S197C22);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS197C22(Test_S197C22, "S197C22", ABISELECT(16,12));

#else // __cplusplus

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



//skip512 S197C21_nt

#else // __cplusplus

extern Class_Descriptor cd_S3214C7_nt;
extern Class_Descriptor cd_S197C22;
static Base_Class bases_S197C21_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S197C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S197C3_nt  : S197C4_nt {
  ::S3214C4_nt s197c3f0;
  unsigned int s197c3f1:1;
  ::S197C21_nt s197c3f2;
  virtual  ~S197C3_nt(); // _ZN9S197C3_ntD1Ev
  virtual void  v110(); // _ZN9S197C3_nt4v110Ev
  virtual void  v111(); // _ZN9S197C3_nt4v111Ev
  virtual void  v112(); // _ZN9S197C3_nt4v112Ev
  virtual void  v113(); // _ZN9S197C3_nt4v113Ev
  S197C3_nt(); // tgen
};
//SIG(-1 S197C3_nt) C1{ BC2{ BC3{ BC4{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 Fi[2] Fp Fi[2] FC6{ BC7{ BC8{ BC9{ m Fp Fi[2]}}}} FC6 FC10{ m} FC6 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 Fi:1 Fi:1 Fi:1 FC7 FC11{ BC12{ BC9}} FC13{ BC14{ BC9}} FC15{ BC16{ BC9}} Fi[3]} vd v1 v2 v3 v4 FC5 Fi:1 FC17{ BC18{ BC9}}}


 S197C3_nt ::~S197C3_nt(){ note_dtor("S197C3_nt", this);}
void  S197C3_nt ::v110(){vfunc_called(this, "_ZN9S197C3_nt4v110Ev");}
void  S197C3_nt ::v111(){vfunc_called(this, "_ZN9S197C3_nt4v111Ev");}
void  S197C3_nt ::v112(){vfunc_called(this, "_ZN9S197C3_nt4v112Ev");}
void  S197C3_nt ::v113(){vfunc_called(this, "_ZN9S197C3_nt4v113Ev");}
S197C3_nt ::S197C3_nt(){ note_ctor("S197C3_nt", this);} // tgen

//skip512 S197C3_nt

#else // __cplusplus

extern void _ZN9S197C3_ntC1Ev();
extern void _ZN9S197C3_ntD1Ev();
Name_Map name_map_S197C3_nt[] = {
  NSPAIR(_ZN9S197C3_ntC1Ev),
  NSPAIR(_ZN9S197C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S197C6;
extern VTBL_ENTRY _ZTI6S197C6[];
extern  VTBL_ENTRY _ZTV6S197C6[];
extern Class_Descriptor cd_S197C5_nt;
extern VTBL_ENTRY _ZTI9S197C5_nt[];
extern  VTBL_ENTRY _ZTV9S197C5_nt[];
extern Class_Descriptor cd_S197C4_nt;
extern VTBL_ENTRY _ZTI9S197C4_nt[];
extern  VTBL_ENTRY _ZTV9S197C4_nt[];
static Base_Class bases_S197C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S197C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S197C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S197C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S197C3_nt[];
extern void _ZN9S197C3_ntD1Ev();
extern void _ZN9S197C3_ntD0Ev();
extern void _ZN6S197C62v4Ev();
extern void _ZN6S197C62v5Ev();
extern void _ZN6S197C62v6Ev();
extern void _ZN6S197C62v7Ev();
extern void _ZN6S197C62v8Ev();
extern void _ZN6S197C62v9Ev();
extern void _ZN6S197C63v10Ev();
extern void _ZN6S197C63v11Ev();
extern void _ZN6S197C63v12Ev();
extern void _ZN6S197C63v13Ev();
extern void _ZN6S197C63v14Ev();
extern void _ZN6S197C63v15Ev();
extern void _ZN6S197C63v16Ev();
extern void _ZN6S197C63v17Ev();
extern void _ZN6S197C63v18Ev();
extern void _ZN6S197C63v19Ev();
extern void _ZN6S197C63v20Ev();
extern void _ZN6S197C63v21Ev();
extern void _ZN6S197C63v22Ev();
extern void _ZN6S197C63v23Ev();
extern void _ZN6S197C63v24Ev();
extern void _ZN6S197C63v25Ev();
extern void _ZN6S197C63v26Ev();
extern void _ZN6S197C63v27Ev();
extern void _ZN6S197C63v28Ev();
extern void _ZN6S197C63v29Ev();
extern void _ZN6S197C63v30Ev();
extern void _ZN6S197C63v31Ev();
extern void _ZN6S197C63v32Ev();
extern void _ZN6S197C63v33Ev();
extern void _ZN6S197C63v34Ev();
extern void _ZN6S197C63v35Ev();
extern void _ZN6S197C63v36Ev();
extern void _ZN6S197C63v37Ev();
extern void _ZN6S197C63v38Ev();
extern void _ZN6S197C63v39Ev();
extern void _ZN6S197C63v40Ev();
extern void _ZN6S197C63v41Ev();
extern void _ZN6S197C63v42Ev();
extern void _ZN6S197C63v43Ev();
extern void _ZN6S197C63v44Ev();
extern void _ZN6S197C63v45Ev();
extern void _ZN6S197C63v46Ev();
extern void _ZN6S197C63v47Ev();
extern void _ZN6S197C63v48Ev();
extern void _ZN6S197C63v49Ev();
extern void _ZN6S197C63v50Ev();
extern void _ZN6S197C63v51Ev();
extern void _ZN6S197C63v52Ev();
extern void _ZN6S197C63v53Ev();
extern void _ZN6S197C63v54Ev();
extern void _ZN6S197C63v55Ev();
extern void _ZN6S197C63v56Ev();
extern void _ZN6S197C63v57Ev();
extern void _ZN6S197C63v58Ev();
extern void _ZN6S197C63v59Ev();
extern void _ZN6S197C63v60Ev();
extern void _ZN6S197C63v61Ev();
extern void _ZN6S197C63v62Ev();
extern void _ZN6S197C63v63Ev();
extern void _ZN6S197C63v64Ev();
extern void _ZN6S197C63v65Ev();
extern void _ZN6S197C63v66Ev();
extern void _ZN6S197C63v67Ev();
extern void _ZN9S197C5_nt3v68Ev();
extern void _ZN9S197C5_nt3v69Ev();
extern void _ZN9S197C5_nt3v70Ev();
extern void _ZN9S197C5_nt3v71Ev();
extern void _ZN9S197C5_nt3v72Ev();
extern void _ZN9S197C5_nt3v73Ev();
extern void _ZN9S197C5_nt3v74Ev();
extern void _ZN9S197C5_nt3v75Ev();
extern void _ZN9S197C5_nt3v76Ev();
extern void _ZN9S197C5_nt3v77Ev();
extern void _ZN9S197C5_nt3v78Ev();
extern void _ZN9S197C5_nt3v79Ev();
extern void _ZN9S197C5_nt3v80Ev();
extern void _ZN9S197C5_nt3v81Ev();
extern void _ZN9S197C5_nt3v82Ev();
extern void _ZN9S197C5_nt3v83Ev();
extern void _ZN9S197C5_nt3v84Ev();
extern void _ZN9S197C5_nt3v85Ev();
extern void _ZN9S197C5_nt3v86Ev();
extern void _ZN9S197C5_nt3v87Ev();
extern void _ZN9S197C5_nt3v88Ev();
extern void _ZN9S197C5_nt3v89Ev();
extern void _ZN9S197C4_nt3v90Ev();
extern void _ZN9S197C4_nt3v91Ev();
extern void _ZN9S197C4_nt3v92Ev();
extern void _ZN9S197C4_nt3v93Ev();
extern void _ZN9S197C4_nt3v94Ev();
extern void _ZN9S197C4_nt3v95Ev();
extern void _ZN9S197C4_nt3v96Ev();
extern void _ZN9S197C4_nt3v97Ev();
extern void _ZN9S197C4_nt3v98Ev();
extern void _ZN9S197C4_nt3v99Ev();
extern void _ZN9S197C4_nt4v100Ev();
extern void _ZN9S197C4_nt4v101Ev();
extern void _ZN9S197C4_nt4v102Ev();
extern void _ZN9S197C4_nt4v103Ev();
extern void _ZN9S197C4_nt4v104Ev();
extern void _ZN9S197C4_nt4v105Ev();
extern void _ZN9S197C4_nt4v106Ev();
extern void _ZN9S197C4_nt4v107Ev();
extern void _ZN9S197C4_nt4v108Ev();
extern void _ZN9S197C4_nt4v109Ev();
extern void _ZN9S197C3_nt4v110Ev();
extern void _ZN9S197C3_nt4v111Ev();
extern void _ZN9S197C3_nt4v112Ev();
extern void _ZN9S197C3_nt4v113Ev();
static  VTBL_ENTRY vtc_S197C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S197C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S197C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S197C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S197C62v4Ev,
  (VTBL_ENTRY)&_ZN6S197C62v5Ev,
  (VTBL_ENTRY)&_ZN6S197C62v6Ev,
  (VTBL_ENTRY)&_ZN6S197C62v7Ev,
  (VTBL_ENTRY)&_ZN6S197C62v8Ev,
  (VTBL_ENTRY)&_ZN6S197C62v9Ev,
  (VTBL_ENTRY)&_ZN6S197C63v10Ev,
  (VTBL_ENTRY)&_ZN6S197C63v11Ev,
  (VTBL_ENTRY)&_ZN6S197C63v12Ev,
  (VTBL_ENTRY)&_ZN6S197C63v13Ev,
  (VTBL_ENTRY)&_ZN6S197C63v14Ev,
  (VTBL_ENTRY)&_ZN6S197C63v15Ev,
  (VTBL_ENTRY)&_ZN6S197C63v16Ev,
  (VTBL_ENTRY)&_ZN6S197C63v17Ev,
  (VTBL_ENTRY)&_ZN6S197C63v18Ev,
  (VTBL_ENTRY)&_ZN6S197C63v19Ev,
  (VTBL_ENTRY)&_ZN6S197C63v20Ev,
  (VTBL_ENTRY)&_ZN6S197C63v21Ev,
  (VTBL_ENTRY)&_ZN6S197C63v22Ev,
  (VTBL_ENTRY)&_ZN6S197C63v23Ev,
  (VTBL_ENTRY)&_ZN6S197C63v24Ev,
  (VTBL_ENTRY)&_ZN6S197C63v25Ev,
  (VTBL_ENTRY)&_ZN6S197C63v26Ev,
  (VTBL_ENTRY)&_ZN6S197C63v27Ev,
  (VTBL_ENTRY)&_ZN6S197C63v28Ev,
  (VTBL_ENTRY)&_ZN6S197C63v29Ev,
  (VTBL_ENTRY)&_ZN6S197C63v30Ev,
  (VTBL_ENTRY)&_ZN6S197C63v31Ev,
  (VTBL_ENTRY)&_ZN6S197C63v32Ev,
  (VTBL_ENTRY)&_ZN6S197C63v33Ev,
  (VTBL_ENTRY)&_ZN6S197C63v34Ev,
  (VTBL_ENTRY)&_ZN6S197C63v35Ev,
  (VTBL_ENTRY)&_ZN6S197C63v36Ev,
  (VTBL_ENTRY)&_ZN6S197C63v37Ev,
  (VTBL_ENTRY)&_ZN6S197C63v38Ev,
  (VTBL_ENTRY)&_ZN6S197C63v39Ev,
  (VTBL_ENTRY)&_ZN6S197C63v40Ev,
  (VTBL_ENTRY)&_ZN6S197C63v41Ev,
  (VTBL_ENTRY)&_ZN6S197C63v42Ev,
  (VTBL_ENTRY)&_ZN6S197C63v43Ev,
  (VTBL_ENTRY)&_ZN6S197C63v44Ev,
  (VTBL_ENTRY)&_ZN6S197C63v45Ev,
  (VTBL_ENTRY)&_ZN6S197C63v46Ev,
  (VTBL_ENTRY)&_ZN6S197C63v47Ev,
  (VTBL_ENTRY)&_ZN6S197C63v48Ev,
  (VTBL_ENTRY)&_ZN6S197C63v49Ev,
  (VTBL_ENTRY)&_ZN6S197C63v50Ev,
  (VTBL_ENTRY)&_ZN6S197C63v51Ev,
  (VTBL_ENTRY)&_ZN6S197C63v52Ev,
  (VTBL_ENTRY)&_ZN6S197C63v53Ev,
  (VTBL_ENTRY)&_ZN6S197C63v54Ev,
  (VTBL_ENTRY)&_ZN6S197C63v55Ev,
  (VTBL_ENTRY)&_ZN6S197C63v56Ev,
  (VTBL_ENTRY)&_ZN6S197C63v57Ev,
  (VTBL_ENTRY)&_ZN6S197C63v58Ev,
  (VTBL_ENTRY)&_ZN6S197C63v59Ev,
  (VTBL_ENTRY)&_ZN6S197C63v60Ev,
  (VTBL_ENTRY)&_ZN6S197C63v61Ev,
  (VTBL_ENTRY)&_ZN6S197C63v62Ev,
  (VTBL_ENTRY)&_ZN6S197C63v63Ev,
  (VTBL_ENTRY)&_ZN6S197C63v64Ev,
  (VTBL_ENTRY)&_ZN6S197C63v65Ev,
  (VTBL_ENTRY)&_ZN6S197C63v66Ev,
  (VTBL_ENTRY)&_ZN6S197C63v67Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S197C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S197C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S197C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S197C3_nt4v113Ev,
};
extern VTBL_ENTRY _ZTI9S197C3_nt[];
VTBL_ENTRY *P__ZTI9S197C3_nt = _ZTI9S197C3_nt; 
extern  VTBL_ENTRY _ZTV9S197C3_nt[];
Class_Descriptor cd_S197C3_nt = {  "S197C3_nt", // class name
  bases_S197C3_nt, 3,
  &(vtc_S197C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI9S197C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S197C3_nt),114, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S197C2_nt  : S197C3_nt {
  ::S197C21_nt s197c2f0;
  unsigned int s197c2f1:1;
  virtual  ~S197C2_nt(); // _ZN9S197C2_ntD1Ev
  virtual void  v114(); // _ZN9S197C2_nt4v114Ev
  virtual void  v115(); // _ZN9S197C2_nt4v115Ev
  virtual void  v116(); // _ZN9S197C2_nt4v116Ev
  virtual void  v117(); // _ZN9S197C2_nt4v117Ev
  virtual void  v118(); // _ZN9S197C2_nt4v118Ev
  virtual void  v119(); // _ZN9S197C2_nt4v119Ev
  virtual void  v120(); // _ZN9S197C2_nt4v120Ev
  S197C2_nt(); // tgen
};
//SIG(-1 S197C2_nt) C1{ BC2{ BC3{ BC4{ BC5{ 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 FC6{ 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 Fi[2] Fp Fi[2] FC7{ BC8{ BC9{ BC10{ m Fp Fi[2]}}}} FC7 FC11{ m} FC7 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 Fi:1 Fi:1 Fi:1 FC8 FC12{ BC13{ BC10}} FC14{ BC15{ BC10}} FC16{ BC17{ BC10}} Fi[3]} vd v114 v115 v116 v117 FC6 Fi:1 FC18{ BC19{ BC10}}} vd v1 v2 v3 v4 v5 v6 v7 FC18 Fi:1}


 S197C2_nt ::~S197C2_nt(){ note_dtor("S197C2_nt", this);}
void  S197C2_nt ::v114(){vfunc_called(this, "_ZN9S197C2_nt4v114Ev");}
void  S197C2_nt ::v115(){vfunc_called(this, "_ZN9S197C2_nt4v115Ev");}
void  S197C2_nt ::v116(){vfunc_called(this, "_ZN9S197C2_nt4v116Ev");}
void  S197C2_nt ::v117(){vfunc_called(this, "_ZN9S197C2_nt4v117Ev");}
void  S197C2_nt ::v118(){vfunc_called(this, "_ZN9S197C2_nt4v118Ev");}
void  S197C2_nt ::v119(){vfunc_called(this, "_ZN9S197C2_nt4v119Ev");}
void  S197C2_nt ::v120(){vfunc_called(this, "_ZN9S197C2_nt4v120Ev");}
S197C2_nt ::S197C2_nt(){ note_ctor("S197C2_nt", this);} // tgen

//skip512 S197C2_nt

#else // __cplusplus

extern void _ZN9S197C2_ntC1Ev();
extern void _ZN9S197C2_ntD1Ev();
Name_Map name_map_S197C2_nt[] = {
  NSPAIR(_ZN9S197C2_ntC1Ev),
  NSPAIR(_ZN9S197C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S197C6;
extern VTBL_ENTRY _ZTI6S197C6[];
extern  VTBL_ENTRY _ZTV6S197C6[];
extern Class_Descriptor cd_S197C5_nt;
extern VTBL_ENTRY _ZTI9S197C5_nt[];
extern  VTBL_ENTRY _ZTV9S197C5_nt[];
extern Class_Descriptor cd_S197C4_nt;
extern VTBL_ENTRY _ZTI9S197C4_nt[];
extern  VTBL_ENTRY _ZTV9S197C4_nt[];
extern Class_Descriptor cd_S197C3_nt;
extern VTBL_ENTRY _ZTI9S197C3_nt[];
extern  VTBL_ENTRY _ZTV9S197C3_nt[];
static Base_Class bases_S197C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S197C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S197C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S197C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S197C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S197C2_nt[];
extern void _ZN9S197C2_ntD1Ev();
extern void _ZN9S197C2_ntD0Ev();
extern void _ZN6S197C62v4Ev();
extern void _ZN6S197C62v5Ev();
extern void _ZN6S197C62v6Ev();
extern void _ZN6S197C62v7Ev();
extern void _ZN6S197C62v8Ev();
extern void _ZN6S197C62v9Ev();
extern void _ZN6S197C63v10Ev();
extern void _ZN6S197C63v11Ev();
extern void _ZN6S197C63v12Ev();
extern void _ZN6S197C63v13Ev();
extern void _ZN6S197C63v14Ev();
extern void _ZN6S197C63v15Ev();
extern void _ZN6S197C63v16Ev();
extern void _ZN6S197C63v17Ev();
extern void _ZN6S197C63v18Ev();
extern void _ZN6S197C63v19Ev();
extern void _ZN6S197C63v20Ev();
extern void _ZN6S197C63v21Ev();
extern void _ZN6S197C63v22Ev();
extern void _ZN6S197C63v23Ev();
extern void _ZN6S197C63v24Ev();
extern void _ZN6S197C63v25Ev();
extern void _ZN6S197C63v26Ev();
extern void _ZN6S197C63v27Ev();
extern void _ZN6S197C63v28Ev();
extern void _ZN6S197C63v29Ev();
extern void _ZN6S197C63v30Ev();
extern void _ZN6S197C63v31Ev();
extern void _ZN6S197C63v32Ev();
extern void _ZN6S197C63v33Ev();
extern void _ZN6S197C63v34Ev();
extern void _ZN6S197C63v35Ev();
extern void _ZN6S197C63v36Ev();
extern void _ZN6S197C63v37Ev();
extern void _ZN6S197C63v38Ev();
extern void _ZN6S197C63v39Ev();
extern void _ZN6S197C63v40Ev();
extern void _ZN6S197C63v41Ev();
extern void _ZN6S197C63v42Ev();
extern void _ZN6S197C63v43Ev();
extern void _ZN6S197C63v44Ev();
extern void _ZN6S197C63v45Ev();
extern void _ZN6S197C63v46Ev();
extern void _ZN6S197C63v47Ev();
extern void _ZN6S197C63v48Ev();
extern void _ZN6S197C63v49Ev();
extern void _ZN6S197C63v50Ev();
extern void _ZN6S197C63v51Ev();
extern void _ZN6S197C63v52Ev();
extern void _ZN6S197C63v53Ev();
extern void _ZN6S197C63v54Ev();
extern void _ZN6S197C63v55Ev();
extern void _ZN6S197C63v56Ev();
extern void _ZN6S197C63v57Ev();
extern void _ZN6S197C63v58Ev();
extern void _ZN6S197C63v59Ev();
extern void _ZN6S197C63v60Ev();
extern void _ZN6S197C63v61Ev();
extern void _ZN6S197C63v62Ev();
extern void _ZN6S197C63v63Ev();
extern void _ZN6S197C63v64Ev();
extern void _ZN6S197C63v65Ev();
extern void _ZN6S197C63v66Ev();
extern void _ZN6S197C63v67Ev();
extern void _ZN9S197C5_nt3v68Ev();
extern void _ZN9S197C5_nt3v69Ev();
extern void _ZN9S197C5_nt3v70Ev();
extern void _ZN9S197C5_nt3v71Ev();
extern void _ZN9S197C5_nt3v72Ev();
extern void _ZN9S197C5_nt3v73Ev();
extern void _ZN9S197C5_nt3v74Ev();
extern void _ZN9S197C5_nt3v75Ev();
extern void _ZN9S197C5_nt3v76Ev();
extern void _ZN9S197C5_nt3v77Ev();
extern void _ZN9S197C5_nt3v78Ev();
extern void _ZN9S197C5_nt3v79Ev();
extern void _ZN9S197C5_nt3v80Ev();
extern void _ZN9S197C5_nt3v81Ev();
extern void _ZN9S197C5_nt3v82Ev();
extern void _ZN9S197C5_nt3v83Ev();
extern void _ZN9S197C5_nt3v84Ev();
extern void _ZN9S197C5_nt3v85Ev();
extern void _ZN9S197C5_nt3v86Ev();
extern void _ZN9S197C5_nt3v87Ev();
extern void _ZN9S197C5_nt3v88Ev();
extern void _ZN9S197C5_nt3v89Ev();
extern void _ZN9S197C4_nt3v90Ev();
extern void _ZN9S197C4_nt3v91Ev();
extern void _ZN9S197C4_nt3v92Ev();
extern void _ZN9S197C4_nt3v93Ev();
extern void _ZN9S197C4_nt3v94Ev();
extern void _ZN9S197C4_nt3v95Ev();
extern void _ZN9S197C4_nt3v96Ev();
extern void _ZN9S197C4_nt3v97Ev();
extern void _ZN9S197C4_nt3v98Ev();
extern void _ZN9S197C4_nt3v99Ev();
extern void _ZN9S197C4_nt4v100Ev();
extern void _ZN9S197C4_nt4v101Ev();
extern void _ZN9S197C4_nt4v102Ev();
extern void _ZN9S197C4_nt4v103Ev();
extern void _ZN9S197C4_nt4v104Ev();
extern void _ZN9S197C4_nt4v105Ev();
extern void _ZN9S197C4_nt4v106Ev();
extern void _ZN9S197C4_nt4v107Ev();
extern void _ZN9S197C4_nt4v108Ev();
extern void _ZN9S197C4_nt4v109Ev();
extern void _ZN9S197C3_nt4v110Ev();
extern void _ZN9S197C3_nt4v111Ev();
extern void _ZN9S197C3_nt4v112Ev();
extern void _ZN9S197C3_nt4v113Ev();
extern void _ZN9S197C2_nt4v114Ev();
extern void _ZN9S197C2_nt4v115Ev();
extern void _ZN9S197C2_nt4v116Ev();
extern void _ZN9S197C2_nt4v117Ev();
extern void _ZN9S197C2_nt4v118Ev();
extern void _ZN9S197C2_nt4v119Ev();
extern void _ZN9S197C2_nt4v120Ev();
static  VTBL_ENTRY vtc_S197C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S197C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S197C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S197C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S197C62v4Ev,
  (VTBL_ENTRY)&_ZN6S197C62v5Ev,
  (VTBL_ENTRY)&_ZN6S197C62v6Ev,
  (VTBL_ENTRY)&_ZN6S197C62v7Ev,
  (VTBL_ENTRY)&_ZN6S197C62v8Ev,
  (VTBL_ENTRY)&_ZN6S197C62v9Ev,
  (VTBL_ENTRY)&_ZN6S197C63v10Ev,
  (VTBL_ENTRY)&_ZN6S197C63v11Ev,
  (VTBL_ENTRY)&_ZN6S197C63v12Ev,
  (VTBL_ENTRY)&_ZN6S197C63v13Ev,
  (VTBL_ENTRY)&_ZN6S197C63v14Ev,
  (VTBL_ENTRY)&_ZN6S197C63v15Ev,
  (VTBL_ENTRY)&_ZN6S197C63v16Ev,
  (VTBL_ENTRY)&_ZN6S197C63v17Ev,
  (VTBL_ENTRY)&_ZN6S197C63v18Ev,
  (VTBL_ENTRY)&_ZN6S197C63v19Ev,
  (VTBL_ENTRY)&_ZN6S197C63v20Ev,
  (VTBL_ENTRY)&_ZN6S197C63v21Ev,
  (VTBL_ENTRY)&_ZN6S197C63v22Ev,
  (VTBL_ENTRY)&_ZN6S197C63v23Ev,
  (VTBL_ENTRY)&_ZN6S197C63v24Ev,
  (VTBL_ENTRY)&_ZN6S197C63v25Ev,
  (VTBL_ENTRY)&_ZN6S197C63v26Ev,
  (VTBL_ENTRY)&_ZN6S197C63v27Ev,
  (VTBL_ENTRY)&_ZN6S197C63v28Ev,
  (VTBL_ENTRY)&_ZN6S197C63v29Ev,
  (VTBL_ENTRY)&_ZN6S197C63v30Ev,
  (VTBL_ENTRY)&_ZN6S197C63v31Ev,
  (VTBL_ENTRY)&_ZN6S197C63v32Ev,
  (VTBL_ENTRY)&_ZN6S197C63v33Ev,
  (VTBL_ENTRY)&_ZN6S197C63v34Ev,
  (VTBL_ENTRY)&_ZN6S197C63v35Ev,
  (VTBL_ENTRY)&_ZN6S197C63v36Ev,
  (VTBL_ENTRY)&_ZN6S197C63v37Ev,
  (VTBL_ENTRY)&_ZN6S197C63v38Ev,
  (VTBL_ENTRY)&_ZN6S197C63v39Ev,
  (VTBL_ENTRY)&_ZN6S197C63v40Ev,
  (VTBL_ENTRY)&_ZN6S197C63v41Ev,
  (VTBL_ENTRY)&_ZN6S197C63v42Ev,
  (VTBL_ENTRY)&_ZN6S197C63v43Ev,
  (VTBL_ENTRY)&_ZN6S197C63v44Ev,
  (VTBL_ENTRY)&_ZN6S197C63v45Ev,
  (VTBL_ENTRY)&_ZN6S197C63v46Ev,
  (VTBL_ENTRY)&_ZN6S197C63v47Ev,
  (VTBL_ENTRY)&_ZN6S197C63v48Ev,
  (VTBL_ENTRY)&_ZN6S197C63v49Ev,
  (VTBL_ENTRY)&_ZN6S197C63v50Ev,
  (VTBL_ENTRY)&_ZN6S197C63v51Ev,
  (VTBL_ENTRY)&_ZN6S197C63v52Ev,
  (VTBL_ENTRY)&_ZN6S197C63v53Ev,
  (VTBL_ENTRY)&_ZN6S197C63v54Ev,
  (VTBL_ENTRY)&_ZN6S197C63v55Ev,
  (VTBL_ENTRY)&_ZN6S197C63v56Ev,
  (VTBL_ENTRY)&_ZN6S197C63v57Ev,
  (VTBL_ENTRY)&_ZN6S197C63v58Ev,
  (VTBL_ENTRY)&_ZN6S197C63v59Ev,
  (VTBL_ENTRY)&_ZN6S197C63v60Ev,
  (VTBL_ENTRY)&_ZN6S197C63v61Ev,
  (VTBL_ENTRY)&_ZN6S197C63v62Ev,
  (VTBL_ENTRY)&_ZN6S197C63v63Ev,
  (VTBL_ENTRY)&_ZN6S197C63v64Ev,
  (VTBL_ENTRY)&_ZN6S197C63v65Ev,
  (VTBL_ENTRY)&_ZN6S197C63v66Ev,
  (VTBL_ENTRY)&_ZN6S197C63v67Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S197C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S197C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S197C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S197C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v120Ev,
};
extern VTBL_ENTRY _ZTI9S197C2_nt[];
VTBL_ENTRY *P__ZTI9S197C2_nt = _ZTI9S197C2_nt; 
extern  VTBL_ENTRY _ZTV9S197C2_nt[];
Class_Descriptor cd_S197C2_nt = {  "S197C2_nt", // class name
  bases_S197C2_nt, 4,
  &(vtc_S197C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,236), // object size
  NSPAIRA(_ZTI9S197C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S197C2_nt),121, //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  S197C26  : S3214C7_nt {
};
//SIG(-1 S197C26) C1{ BC2{ m Fp Fi[2]}}



static void Test_S197C26()
{
  extern Class_Descriptor cd_S197C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S197C26, buf);
    S197C26 &lv = *(new (buf) S197C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S197C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S197C26)");
    check_base_class_offset(lv, (S3214C7_nt*), 0, "S197C26");
    test_class_info(&lv, &cd_S197C26);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS197C26(Test_S197C26, "S197C26", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S197C25()
{
  extern Class_Descriptor cd_S197C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S197C25, buf);
    S197C25 &lv = *(new (buf) S197C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S197C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S197C25)");
    check_base_class_offset(lv, (S3214C7_nt*)(S197C26*), 0, "S197C25");
    check_base_class_offset(lv, (S197C26*), 0, "S197C25");
    test_class_info(&lv, &cd_S197C25);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS197C25(Test_S197C25, "S197C25", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3214C7_nt;
extern Class_Descriptor cd_S197C26;
static Base_Class bases_S197C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S197C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S197C25 = {  "S197C25", // class name
  bases_S197C25, 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  S197C1  : S197C2_nt {
  void *s197c1f0[2];
  int s197c1f1[4];
  ::S197C25 s197c1f2;
  virtual  ~S197C1(); // _ZN6S197C1D1Ev
  virtual void  v1(); // _ZN6S197C12v1Ev
  virtual void  v2(); // _ZN6S197C12v2Ev
  virtual void  v3(); // _ZN6S197C12v3Ev
  S197C1(); // tgen
};
//SIG(1 S197C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC7{ m Fi[2]} Fp[2]} vd v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 Fi[2] Fp Fi[2] FC8{ BC9{ BC10{ BC11{ m Fp Fi[2]}}}} FC8 FC12{ m} FC8 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 v107 v108 v109 Fi:1 Fi:1 Fi:1 FC9 FC13{ BC14{ BC11}} FC15{ BC16{ BC11}} FC17{ BC18{ BC11}} Fi[3]} vd v110 v111 v112 v113 FC7 Fi:1 FC19{ BC20{ BC11}}} vd v114 v115 v116 v117 v118 v119 v120 FC19 Fi:1} vd v1 v2 v3 Fp[2] Fi[4] FC21{ BC22{ BC11}}}


 S197C1 ::~S197C1(){ note_dtor("S197C1", this);}
void  S197C1 ::v1(){vfunc_called(this, "_ZN6S197C12v1Ev");}
void  S197C1 ::v2(){vfunc_called(this, "_ZN6S197C12v2Ev");}
void  S197C1 ::v3(){vfunc_called(this, "_ZN6S197C12v3Ev");}
S197C1 ::S197C1(){ note_ctor("S197C1", this);} // tgen

static void Test_S197C1()
{
  extern Class_Descriptor cd_S197C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(47,69)];
    init_test(&cd_S197C1, buf);
    S197C1 *dp, &lv = *(dp=new (buf) S197C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,272), "sizeof(S197C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S197C1)");
    check_base_class_offset(lv, (S197C6*)(S197C5_nt*)(S197C4_nt*)(S197C3_nt*)(S197C2_nt*), 0, "S197C1");
    check_base_class_offset(lv, (S197C5_nt*)(S197C4_nt*)(S197C3_nt*)(S197C2_nt*), 0, "S197C1");
    check_base_class_offset(lv, (S197C4_nt*)(S197C3_nt*)(S197C2_nt*), 0, "S197C1");
    check_base_class_offset(lv, (S197C3_nt*)(S197C2_nt*), 0, "S197C1");
    check_base_class_offset(lv, (S197C2_nt*), 0, "S197C1");
    check_field_offset(lv, s197c1f0, ABISELECT(320,236), "S197C1.s197c1f0");
    check_field_offset(lv, s197c1f1, ABISELECT(336,244), "S197C1.s197c1f1");
    check_field_offset(lv, s197c1f2, ABISELECT(352,260), "S197C1.s197c1f2");
    test_class_info(&lv, &cd_S197C1);
    dp->~S197C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS197C1(Test_S197C1, "S197C1", ABISELECT(368,272));

#else // __cplusplus

extern void _ZN6S197C1C1Ev();
extern void _ZN6S197C1D1Ev();
Name_Map name_map_S197C1[] = {
  NSPAIR(_ZN6S197C1C1Ev),
  NSPAIR(_ZN6S197C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S197C6;
extern VTBL_ENTRY _ZTI6S197C6[];
extern  VTBL_ENTRY _ZTV6S197C6[];
extern Class_Descriptor cd_S197C5_nt;
extern VTBL_ENTRY _ZTI9S197C5_nt[];
extern  VTBL_ENTRY _ZTV9S197C5_nt[];
extern Class_Descriptor cd_S197C4_nt;
extern VTBL_ENTRY _ZTI9S197C4_nt[];
extern  VTBL_ENTRY _ZTV9S197C4_nt[];
extern Class_Descriptor cd_S197C3_nt;
extern VTBL_ENTRY _ZTI9S197C3_nt[];
extern  VTBL_ENTRY _ZTV9S197C3_nt[];
extern Class_Descriptor cd_S197C2_nt;
extern VTBL_ENTRY _ZTI9S197C2_nt[];
extern  VTBL_ENTRY _ZTV9S197C2_nt[];
static Base_Class bases_S197C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S197C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S197C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S197C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S197C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S197C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S197C1[];
extern void _ZN6S197C1D1Ev();
extern void _ZN6S197C1D0Ev();
extern void _ZN6S197C62v4Ev();
extern void _ZN6S197C62v5Ev();
extern void _ZN6S197C62v6Ev();
extern void _ZN6S197C62v7Ev();
extern void _ZN6S197C62v8Ev();
extern void _ZN6S197C62v9Ev();
extern void _ZN6S197C63v10Ev();
extern void _ZN6S197C63v11Ev();
extern void _ZN6S197C63v12Ev();
extern void _ZN6S197C63v13Ev();
extern void _ZN6S197C63v14Ev();
extern void _ZN6S197C63v15Ev();
extern void _ZN6S197C63v16Ev();
extern void _ZN6S197C63v17Ev();
extern void _ZN6S197C63v18Ev();
extern void _ZN6S197C63v19Ev();
extern void _ZN6S197C63v20Ev();
extern void _ZN6S197C63v21Ev();
extern void _ZN6S197C63v22Ev();
extern void _ZN6S197C63v23Ev();
extern void _ZN6S197C63v24Ev();
extern void _ZN6S197C63v25Ev();
extern void _ZN6S197C63v26Ev();
extern void _ZN6S197C63v27Ev();
extern void _ZN6S197C63v28Ev();
extern void _ZN6S197C63v29Ev();
extern void _ZN6S197C63v30Ev();
extern void _ZN6S197C63v31Ev();
extern void _ZN6S197C63v32Ev();
extern void _ZN6S197C63v33Ev();
extern void _ZN6S197C63v34Ev();
extern void _ZN6S197C63v35Ev();
extern void _ZN6S197C63v36Ev();
extern void _ZN6S197C63v37Ev();
extern void _ZN6S197C63v38Ev();
extern void _ZN6S197C63v39Ev();
extern void _ZN6S197C63v40Ev();
extern void _ZN6S197C63v41Ev();
extern void _ZN6S197C63v42Ev();
extern void _ZN6S197C63v43Ev();
extern void _ZN6S197C63v44Ev();
extern void _ZN6S197C63v45Ev();
extern void _ZN6S197C63v46Ev();
extern void _ZN6S197C63v47Ev();
extern void _ZN6S197C63v48Ev();
extern void _ZN6S197C63v49Ev();
extern void _ZN6S197C63v50Ev();
extern void _ZN6S197C63v51Ev();
extern void _ZN6S197C63v52Ev();
extern void _ZN6S197C63v53Ev();
extern void _ZN6S197C63v54Ev();
extern void _ZN6S197C63v55Ev();
extern void _ZN6S197C63v56Ev();
extern void _ZN6S197C63v57Ev();
extern void _ZN6S197C63v58Ev();
extern void _ZN6S197C63v59Ev();
extern void _ZN6S197C63v60Ev();
extern void _ZN6S197C63v61Ev();
extern void _ZN6S197C63v62Ev();
extern void _ZN6S197C63v63Ev();
extern void _ZN6S197C63v64Ev();
extern void _ZN6S197C63v65Ev();
extern void _ZN6S197C63v66Ev();
extern void _ZN6S197C63v67Ev();
extern void _ZN9S197C5_nt3v68Ev();
extern void _ZN9S197C5_nt3v69Ev();
extern void _ZN9S197C5_nt3v70Ev();
extern void _ZN9S197C5_nt3v71Ev();
extern void _ZN9S197C5_nt3v72Ev();
extern void _ZN9S197C5_nt3v73Ev();
extern void _ZN9S197C5_nt3v74Ev();
extern void _ZN9S197C5_nt3v75Ev();
extern void _ZN9S197C5_nt3v76Ev();
extern void _ZN9S197C5_nt3v77Ev();
extern void _ZN9S197C5_nt3v78Ev();
extern void _ZN9S197C5_nt3v79Ev();
extern void _ZN9S197C5_nt3v80Ev();
extern void _ZN9S197C5_nt3v81Ev();
extern void _ZN9S197C5_nt3v82Ev();
extern void _ZN9S197C5_nt3v83Ev();
extern void _ZN9S197C5_nt3v84Ev();
extern void _ZN9S197C5_nt3v85Ev();
extern void _ZN9S197C5_nt3v86Ev();
extern void _ZN9S197C5_nt3v87Ev();
extern void _ZN9S197C5_nt3v88Ev();
extern void _ZN9S197C5_nt3v89Ev();
extern void _ZN9S197C4_nt3v90Ev();
extern void _ZN9S197C4_nt3v91Ev();
extern void _ZN9S197C4_nt3v92Ev();
extern void _ZN9S197C4_nt3v93Ev();
extern void _ZN9S197C4_nt3v94Ev();
extern void _ZN9S197C4_nt3v95Ev();
extern void _ZN9S197C4_nt3v96Ev();
extern void _ZN9S197C4_nt3v97Ev();
extern void _ZN9S197C4_nt3v98Ev();
extern void _ZN9S197C4_nt3v99Ev();
extern void _ZN9S197C4_nt4v100Ev();
extern void _ZN9S197C4_nt4v101Ev();
extern void _ZN9S197C4_nt4v102Ev();
extern void _ZN9S197C4_nt4v103Ev();
extern void _ZN9S197C4_nt4v104Ev();
extern void _ZN9S197C4_nt4v105Ev();
extern void _ZN9S197C4_nt4v106Ev();
extern void _ZN9S197C4_nt4v107Ev();
extern void _ZN9S197C4_nt4v108Ev();
extern void _ZN9S197C4_nt4v109Ev();
extern void _ZN9S197C3_nt4v110Ev();
extern void _ZN9S197C3_nt4v111Ev();
extern void _ZN9S197C3_nt4v112Ev();
extern void _ZN9S197C3_nt4v113Ev();
extern void _ZN9S197C2_nt4v114Ev();
extern void _ZN9S197C2_nt4v115Ev();
extern void _ZN9S197C2_nt4v116Ev();
extern void _ZN9S197C2_nt4v117Ev();
extern void _ZN9S197C2_nt4v118Ev();
extern void _ZN9S197C2_nt4v119Ev();
extern void _ZN9S197C2_nt4v120Ev();
extern void _ZN6S197C12v1Ev();
extern void _ZN6S197C12v2Ev();
extern void _ZN6S197C12v3Ev();
static  VTBL_ENTRY vtc_S197C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S197C1[0]),
  (VTBL_ENTRY)&_ZN6S197C1D1Ev,
  (VTBL_ENTRY)&_ZN6S197C1D0Ev,
  (VTBL_ENTRY)&_ZN6S197C62v4Ev,
  (VTBL_ENTRY)&_ZN6S197C62v5Ev,
  (VTBL_ENTRY)&_ZN6S197C62v6Ev,
  (VTBL_ENTRY)&_ZN6S197C62v7Ev,
  (VTBL_ENTRY)&_ZN6S197C62v8Ev,
  (VTBL_ENTRY)&_ZN6S197C62v9Ev,
  (VTBL_ENTRY)&_ZN6S197C63v10Ev,
  (VTBL_ENTRY)&_ZN6S197C63v11Ev,
  (VTBL_ENTRY)&_ZN6S197C63v12Ev,
  (VTBL_ENTRY)&_ZN6S197C63v13Ev,
  (VTBL_ENTRY)&_ZN6S197C63v14Ev,
  (VTBL_ENTRY)&_ZN6S197C63v15Ev,
  (VTBL_ENTRY)&_ZN6S197C63v16Ev,
  (VTBL_ENTRY)&_ZN6S197C63v17Ev,
  (VTBL_ENTRY)&_ZN6S197C63v18Ev,
  (VTBL_ENTRY)&_ZN6S197C63v19Ev,
  (VTBL_ENTRY)&_ZN6S197C63v20Ev,
  (VTBL_ENTRY)&_ZN6S197C63v21Ev,
  (VTBL_ENTRY)&_ZN6S197C63v22Ev,
  (VTBL_ENTRY)&_ZN6S197C63v23Ev,
  (VTBL_ENTRY)&_ZN6S197C63v24Ev,
  (VTBL_ENTRY)&_ZN6S197C63v25Ev,
  (VTBL_ENTRY)&_ZN6S197C63v26Ev,
  (VTBL_ENTRY)&_ZN6S197C63v27Ev,
  (VTBL_ENTRY)&_ZN6S197C63v28Ev,
  (VTBL_ENTRY)&_ZN6S197C63v29Ev,
  (VTBL_ENTRY)&_ZN6S197C63v30Ev,
  (VTBL_ENTRY)&_ZN6S197C63v31Ev,
  (VTBL_ENTRY)&_ZN6S197C63v32Ev,
  (VTBL_ENTRY)&_ZN6S197C63v33Ev,
  (VTBL_ENTRY)&_ZN6S197C63v34Ev,
  (VTBL_ENTRY)&_ZN6S197C63v35Ev,
  (VTBL_ENTRY)&_ZN6S197C63v36Ev,
  (VTBL_ENTRY)&_ZN6S197C63v37Ev,
  (VTBL_ENTRY)&_ZN6S197C63v38Ev,
  (VTBL_ENTRY)&_ZN6S197C63v39Ev,
  (VTBL_ENTRY)&_ZN6S197C63v40Ev,
  (VTBL_ENTRY)&_ZN6S197C63v41Ev,
  (VTBL_ENTRY)&_ZN6S197C63v42Ev,
  (VTBL_ENTRY)&_ZN6S197C63v43Ev,
  (VTBL_ENTRY)&_ZN6S197C63v44Ev,
  (VTBL_ENTRY)&_ZN6S197C63v45Ev,
  (VTBL_ENTRY)&_ZN6S197C63v46Ev,
  (VTBL_ENTRY)&_ZN6S197C63v47Ev,
  (VTBL_ENTRY)&_ZN6S197C63v48Ev,
  (VTBL_ENTRY)&_ZN6S197C63v49Ev,
  (VTBL_ENTRY)&_ZN6S197C63v50Ev,
  (VTBL_ENTRY)&_ZN6S197C63v51Ev,
  (VTBL_ENTRY)&_ZN6S197C63v52Ev,
  (VTBL_ENTRY)&_ZN6S197C63v53Ev,
  (VTBL_ENTRY)&_ZN6S197C63v54Ev,
  (VTBL_ENTRY)&_ZN6S197C63v55Ev,
  (VTBL_ENTRY)&_ZN6S197C63v56Ev,
  (VTBL_ENTRY)&_ZN6S197C63v57Ev,
  (VTBL_ENTRY)&_ZN6S197C63v58Ev,
  (VTBL_ENTRY)&_ZN6S197C63v59Ev,
  (VTBL_ENTRY)&_ZN6S197C63v60Ev,
  (VTBL_ENTRY)&_ZN6S197C63v61Ev,
  (VTBL_ENTRY)&_ZN6S197C63v62Ev,
  (VTBL_ENTRY)&_ZN6S197C63v63Ev,
  (VTBL_ENTRY)&_ZN6S197C63v64Ev,
  (VTBL_ENTRY)&_ZN6S197C63v65Ev,
  (VTBL_ENTRY)&_ZN6S197C63v66Ev,
  (VTBL_ENTRY)&_ZN6S197C63v67Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v68Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v69Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S197C5_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S197C4_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S197C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S197C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S197C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S197C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S197C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN6S197C12v1Ev,
  (VTBL_ENTRY)&_ZN6S197C12v2Ev,
  (VTBL_ENTRY)&_ZN6S197C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S197C1[];
extern  VTBL_ENTRY _ZTV6S197C1[];
Class_Descriptor cd_S197C1 = {  "S197C1", // class name
  bases_S197C1, 5,
  &(vtc_S197C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(368,272), // object size
  NSPAIRA(_ZTI6S197C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S197C1),124, //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  S23C8  {
  int s23c8f0;
  __tsi64 s23c8f1;
  void *s23c8f2[4];
  int s23c8f3[2];
  void *s23c8f4;
  ::S3214C4_nt s23c8f5;
  void *s23c8f6[2];
  virtual  ~S23C8(); // _ZN5S23C8D1Ev
  virtual void  v3(); // _ZN5S23C82v3Ev
  virtual void  v4(); // _ZN5S23C82v4Ev
  virtual void  v5(); // _ZN5S23C82v5Ev
  virtual void  v6(); // _ZN5S23C82v6Ev
  virtual void  v7(); // _ZN5S23C82v7Ev
  virtual void  v8(); // _ZN5S23C82v8Ev
  virtual void  v9(); // _ZN5S23C82v9Ev
  virtual void  v10(); // _ZN5S23C83v10Ev
  virtual void  v11(); // _ZN5S23C83v11Ev
  virtual void  v12(); // _ZN5S23C83v12Ev
  virtual void  v13(); // _ZN5S23C83v13Ev
  virtual void  v14(); // _ZN5S23C83v14Ev
  virtual void  v15(); // _ZN5S23C83v15Ev
  virtual void  v16(); // _ZN5S23C83v16Ev
  virtual void  v17(); // _ZN5S23C83v17Ev
  virtual void  v18(); // _ZN5S23C83v18Ev
  virtual void  v19(); // _ZN5S23C83v19Ev
  virtual void  v20(); // _ZN5S23C83v20Ev
  virtual void  v21(); // _ZN5S23C83v21Ev
  virtual void  v22(); // _ZN5S23C83v22Ev
  virtual void  v23(); // _ZN5S23C83v23Ev
  virtual void  v24(); // _ZN5S23C83v24Ev
  virtual void  v25(); // _ZN5S23C83v25Ev
  virtual void  v26(); // _ZN5S23C83v26Ev
  virtual void  v27(); // _ZN5S23C83v27Ev
  virtual void  v28(); // _ZN5S23C83v28Ev
  virtual void  v29(); // _ZN5S23C83v29Ev
  virtual void  v30(); // _ZN5S23C83v30Ev
  virtual void  v31(); // _ZN5S23C83v31Ev
  virtual void  v32(); // _ZN5S23C83v32Ev
  virtual void  v33(); // _ZN5S23C83v33Ev
  virtual void  v34(); // _ZN5S23C83v34Ev
  virtual void  v35(); // _ZN5S23C83v35Ev
  virtual void  v36(); // _ZN5S23C83v36Ev
  virtual void  v37(); // _ZN5S23C83v37Ev
  virtual void  v38(); // _ZN5S23C83v38Ev
  virtual void  v39(); // _ZN5S23C83v39Ev
  virtual void  v40(); // _ZN5S23C83v40Ev
  virtual void  v41(); // _ZN5S23C83v41Ev
  virtual void  v42(); // _ZN5S23C83v42Ev
  virtual void  v43(); // _ZN5S23C83v43Ev
  virtual void  v44(); // _ZN5S23C83v44Ev
  virtual void  v45(); // _ZN5S23C83v45Ev
  virtual void  v46(); // _ZN5S23C83v46Ev
  virtual void  v47(); // _ZN5S23C83v47Ev
  virtual void  v48(); // _ZN5S23C83v48Ev
  virtual void  v49(); // _ZN5S23C83v49Ev
  virtual void  v50(); // _ZN5S23C83v50Ev
  virtual void  v51(); // _ZN5S23C83v51Ev
  virtual void  v52(); // _ZN5S23C83v52Ev
  virtual void  v53(); // _ZN5S23C83v53Ev
  virtual void  v54(); // _ZN5S23C83v54Ev
  virtual void  v55(); // _ZN5S23C83v55Ev
  virtual void  v56(); // _ZN5S23C83v56Ev
  virtual void  v57(); // _ZN5S23C83v57Ev
  virtual void  v58(); // _ZN5S23C83v58Ev
  virtual void  v59(); // _ZN5S23C83v59Ev
  virtual void  v60(); // _ZN5S23C83v60Ev
  virtual void  v61(); // _ZN5S23C83v61Ev
  virtual void  v62(); // _ZN5S23C83v62Ev
  virtual void  v63(); // _ZN5S23C83v63Ev
  virtual void  v64(); // _ZN5S23C83v64Ev
  virtual void  v65(); // _ZN5S23C83v65Ev
  virtual void  v66(); // _ZN5S23C83v66Ev
  S23C8(); // tgen
};
//SIG(-1 S23C8) 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]}


 S23C8 ::~S23C8(){ note_dtor("S23C8", this);}
void  S23C8 ::v3(){vfunc_called(this, "_ZN5S23C82v3Ev");}
void  S23C8 ::v4(){vfunc_called(this, "_ZN5S23C82v4Ev");}
void  S23C8 ::v5(){vfunc_called(this, "_ZN5S23C82v5Ev");}
void  S23C8 ::v6(){vfunc_called(this, "_ZN5S23C82v6Ev");}
void  S23C8 ::v7(){vfunc_called(this, "_ZN5S23C82v7Ev");}
void  S23C8 ::v8(){vfunc_called(this, "_ZN5S23C82v8Ev");}
void  S23C8 ::v9(){vfunc_called(this, "_ZN5S23C82v9Ev");}
void  S23C8 ::v10(){vfunc_called(this, "_ZN5S23C83v10Ev");}
void  S23C8 ::v11(){vfunc_called(this, "_ZN5S23C83v11Ev");}
void  S23C8 ::v12(){vfunc_called(this, "_ZN5S23C83v12Ev");}
void  S23C8 ::v13(){vfunc_called(this, "_ZN5S23C83v13Ev");}
void  S23C8 ::v14(){vfunc_called(this, "_ZN5S23C83v14Ev");}
void  S23C8 ::v15(){vfunc_called(this, "_ZN5S23C83v15Ev");}
void  S23C8 ::v16(){vfunc_called(this, "_ZN5S23C83v16Ev");}
void  S23C8 ::v17(){vfunc_called(this, "_ZN5S23C83v17Ev");}
void  S23C8 ::v18(){vfunc_called(this, "_ZN5S23C83v18Ev");}
void  S23C8 ::v19(){vfunc_called(this, "_ZN5S23C83v19Ev");}
void  S23C8 ::v20(){vfunc_called(this, "_ZN5S23C83v20Ev");}
void  S23C8 ::v21(){vfunc_called(this, "_ZN5S23C83v21Ev");}
void  S23C8 ::v22(){vfunc_called(this, "_ZN5S23C83v22Ev");}
void  S23C8 ::v23(){vfunc_called(this, "_ZN5S23C83v23Ev");}
void  S23C8 ::v24(){vfunc_called(this, "_ZN5S23C83v24Ev");}
void  S23C8 ::v25(){vfunc_called(this, "_ZN5S23C83v25Ev");}
void  S23C8 ::v26(){vfunc_called(this, "_ZN5S23C83v26Ev");}
void  S23C8 ::v27(){vfunc_called(this, "_ZN5S23C83v27Ev");}
void  S23C8 ::v28(){vfunc_called(this, "_ZN5S23C83v28Ev");}
void  S23C8 ::v29(){vfunc_called(this, "_ZN5S23C83v29Ev");}
void  S23C8 ::v30(){vfunc_called(this, "_ZN5S23C83v30Ev");}
void  S23C8 ::v31(){vfunc_called(this, "_ZN5S23C83v31Ev");}
void  S23C8 ::v32(){vfunc_called(this, "_ZN5S23C83v32Ev");}
void  S23C8 ::v33(){vfunc_called(this, "_ZN5S23C83v33Ev");}
void  S23C8 ::v34(){vfunc_called(this, "_ZN5S23C83v34Ev");}
void  S23C8 ::v35(){vfunc_called(this, "_ZN5S23C83v35Ev");}
void  S23C8 ::v36(){vfunc_called(this, "_ZN5S23C83v36Ev");}
void  S23C8 ::v37(){vfunc_called(this, "_ZN5S23C83v37Ev");}
void  S23C8 ::v38(){vfunc_called(this, "_ZN5S23C83v38Ev");}
void  S23C8 ::v39(){vfunc_called(this, "_ZN5S23C83v39Ev");}
void  S23C8 ::v40(){vfunc_called(this, "_ZN5S23C83v40Ev");}
void  S23C8 ::v41(){vfunc_called(this, "_ZN5S23C83v41Ev");}
void  S23C8 ::v42(){vfunc_called(this, "_ZN5S23C83v42Ev");}
void  S23C8 ::v43(){vfunc_called(this, "_ZN5S23C83v43Ev");}
void  S23C8 ::v44(){vfunc_called(this, "_ZN5S23C83v44Ev");}
void  S23C8 ::v45(){vfunc_called(this, "_ZN5S23C83v45Ev");}
void  S23C8 ::v46(){vfunc_called(this, "_ZN5S23C83v46Ev");}
void  S23C8 ::v47(){vfunc_called(this, "_ZN5S23C83v47Ev");}
void  S23C8 ::v48(){vfunc_called(this, "_ZN5S23C83v48Ev");}
void  S23C8 ::v49(){vfunc_called(this, "_ZN5S23C83v49Ev");}
void  S23C8 ::v50(){vfunc_called(this, "_ZN5S23C83v50Ev");}
void  S23C8 ::v51(){vfunc_called(this, "_ZN5S23C83v51Ev");}
void  S23C8 ::v52(){vfunc_called(this, "_ZN5S23C83v52Ev");}
void  S23C8 ::v53(){vfunc_called(this, "_ZN5S23C83v53Ev");}
void  S23C8 ::v54(){vfunc_called(this, "_ZN5S23C83v54Ev");}
void  S23C8 ::v55(){vfunc_called(this, "_ZN5S23C83v55Ev");}
void  S23C8 ::v56(){vfunc_called(this, "_ZN5S23C83v56Ev");}
void  S23C8 ::v57(){vfunc_called(this, "_ZN5S23C83v57Ev");}
void  S23C8 ::v58(){vfunc_called(this, "_ZN5S23C83v58Ev");}
void  S23C8 ::v59(){vfunc_called(this, "_ZN5S23C83v59Ev");}
void  S23C8 ::v60(){vfunc_called(this, "_ZN5S23C83v60Ev");}
void  S23C8 ::v61(){vfunc_called(this, "_ZN5S23C83v61Ev");}
void  S23C8 ::v62(){vfunc_called(this, "_ZN5S23C83v62Ev");}
void  S23C8 ::v63(){vfunc_called(this, "_ZN5S23C83v63Ev");}
void  S23C8 ::v64(){vfunc_called(this, "_ZN5S23C83v64Ev");}
void  S23C8 ::v65(){vfunc_called(this, "_ZN5S23C83v65Ev");}
void  S23C8 ::v66(){vfunc_called(this, "_ZN5S23C83v66Ev");}
S23C8 ::S23C8(){ note_ctor("S23C8", this);} // tgen

static void Test_S23C8()
{
  extern Class_Descriptor cd_S23C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S23C8, buf);
    S23C8 *dp, &lv = *(dp=new (buf) S23C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S23C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S23C8)");
    check_field_offset(lv, s23c8f0, ABISELECT(8,4), "S23C8.s23c8f0");
    check_field_offset(lv, s23c8f1, ABISELECT(16,8), "S23C8.s23c8f1");
    check_field_offset(lv, s23c8f2, ABISELECT(24,16), "S23C8.s23c8f2");
    check_field_offset(lv, s23c8f3, ABISELECT(56,32), "S23C8.s23c8f3");
    check_field_offset(lv, s23c8f4, ABISELECT(64,40), "S23C8.s23c8f4");
    check_field_offset(lv, s23c8f5, ABISELECT(72,44), "S23C8.s23c8f5");
    check_field_offset(lv, s23c8f6, ABISELECT(80,52), "S23C8.s23c8f6");
    test_class_info(&lv, &cd_S23C8);
    dp->~S23C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS23C8(Test_S23C8, "S23C8", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN5S23C8C1Ev();
extern void _ZN5S23C8D1Ev();
Name_Map name_map_S23C8[] = {
  NSPAIR(_ZN5S23C8C1Ev),
  NSPAIR(_ZN5S23C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI5S23C8[];
extern void _ZN5S23C8D1Ev();
extern void _ZN5S23C8D0Ev();
extern void _ZN5S23C82v3Ev();
extern void _ZN5S23C82v4Ev();
extern void _ZN5S23C82v5Ev();
extern void _ZN5S23C82v6Ev();
extern void _ZN5S23C82v7Ev();
extern void _ZN5S23C82v8Ev();
extern void _ZN5S23C82v9Ev();
extern void _ZN5S23C83v10Ev();
extern void _ZN5S23C83v11Ev();
extern void _ZN5S23C83v12Ev();
extern void _ZN5S23C83v13Ev();
extern void _ZN5S23C83v14Ev();
extern void _ZN5S23C83v15Ev();
extern void _ZN5S23C83v16Ev();
extern void _ZN5S23C83v17Ev();
extern void _ZN5S23C83v18Ev();
extern void _ZN5S23C83v19Ev();
extern void _ZN5S23C83v20Ev();
extern void _ZN5S23C83v21Ev();
extern void _ZN5S23C83v22Ev();
extern void _ZN5S23C83v23Ev();
extern void _ZN5S23C83v24Ev();
extern void _ZN5S23C83v25Ev();
extern void _ZN5S23C83v26Ev();
extern void _ZN5S23C83v27Ev();
extern void _ZN5S23C83v28Ev();
extern void _ZN5S23C83v29Ev();
extern void _ZN5S23C83v30Ev();
extern void _ZN5S23C83v31Ev();
extern void _ZN5S23C83v32Ev();
extern void _ZN5S23C83v33Ev();
extern void _ZN5S23C83v34Ev();
extern void _ZN5S23C83v35Ev();
extern void _ZN5S23C83v36Ev();
extern void _ZN5S23C83v37Ev();
extern void _ZN5S23C83v38Ev();
extern void _ZN5S23C83v39Ev();
extern void _ZN5S23C83v40Ev();
extern void _ZN5S23C83v41Ev();
extern void _ZN5S23C83v42Ev();
extern void _ZN5S23C83v43Ev();
extern void _ZN5S23C83v44Ev();
extern void _ZN5S23C83v45Ev();
extern void _ZN5S23C83v46Ev();
extern void _ZN5S23C83v47Ev();
extern void _ZN5S23C83v48Ev();
extern void _ZN5S23C83v49Ev();
extern void _ZN5S23C83v50Ev();
extern void _ZN5S23C83v51Ev();
extern void _ZN5S23C83v52Ev();
extern void _ZN5S23C83v53Ev();
extern void _ZN5S23C83v54Ev();
extern void _ZN5S23C83v55Ev();
extern void _ZN5S23C83v56Ev();
extern void _ZN5S23C83v57Ev();
extern void _ZN5S23C83v58Ev();
extern void _ZN5S23C83v59Ev();
extern void _ZN5S23C83v60Ev();
extern void _ZN5S23C83v61Ev();
extern void _ZN5S23C83v62Ev();
extern void _ZN5S23C83v63Ev();
extern void _ZN5S23C83v64Ev();
extern void _ZN5S23C83v65Ev();
extern void _ZN5S23C83v66Ev();
static  VTBL_ENTRY vtc_S23C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S23C8[0]),
  (VTBL_ENTRY)&_ZN5S23C8D1Ev,
  (VTBL_ENTRY)&_ZN5S23C8D0Ev,
  (VTBL_ENTRY)&_ZN5S23C82v3Ev,
  (VTBL_ENTRY)&_ZN5S23C82v4Ev,
  (VTBL_ENTRY)&_ZN5S23C82v5Ev,
  (VTBL_ENTRY)&_ZN5S23C82v6Ev,
  (VTBL_ENTRY)&_ZN5S23C82v7Ev,
  (VTBL_ENTRY)&_ZN5S23C82v8Ev,
  (VTBL_ENTRY)&_ZN5S23C82v9Ev,
  (VTBL_ENTRY)&_ZN5S23C83v10Ev,
  (VTBL_ENTRY)&_ZN5S23C83v11Ev,
  (VTBL_ENTRY)&_ZN5S23C83v12Ev,
  (VTBL_ENTRY)&_ZN5S23C83v13Ev,
  (VTBL_ENTRY)&_ZN5S23C83v14Ev,
  (VTBL_ENTRY)&_ZN5S23C83v15Ev,
  (VTBL_ENTRY)&_ZN5S23C83v16Ev,
  (VTBL_ENTRY)&_ZN5S23C83v17Ev,
  (VTBL_ENTRY)&_ZN5S23C83v18Ev,
  (VTBL_ENTRY)&_ZN5S23C83v19Ev,
  (VTBL_ENTRY)&_ZN5S23C83v20Ev,
  (VTBL_ENTRY)&_ZN5S23C83v21Ev,
  (VTBL_ENTRY)&_ZN5S23C83v22Ev,
  (VTBL_ENTRY)&_ZN5S23C83v23Ev,
  (VTBL_ENTRY)&_ZN5S23C83v24Ev,
  (VTBL_ENTRY)&_ZN5S23C83v25Ev,
  (VTBL_ENTRY)&_ZN5S23C83v26Ev,
  (VTBL_ENTRY)&_ZN5S23C83v27Ev,
  (VTBL_ENTRY)&_ZN5S23C83v28Ev,
  (VTBL_ENTRY)&_ZN5S23C83v29Ev,
  (VTBL_ENTRY)&_ZN5S23C83v30Ev,
  (VTBL_ENTRY)&_ZN5S23C83v31Ev,
  (VTBL_ENTRY)&_ZN5S23C83v32Ev,
  (VTBL_ENTRY)&_ZN5S23C83v33Ev,
  (VTBL_ENTRY)&_ZN5S23C83v34Ev,
  (VTBL_ENTRY)&_ZN5S23C83v35Ev,
  (VTBL_ENTRY)&_ZN5S23C83v36Ev,
  (VTBL_ENTRY)&_ZN5S23C83v37Ev,
  (VTBL_ENTRY)&_ZN5S23C83v38Ev,
  (VTBL_ENTRY)&_ZN5S23C83v39Ev,
  (VTBL_ENTRY)&_ZN5S23C83v40Ev,
  (VTBL_ENTRY)&_ZN5S23C83v41Ev,
  (VTBL_ENTRY)&_ZN5S23C83v42Ev,
  (VTBL_ENTRY)&_ZN5S23C83v43Ev,
  (VTBL_ENTRY)&_ZN5S23C83v44Ev,
  (VTBL_ENTRY)&_ZN5S23C83v45Ev,
  (VTBL_ENTRY)&_ZN5S23C83v46Ev,
  (VTBL_ENTRY)&_ZN5S23C83v47Ev,
  (VTBL_ENTRY)&_ZN5S23C83v48Ev,
  (VTBL_ENTRY)&_ZN5S23C83v49Ev,
  (VTBL_ENTRY)&_ZN5S23C83v50Ev,
  (VTBL_ENTRY)&_ZN5S23C83v51Ev,
  (VTBL_ENTRY)&_ZN5S23C83v52Ev,
  (VTBL_ENTRY)&_ZN5S23C83v53Ev,
  (VTBL_ENTRY)&_ZN5S23C83v54Ev,
  (VTBL_ENTRY)&_ZN5S23C83v55Ev,
  (VTBL_ENTRY)&_ZN5S23C83v56Ev,
  (VTBL_ENTRY)&_ZN5S23C83v57Ev,
  (VTBL_ENTRY)&_ZN5S23C83v58Ev,
  (VTBL_ENTRY)&_ZN5S23C83v59Ev,
  (VTBL_ENTRY)&_ZN5S23C83v60Ev,
  (VTBL_ENTRY)&_ZN5S23C83v61Ev,
  (VTBL_ENTRY)&_ZN5S23C83v62Ev,
  (VTBL_ENTRY)&_ZN5S23C83v63Ev,
  (VTBL_ENTRY)&_ZN5S23C83v64Ev,
  (VTBL_ENTRY)&_ZN5S23C83v65Ev,
  (VTBL_ENTRY)&_ZN5S23C83v66Ev,
};
extern VTBL_ENTRY _ZTI5S23C8[];
extern  VTBL_ENTRY _ZTV5S23C8[];
Class_Descriptor cd_S23C8 = {  "S23C8", // class name
  0,0,//no base classes
  &(vtc_S23C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI5S23C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV5S23C8),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  S23C7_nt  : S23C8 {
  virtual  ~S23C7_nt(); // _ZN8S23C7_ntD1Ev
  virtual void  v67(); // _ZN8S23C7_nt3v67Ev
  virtual void  v68(); // _ZN8S23C7_nt3v68Ev
  S23C7_nt(); // tgen
};
//SIG(-1 S23C7_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}


 S23C7_nt ::~S23C7_nt(){ note_dtor("S23C7_nt", this);}
void  S23C7_nt ::v67(){vfunc_called(this, "_ZN8S23C7_nt3v67Ev");}
void  S23C7_nt ::v68(){vfunc_called(this, "_ZN8S23C7_nt3v68Ev");}
S23C7_nt ::S23C7_nt(){ note_ctor("S23C7_nt", this);} // tgen

//skip512 S23C7_nt

#else // __cplusplus

extern void _ZN8S23C7_ntC1Ev();
extern void _ZN8S23C7_ntD1Ev();
Name_Map name_map_S23C7_nt[] = {
  NSPAIR(_ZN8S23C7_ntC1Ev),
  NSPAIR(_ZN8S23C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S23C8;
extern VTBL_ENTRY _ZTI5S23C8[];
extern  VTBL_ENTRY _ZTV5S23C8[];
static Base_Class bases_S23C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S23C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S23C7_nt[];
extern void _ZN8S23C7_ntD1Ev();
extern void _ZN8S23C7_ntD0Ev();
extern void _ZN5S23C82v3Ev();
extern void _ZN5S23C82v4Ev();
extern void _ZN5S23C82v5Ev();
extern void _ZN5S23C82v6Ev();
extern void _ZN5S23C82v7Ev();
extern void _ZN5S23C82v8Ev();
extern void _ZN5S23C82v9Ev();
extern void _ZN5S23C83v10Ev();
extern void _ZN5S23C83v11Ev();
extern void _ZN5S23C83v12Ev();
extern void _ZN5S23C83v13Ev();
extern void _ZN5S23C83v14Ev();
extern void _ZN5S23C83v15Ev();
extern void _ZN5S23C83v16Ev();
extern void _ZN5S23C83v17Ev();
extern void _ZN5S23C83v18Ev();
extern void _ZN5S23C83v19Ev();
extern void _ZN5S23C83v20Ev();
extern void _ZN5S23C83v21Ev();
extern void _ZN5S23C83v22Ev();
extern void _ZN5S23C83v23Ev();
extern void _ZN5S23C83v24Ev();
extern void _ZN5S23C83v25Ev();
extern void _ZN5S23C83v26Ev();
extern void _ZN5S23C83v27Ev();
extern void _ZN5S23C83v28Ev();
extern void _ZN5S23C83v29Ev();
extern void _ZN5S23C83v30Ev();
extern void _ZN5S23C83v31Ev();
extern void _ZN5S23C83v32Ev();
extern void _ZN5S23C83v33Ev();
extern void _ZN5S23C83v34Ev();
extern void _ZN5S23C83v35Ev();
extern void _ZN5S23C83v36Ev();
extern void _ZN5S23C83v37Ev();
extern void _ZN5S23C83v38Ev();
extern void _ZN5S23C83v39Ev();
extern void _ZN5S23C83v40Ev();
extern void _ZN5S23C83v41Ev();
extern void _ZN5S23C83v42Ev();
extern void _ZN5S23C83v43Ev();
extern void _ZN5S23C83v44Ev();
extern void _ZN5S23C83v45Ev();
extern void _ZN5S23C83v46Ev();
extern void _ZN5S23C83v47Ev();
extern void _ZN5S23C83v48Ev();
extern void _ZN5S23C83v49Ev();
extern void _ZN5S23C83v50Ev();
extern void _ZN5S23C83v51Ev();
extern void _ZN5S23C83v52Ev();
extern void _ZN5S23C83v53Ev();
extern void _ZN5S23C83v54Ev();
extern void _ZN5S23C83v55Ev();
extern void _ZN5S23C83v56Ev();
extern void _ZN5S23C83v57Ev();
extern void _ZN5S23C83v58Ev();
extern void _ZN5S23C83v59Ev();
extern void _ZN5S23C83v60Ev();
extern void _ZN5S23C83v61Ev();
extern void _ZN5S23C83v62Ev();
extern void _ZN5S23C83v63Ev();
extern void _ZN5S23C83v64Ev();
extern void _ZN5S23C83v65Ev();
extern void _ZN5S23C83v66Ev();
extern void _ZN8S23C7_nt3v67Ev();
extern void _ZN8S23C7_nt3v68Ev();
static  VTBL_ENTRY vtc_S23C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S23C7_nt[0]),
  (VTBL_ENTRY)&_ZN8S23C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN8S23C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN5S23C82v3Ev,
  (VTBL_ENTRY)&_ZN5S23C82v4Ev,
  (VTBL_ENTRY)&_ZN5S23C82v5Ev,
  (VTBL_ENTRY)&_ZN5S23C82v6Ev,
  (VTBL_ENTRY)&_ZN5S23C82v7Ev,
  (VTBL_ENTRY)&_ZN5S23C82v8Ev,
  (VTBL_ENTRY)&_ZN5S23C82v9Ev,
  (VTBL_ENTRY)&_ZN5S23C83v10Ev,
  (VTBL_ENTRY)&_ZN5S23C83v11Ev,
  (VTBL_ENTRY)&_ZN5S23C83v12Ev,
  (VTBL_ENTRY)&_ZN5S23C83v13Ev,
  (VTBL_ENTRY)&_ZN5S23C83v14Ev,
  (VTBL_ENTRY)&_ZN5S23C83v15Ev,
  (VTBL_ENTRY)&_ZN5S23C83v16Ev,
  (VTBL_ENTRY)&_ZN5S23C83v17Ev,
  (VTBL_ENTRY)&_ZN5S23C83v18Ev,
  (VTBL_ENTRY)&_ZN5S23C83v19Ev,
  (VTBL_ENTRY)&_ZN5S23C83v20Ev,
  (VTBL_ENTRY)&_ZN5S23C83v21Ev,
  (VTBL_ENTRY)&_ZN5S23C83v22Ev,
  (VTBL_ENTRY)&_ZN5S23C83v23Ev,
  (VTBL_ENTRY)&_ZN5S23C83v24Ev,
  (VTBL_ENTRY)&_ZN5S23C83v25Ev,
  (VTBL_ENTRY)&_ZN5S23C83v26Ev,
  (VTBL_ENTRY)&_ZN5S23C83v27Ev,
  (VTBL_ENTRY)&_ZN5S23C83v28Ev,
  (VTBL_ENTRY)&_ZN5S23C83v29Ev,
  (VTBL_ENTRY)&_ZN5S23C83v30Ev,
  (VTBL_ENTRY)&_ZN5S23C83v31Ev,
  (VTBL_ENTRY)&_ZN5S23C83v32Ev,
  (VTBL_ENTRY)&_ZN5S23C83v33Ev,
  (VTBL_ENTRY)&_ZN5S23C83v34Ev,
  (VTBL_ENTRY)&_ZN5S23C83v35Ev,
  (VTBL_ENTRY)&_ZN5S23C83v36Ev,
  (VTBL_ENTRY)&_ZN5S23C83v37Ev,
  (VTBL_ENTRY)&_ZN5S23C83v38Ev,
  (VTBL_ENTRY)&_ZN5S23C83v39Ev,
  (VTBL_ENTRY)&_ZN5S23C83v40Ev,
  (VTBL_ENTRY)&_ZN5S23C83v41Ev,
  (VTBL_ENTRY)&_ZN5S23C83v42Ev,
  (VTBL_ENTRY)&_ZN5S23C83v43Ev,
  (VTBL_ENTRY)&_ZN5S23C83v44Ev,
  (VTBL_ENTRY)&_ZN5S23C83v45Ev,
  (VTBL_ENTRY)&_ZN5S23C83v46Ev,
  (VTBL_ENTRY)&_ZN5S23C83v47Ev,
  (VTBL_ENTRY)&_ZN5S23C83v48Ev,
  (VTBL_ENTRY)&_ZN5S23C83v49Ev,
  (VTBL_ENTRY)&_ZN5S23C83v50Ev,
  (VTBL_ENTRY)&_ZN5S23C83v51Ev,
  (VTBL_ENTRY)&_ZN5S23C83v52Ev,
  (VTBL_ENTRY)&_ZN5S23C83v53Ev,
  (VTBL_ENTRY)&_ZN5S23C83v54Ev,
  (VTBL_ENTRY)&_ZN5S23C83v55Ev,
  (VTBL_ENTRY)&_ZN5S23C83v56Ev,
  (VTBL_ENTRY)&_ZN5S23C83v57Ev,
  (VTBL_ENTRY)&_ZN5S23C83v58Ev,
  (VTBL_ENTRY)&_ZN5S23C83v59Ev,
  (VTBL_ENTRY)&_ZN5S23C83v60Ev,
  (VTBL_ENTRY)&_ZN5S23C83v61Ev,
  (VTBL_ENTRY)&_ZN5S23C83v62Ev,
  (VTBL_ENTRY)&_ZN5S23C83v63Ev,
  (VTBL_ENTRY)&_ZN5S23C83v64Ev,
  (VTBL_ENTRY)&_ZN5S23C83v65Ev,
  (VTBL_ENTRY)&_ZN5S23C83v66Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v68Ev,
};
extern VTBL_ENTRY _ZTI8S23C7_nt[];
VTBL_ENTRY *P__ZTI8S23C7_nt = _ZTI8S23C7_nt; 
extern  VTBL_ENTRY _ZTV8S23C7_nt[];
Class_Descriptor cd_S23C7_nt = {  "S23C7_nt", // class name
  bases_S23C7_nt, 1,
  &(vtc_S23C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI8S23C7_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S23C7_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  S23C10_nt  {
  void *s23c10f0;
  ::S3214C4_nt s23c10f1;
  void  mf23c10(); // _ZN9S23C10_nt7mf23c10Ev
};
//SIG(-1 S23C10_nt) C1{ m Fp FC2{ m Fi[2]}}


void  S23C10_nt ::mf23c10(){}

//skip512 S23C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S23C6  : S23C7_nt {
  ::S23C10_nt s23c6f0;
  ::S23C10_nt s23c6f1;
  ::S23C10_nt s23c6f2;
  ::S23C10_nt s23c6f3;
  virtual  ~S23C6(); // _ZN5S23C6D1Ev
  virtual void  v69(); // _ZN5S23C63v69Ev
  virtual void  v70(); // _ZN5S23C63v70Ev
  virtual void  v71(); // _ZN5S23C63v71Ev
  virtual void  v72(); // _ZN5S23C63v72Ev
  virtual void  v73(); // _ZN5S23C63v73Ev
  virtual void  v74(); // _ZN5S23C63v74Ev
  virtual void  v75(); // _ZN5S23C63v75Ev
  S23C6(); // tgen
};
//SIG(-1 S23C6) C1{ BC2{ BC3{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v72 v73} vd v1 v2 v3 v4 v5 v6 v7 FC5{ m Fp FC4} FC5 FC5 FC5}


 S23C6 ::~S23C6(){ note_dtor("S23C6", this);}
void  S23C6 ::v69(){vfunc_called(this, "_ZN5S23C63v69Ev");}
void  S23C6 ::v70(){vfunc_called(this, "_ZN5S23C63v70Ev");}
void  S23C6 ::v71(){vfunc_called(this, "_ZN5S23C63v71Ev");}
void  S23C6 ::v72(){vfunc_called(this, "_ZN5S23C63v72Ev");}
void  S23C6 ::v73(){vfunc_called(this, "_ZN5S23C63v73Ev");}
void  S23C6 ::v74(){vfunc_called(this, "_ZN5S23C63v74Ev");}
void  S23C6 ::v75(){vfunc_called(this, "_ZN5S23C63v75Ev");}
S23C6 ::S23C6(){ note_ctor("S23C6", this);} // tgen

static void Test_S23C6()
{
  extern Class_Descriptor cd_S23C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,28)];
    init_test(&cd_S23C6, buf);
    S23C6 *dp, &lv = *(dp=new (buf) S23C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S23C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S23C6)");
    check_base_class_offset(lv, (S23C8*)(S23C7_nt*), 0, "S23C6");
    check_base_class_offset(lv, (S23C7_nt*), 0, "S23C6");
    check_field_offset(lv, s23c6f0, ABISELECT(96,60), "S23C6.s23c6f0");
    check_field_offset(lv, s23c6f1, ABISELECT(112,72), "S23C6.s23c6f1");
    check_field_offset(lv, s23c6f2, ABISELECT(128,84), "S23C6.s23c6f2");
    check_field_offset(lv, s23c6f3, ABISELECT(144,96), "S23C6.s23c6f3");
    test_class_info(&lv, &cd_S23C6);
    dp->~S23C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS23C6(Test_S23C6, "S23C6", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN5S23C6C1Ev();
extern void _ZN5S23C6D1Ev();
Name_Map name_map_S23C6[] = {
  NSPAIR(_ZN5S23C6C1Ev),
  NSPAIR(_ZN5S23C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S23C8;
extern VTBL_ENTRY _ZTI5S23C8[];
extern  VTBL_ENTRY _ZTV5S23C8[];
extern Class_Descriptor cd_S23C7_nt;
extern VTBL_ENTRY _ZTI8S23C7_nt[];
extern  VTBL_ENTRY _ZTV8S23C7_nt[];
static Base_Class bases_S23C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S23C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S23C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI5S23C6[];
extern void _ZN5S23C6D1Ev();
extern void _ZN5S23C6D0Ev();
extern void _ZN5S23C82v3Ev();
extern void _ZN5S23C82v4Ev();
extern void _ZN5S23C82v5Ev();
extern void _ZN5S23C82v6Ev();
extern void _ZN5S23C82v7Ev();
extern void _ZN5S23C82v8Ev();
extern void _ZN5S23C82v9Ev();
extern void _ZN5S23C83v10Ev();
extern void _ZN5S23C83v11Ev();
extern void _ZN5S23C83v12Ev();
extern void _ZN5S23C83v13Ev();
extern void _ZN5S23C83v14Ev();
extern void _ZN5S23C83v15Ev();
extern void _ZN5S23C83v16Ev();
extern void _ZN5S23C83v17Ev();
extern void _ZN5S23C83v18Ev();
extern void _ZN5S23C83v19Ev();
extern void _ZN5S23C83v20Ev();
extern void _ZN5S23C83v21Ev();
extern void _ZN5S23C83v22Ev();
extern void _ZN5S23C83v23Ev();
extern void _ZN5S23C83v24Ev();
extern void _ZN5S23C83v25Ev();
extern void _ZN5S23C83v26Ev();
extern void _ZN5S23C83v27Ev();
extern void _ZN5S23C83v28Ev();
extern void _ZN5S23C83v29Ev();
extern void _ZN5S23C83v30Ev();
extern void _ZN5S23C83v31Ev();
extern void _ZN5S23C83v32Ev();
extern void _ZN5S23C83v33Ev();
extern void _ZN5S23C83v34Ev();
extern void _ZN5S23C83v35Ev();
extern void _ZN5S23C83v36Ev();
extern void _ZN5S23C83v37Ev();
extern void _ZN5S23C83v38Ev();
extern void _ZN5S23C83v39Ev();
extern void _ZN5S23C83v40Ev();
extern void _ZN5S23C83v41Ev();
extern void _ZN5S23C83v42Ev();
extern void _ZN5S23C83v43Ev();
extern void _ZN5S23C83v44Ev();
extern void _ZN5S23C83v45Ev();
extern void _ZN5S23C83v46Ev();
extern void _ZN5S23C83v47Ev();
extern void _ZN5S23C83v48Ev();
extern void _ZN5S23C83v49Ev();
extern void _ZN5S23C83v50Ev();
extern void _ZN5S23C83v51Ev();
extern void _ZN5S23C83v52Ev();
extern void _ZN5S23C83v53Ev();
extern void _ZN5S23C83v54Ev();
extern void _ZN5S23C83v55Ev();
extern void _ZN5S23C83v56Ev();
extern void _ZN5S23C83v57Ev();
extern void _ZN5S23C83v58Ev();
extern void _ZN5S23C83v59Ev();
extern void _ZN5S23C83v60Ev();
extern void _ZN5S23C83v61Ev();
extern void _ZN5S23C83v62Ev();
extern void _ZN5S23C83v63Ev();
extern void _ZN5S23C83v64Ev();
extern void _ZN5S23C83v65Ev();
extern void _ZN5S23C83v66Ev();
extern void _ZN8S23C7_nt3v67Ev();
extern void _ZN8S23C7_nt3v68Ev();
extern void _ZN5S23C63v69Ev();
extern void _ZN5S23C63v70Ev();
extern void _ZN5S23C63v71Ev();
extern void _ZN5S23C63v72Ev();
extern void _ZN5S23C63v73Ev();
extern void _ZN5S23C63v74Ev();
extern void _ZN5S23C63v75Ev();
static  VTBL_ENTRY vtc_S23C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S23C6[0]),
  (VTBL_ENTRY)&_ZN5S23C6D1Ev,
  (VTBL_ENTRY)&_ZN5S23C6D0Ev,
  (VTBL_ENTRY)&_ZN5S23C82v3Ev,
  (VTBL_ENTRY)&_ZN5S23C82v4Ev,
  (VTBL_ENTRY)&_ZN5S23C82v5Ev,
  (VTBL_ENTRY)&_ZN5S23C82v6Ev,
  (VTBL_ENTRY)&_ZN5S23C82v7Ev,
  (VTBL_ENTRY)&_ZN5S23C82v8Ev,
  (VTBL_ENTRY)&_ZN5S23C82v9Ev,
  (VTBL_ENTRY)&_ZN5S23C83v10Ev,
  (VTBL_ENTRY)&_ZN5S23C83v11Ev,
  (VTBL_ENTRY)&_ZN5S23C83v12Ev,
  (VTBL_ENTRY)&_ZN5S23C83v13Ev,
  (VTBL_ENTRY)&_ZN5S23C83v14Ev,
  (VTBL_ENTRY)&_ZN5S23C83v15Ev,
  (VTBL_ENTRY)&_ZN5S23C83v16Ev,
  (VTBL_ENTRY)&_ZN5S23C83v17Ev,
  (VTBL_ENTRY)&_ZN5S23C83v18Ev,
  (VTBL_ENTRY)&_ZN5S23C83v19Ev,
  (VTBL_ENTRY)&_ZN5S23C83v20Ev,
  (VTBL_ENTRY)&_ZN5S23C83v21Ev,
  (VTBL_ENTRY)&_ZN5S23C83v22Ev,
  (VTBL_ENTRY)&_ZN5S23C83v23Ev,
  (VTBL_ENTRY)&_ZN5S23C83v24Ev,
  (VTBL_ENTRY)&_ZN5S23C83v25Ev,
  (VTBL_ENTRY)&_ZN5S23C83v26Ev,
  (VTBL_ENTRY)&_ZN5S23C83v27Ev,
  (VTBL_ENTRY)&_ZN5S23C83v28Ev,
  (VTBL_ENTRY)&_ZN5S23C83v29Ev,
  (VTBL_ENTRY)&_ZN5S23C83v30Ev,
  (VTBL_ENTRY)&_ZN5S23C83v31Ev,
  (VTBL_ENTRY)&_ZN5S23C83v32Ev,
  (VTBL_ENTRY)&_ZN5S23C83v33Ev,
  (VTBL_ENTRY)&_ZN5S23C83v34Ev,
  (VTBL_ENTRY)&_ZN5S23C83v35Ev,
  (VTBL_ENTRY)&_ZN5S23C83v36Ev,
  (VTBL_ENTRY)&_ZN5S23C83v37Ev,
  (VTBL_ENTRY)&_ZN5S23C83v38Ev,
  (VTBL_ENTRY)&_ZN5S23C83v39Ev,
  (VTBL_ENTRY)&_ZN5S23C83v40Ev,
  (VTBL_ENTRY)&_ZN5S23C83v41Ev,
  (VTBL_ENTRY)&_ZN5S23C83v42Ev,
  (VTBL_ENTRY)&_ZN5S23C83v43Ev,
  (VTBL_ENTRY)&_ZN5S23C83v44Ev,
  (VTBL_ENTRY)&_ZN5S23C83v45Ev,
  (VTBL_ENTRY)&_ZN5S23C83v46Ev,
  (VTBL_ENTRY)&_ZN5S23C83v47Ev,
  (VTBL_ENTRY)&_ZN5S23C83v48Ev,
  (VTBL_ENTRY)&_ZN5S23C83v49Ev,
  (VTBL_ENTRY)&_ZN5S23C83v50Ev,
  (VTBL_ENTRY)&_ZN5S23C83v51Ev,
  (VTBL_ENTRY)&_ZN5S23C83v52Ev,
  (VTBL_ENTRY)&_ZN5S23C83v53Ev,
  (VTBL_ENTRY)&_ZN5S23C83v54Ev,
  (VTBL_ENTRY)&_ZN5S23C83v55Ev,
  (VTBL_ENTRY)&_ZN5S23C83v56Ev,
  (VTBL_ENTRY)&_ZN5S23C83v57Ev,
  (VTBL_ENTRY)&_ZN5S23C83v58Ev,
  (VTBL_ENTRY)&_ZN5S23C83v59Ev,
  (VTBL_ENTRY)&_ZN5S23C83v60Ev,
  (VTBL_ENTRY)&_ZN5S23C83v61Ev,
  (VTBL_ENTRY)&_ZN5S23C83v62Ev,
  (VTBL_ENTRY)&_ZN5S23C83v63Ev,
  (VTBL_ENTRY)&_ZN5S23C83v64Ev,
  (VTBL_ENTRY)&_ZN5S23C83v65Ev,
  (VTBL_ENTRY)&_ZN5S23C83v66Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN5S23C63v69Ev,
  (VTBL_ENTRY)&_ZN5S23C63v70Ev,
  (VTBL_ENTRY)&_ZN5S23C63v71Ev,
  (VTBL_ENTRY)&_ZN5S23C63v72Ev,
  (VTBL_ENTRY)&_ZN5S23C63v73Ev,
  (VTBL_ENTRY)&_ZN5S23C63v74Ev,
  (VTBL_ENTRY)&_ZN5S23C63v75Ev,
};
extern VTBL_ENTRY _ZTI5S23C6[];
extern  VTBL_ENTRY _ZTV5S23C6[];
Class_Descriptor cd_S23C6 = {  "S23C6", // class name
  bases_S23C6, 2,
  &(vtc_S23C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI5S23C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S23C6),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  S23C17_nt  {
  ::S3214C23 s23c17f0;
  void *s23c17f1;
  int s23c17f2;
  void  mf23c17(); // _ZN9S23C17_nt7mf23c17Ev
};
//SIG(-1 S23C17_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fp Fi}


void  S23C17_nt ::mf23c17(){}

//skip512 S23C17_nt

#else // __cplusplus

Class_Descriptor cd_S23C17_nt = {  "S23C17_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  S23C16_nt  : S23C17_nt {
};
//SIG(-1 S23C16_nt) C1{ BC2{ m FC3{ BC4{ m Fp Fi[2]}} Fp Fi}}



//skip512 S23C16_nt

#else // __cplusplus

extern Class_Descriptor cd_S23C17_nt;
static Base_Class bases_S23C16_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S23C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S23C5  : S23C6 {
  ::S3214C22 s23c5f0;
  ::S3214C17 s23c5f1;
  char s23c5f2;
  int s23c5f3[2];
  ::S23C16_nt s23c5f4;
  ::S3214C18 s23c5f5;
  virtual  ~S23C5(); // _ZN5S23C5D1Ev
  virtual void  v76(); // _ZN5S23C53v76Ev
  virtual void  v77(); // _ZN5S23C53v77Ev
  virtual void  v78(); // _ZN5S23C53v78Ev
  virtual void  v79(); // _ZN5S23C53v79Ev
  virtual void  v80(); // _ZN5S23C53v80Ev
  virtual void  v81(); // _ZN5S23C53v81Ev
  virtual void  v82(); // _ZN5S23C53v82Ev
  virtual void  v83(); // _ZN5S23C53v83Ev
  virtual void  v84(); // _ZN5S23C53v84Ev
  virtual void  v85(); // _ZN5S23C53v85Ev
  S23C5(); // tgen
};
//SIG(-1 S23C5) C1{ BC2{ BC3{ BC4{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v75 v76} vd v77 v78 v79 v80 v81 v82 v83 FC6{ m Fp FC5} FC6 FC6 FC6} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 FC7{ BC8{ BC9{ m Fp Fi[2]}}} FC10{ BC11{ BC9}} Fc Fi[2] FC12{ BC13{ m FC8 Fp Fi}} FC11}


 S23C5 ::~S23C5(){ note_dtor("S23C5", this);}
void  S23C5 ::v76(){vfunc_called(this, "_ZN5S23C53v76Ev");}
void  S23C5 ::v77(){vfunc_called(this, "_ZN5S23C53v77Ev");}
void  S23C5 ::v78(){vfunc_called(this, "_ZN5S23C53v78Ev");}
void  S23C5 ::v79(){vfunc_called(this, "_ZN5S23C53v79Ev");}
void  S23C5 ::v80(){vfunc_called(this, "_ZN5S23C53v80Ev");}
void  S23C5 ::v81(){vfunc_called(this, "_ZN5S23C53v81Ev");}
void  S23C5 ::v82(){vfunc_called(this, "_ZN5S23C53v82Ev");}
void  S23C5 ::v83(){vfunc_called(this, "_ZN5S23C53v83Ev");}
void  S23C5 ::v84(){vfunc_called(this, "_ZN5S23C53v84Ev");}
void  S23C5 ::v85(){vfunc_called(this, "_ZN5S23C53v85Ev");}
S23C5 ::S23C5(){ note_ctor("S23C5", this);} // tgen

static void Test_S23C5()
{
  extern Class_Descriptor cd_S23C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,45)];
    init_test(&cd_S23C5, buf);
    S23C5 *dp, &lv = *(dp=new (buf) S23C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,176), "sizeof(S23C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S23C5)");
    check_base_class_offset(lv, (S23C8*)(S23C7_nt*)(S23C6*), 0, "S23C5");
    check_base_class_offset(lv, (S23C7_nt*)(S23C6*), 0, "S23C5");
    check_base_class_offset(lv, (S23C6*), 0, "S23C5");
    check_field_offset(lv, s23c5f0, ABISELECT(160,108), "S23C5.s23c5f0");
    check_field_offset(lv, s23c5f1, ABISELECT(176,120), "S23C5.s23c5f1");
    check_field_offset(lv, s23c5f2, ABISELECT(192,132), "S23C5.s23c5f2");
    check_field_offset(lv, s23c5f3, ABISELECT(196,136), "S23C5.s23c5f3");
    check_field_offset(lv, s23c5f4, ABISELECT(208,144), "S23C5.s23c5f4");
    check_field_offset(lv, s23c5f5, ABISELECT(240,164), "S23C5.s23c5f5");
    test_class_info(&lv, &cd_S23C5);
    dp->~S23C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS23C5(Test_S23C5, "S23C5", ABISELECT(256,176));

#else // __cplusplus

extern void _ZN5S23C5C1Ev();
extern void _ZN5S23C5D1Ev();
Name_Map name_map_S23C5[] = {
  NSPAIR(_ZN5S23C5C1Ev),
  NSPAIR(_ZN5S23C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S23C8;
extern VTBL_ENTRY _ZTI5S23C8[];
extern  VTBL_ENTRY _ZTV5S23C8[];
extern Class_Descriptor cd_S23C7_nt;
extern VTBL_ENTRY _ZTI8S23C7_nt[];
extern  VTBL_ENTRY _ZTV8S23C7_nt[];
extern Class_Descriptor cd_S23C6;
extern VTBL_ENTRY _ZTI5S23C6[];
extern  VTBL_ENTRY _ZTV5S23C6[];
static Base_Class bases_S23C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S23C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S23C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S23C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI5S23C5[];
extern void _ZN5S23C5D1Ev();
extern void _ZN5S23C5D0Ev();
extern void _ZN5S23C82v3Ev();
extern void _ZN5S23C82v4Ev();
extern void _ZN5S23C82v5Ev();
extern void _ZN5S23C82v6Ev();
extern void _ZN5S23C82v7Ev();
extern void _ZN5S23C82v8Ev();
extern void _ZN5S23C82v9Ev();
extern void _ZN5S23C83v10Ev();
extern void _ZN5S23C83v11Ev();
extern void _ZN5S23C83v12Ev();
extern void _ZN5S23C83v13Ev();
extern void _ZN5S23C83v14Ev();
extern void _ZN5S23C83v15Ev();
extern void _ZN5S23C83v16Ev();
extern void _ZN5S23C83v17Ev();
extern void _ZN5S23C83v18Ev();
extern void _ZN5S23C83v19Ev();
extern void _ZN5S23C83v20Ev();
extern void _ZN5S23C83v21Ev();
extern void _ZN5S23C83v22Ev();
extern void _ZN5S23C83v23Ev();
extern void _ZN5S23C83v24Ev();
extern void _ZN5S23C83v25Ev();
extern void _ZN5S23C83v26Ev();
extern void _ZN5S23C83v27Ev();
extern void _ZN5S23C83v28Ev();
extern void _ZN5S23C83v29Ev();
extern void _ZN5S23C83v30Ev();
extern void _ZN5S23C83v31Ev();
extern void _ZN5S23C83v32Ev();
extern void _ZN5S23C83v33Ev();
extern void _ZN5S23C83v34Ev();
extern void _ZN5S23C83v35Ev();
extern void _ZN5S23C83v36Ev();
extern void _ZN5S23C83v37Ev();
extern void _ZN5S23C83v38Ev();
extern void _ZN5S23C83v39Ev();
extern void _ZN5S23C83v40Ev();
extern void _ZN5S23C83v41Ev();
extern void _ZN5S23C83v42Ev();
extern void _ZN5S23C83v43Ev();
extern void _ZN5S23C83v44Ev();
extern void _ZN5S23C83v45Ev();
extern void _ZN5S23C83v46Ev();
extern void _ZN5S23C83v47Ev();
extern void _ZN5S23C83v48Ev();
extern void _ZN5S23C83v49Ev();
extern void _ZN5S23C83v50Ev();
extern void _ZN5S23C83v51Ev();
extern void _ZN5S23C83v52Ev();
extern void _ZN5S23C83v53Ev();
extern void _ZN5S23C83v54Ev();
extern void _ZN5S23C83v55Ev();
extern void _ZN5S23C83v56Ev();
extern void _ZN5S23C83v57Ev();
extern void _ZN5S23C83v58Ev();
extern void _ZN5S23C83v59Ev();
extern void _ZN5S23C83v60Ev();
extern void _ZN5S23C83v61Ev();
extern void _ZN5S23C83v62Ev();
extern void _ZN5S23C83v63Ev();
extern void _ZN5S23C83v64Ev();
extern void _ZN5S23C83v65Ev();
extern void _ZN5S23C83v66Ev();
extern void _ZN8S23C7_nt3v67Ev();
extern void _ZN8S23C7_nt3v68Ev();
extern void _ZN5S23C63v69Ev();
extern void _ZN5S23C63v70Ev();
extern void _ZN5S23C63v71Ev();
extern void _ZN5S23C63v72Ev();
extern void _ZN5S23C63v73Ev();
extern void _ZN5S23C63v74Ev();
extern void _ZN5S23C63v75Ev();
extern void _ZN5S23C53v76Ev();
extern void _ZN5S23C53v77Ev();
extern void _ZN5S23C53v78Ev();
extern void _ZN5S23C53v79Ev();
extern void _ZN5S23C53v80Ev();
extern void _ZN5S23C53v81Ev();
extern void _ZN5S23C53v82Ev();
extern void _ZN5S23C53v83Ev();
extern void _ZN5S23C53v84Ev();
extern void _ZN5S23C53v85Ev();
static  VTBL_ENTRY vtc_S23C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S23C5[0]),
  (VTBL_ENTRY)&_ZN5S23C5D1Ev,
  (VTBL_ENTRY)&_ZN5S23C5D0Ev,
  (VTBL_ENTRY)&_ZN5S23C82v3Ev,
  (VTBL_ENTRY)&_ZN5S23C82v4Ev,
  (VTBL_ENTRY)&_ZN5S23C82v5Ev,
  (VTBL_ENTRY)&_ZN5S23C82v6Ev,
  (VTBL_ENTRY)&_ZN5S23C82v7Ev,
  (VTBL_ENTRY)&_ZN5S23C82v8Ev,
  (VTBL_ENTRY)&_ZN5S23C82v9Ev,
  (VTBL_ENTRY)&_ZN5S23C83v10Ev,
  (VTBL_ENTRY)&_ZN5S23C83v11Ev,
  (VTBL_ENTRY)&_ZN5S23C83v12Ev,
  (VTBL_ENTRY)&_ZN5S23C83v13Ev,
  (VTBL_ENTRY)&_ZN5S23C83v14Ev,
  (VTBL_ENTRY)&_ZN5S23C83v15Ev,
  (VTBL_ENTRY)&_ZN5S23C83v16Ev,
  (VTBL_ENTRY)&_ZN5S23C83v17Ev,
  (VTBL_ENTRY)&_ZN5S23C83v18Ev,
  (VTBL_ENTRY)&_ZN5S23C83v19Ev,
  (VTBL_ENTRY)&_ZN5S23C83v20Ev,
  (VTBL_ENTRY)&_ZN5S23C83v21Ev,
  (VTBL_ENTRY)&_ZN5S23C83v22Ev,
  (VTBL_ENTRY)&_ZN5S23C83v23Ev,
  (VTBL_ENTRY)&_ZN5S23C83v24Ev,
  (VTBL_ENTRY)&_ZN5S23C83v25Ev,
  (VTBL_ENTRY)&_ZN5S23C83v26Ev,
  (VTBL_ENTRY)&_ZN5S23C83v27Ev,
  (VTBL_ENTRY)&_ZN5S23C83v28Ev,
  (VTBL_ENTRY)&_ZN5S23C83v29Ev,
  (VTBL_ENTRY)&_ZN5S23C83v30Ev,
  (VTBL_ENTRY)&_ZN5S23C83v31Ev,
  (VTBL_ENTRY)&_ZN5S23C83v32Ev,
  (VTBL_ENTRY)&_ZN5S23C83v33Ev,
  (VTBL_ENTRY)&_ZN5S23C83v34Ev,
  (VTBL_ENTRY)&_ZN5S23C83v35Ev,
  (VTBL_ENTRY)&_ZN5S23C83v36Ev,
  (VTBL_ENTRY)&_ZN5S23C83v37Ev,
  (VTBL_ENTRY)&_ZN5S23C83v38Ev,
  (VTBL_ENTRY)&_ZN5S23C83v39Ev,
  (VTBL_ENTRY)&_ZN5S23C83v40Ev,
  (VTBL_ENTRY)&_ZN5S23C83v41Ev,
  (VTBL_ENTRY)&_ZN5S23C83v42Ev,
  (VTBL_ENTRY)&_ZN5S23C83v43Ev,
  (VTBL_ENTRY)&_ZN5S23C83v44Ev,
  (VTBL_ENTRY)&_ZN5S23C83v45Ev,
  (VTBL_ENTRY)&_ZN5S23C83v46Ev,
  (VTBL_ENTRY)&_ZN5S23C83v47Ev,
  (VTBL_ENTRY)&_ZN5S23C83v48Ev,
  (VTBL_ENTRY)&_ZN5S23C83v49Ev,
  (VTBL_ENTRY)&_ZN5S23C83v50Ev,
  (VTBL_ENTRY)&_ZN5S23C83v51Ev,
  (VTBL_ENTRY)&_ZN5S23C83v52Ev,
  (VTBL_ENTRY)&_ZN5S23C83v53Ev,
  (VTBL_ENTRY)&_ZN5S23C83v54Ev,
  (VTBL_ENTRY)&_ZN5S23C83v55Ev,
  (VTBL_ENTRY)&_ZN5S23C83v56Ev,
  (VTBL_ENTRY)&_ZN5S23C83v57Ev,
  (VTBL_ENTRY)&_ZN5S23C83v58Ev,
  (VTBL_ENTRY)&_ZN5S23C83v59Ev,
  (VTBL_ENTRY)&_ZN5S23C83v60Ev,
  (VTBL_ENTRY)&_ZN5S23C83v61Ev,
  (VTBL_ENTRY)&_ZN5S23C83v62Ev,
  (VTBL_ENTRY)&_ZN5S23C83v63Ev,
  (VTBL_ENTRY)&_ZN5S23C83v64Ev,
  (VTBL_ENTRY)&_ZN5S23C83v65Ev,
  (VTBL_ENTRY)&_ZN5S23C83v66Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN5S23C63v69Ev,
  (VTBL_ENTRY)&_ZN5S23C63v70Ev,
  (VTBL_ENTRY)&_ZN5S23C63v71Ev,
  (VTBL_ENTRY)&_ZN5S23C63v72Ev,
  (VTBL_ENTRY)&_ZN5S23C63v73Ev,
  (VTBL_ENTRY)&_ZN5S23C63v74Ev,
  (VTBL_ENTRY)&_ZN5S23C63v75Ev,
  (VTBL_ENTRY)&_ZN5S23C53v76Ev,
  (VTBL_ENTRY)&_ZN5S23C53v77Ev,
  (VTBL_ENTRY)&_ZN5S23C53v78Ev,
  (VTBL_ENTRY)&_ZN5S23C53v79Ev,
  (VTBL_ENTRY)&_ZN5S23C53v80Ev,
  (VTBL_ENTRY)&_ZN5S23C53v81Ev,
  (VTBL_ENTRY)&_ZN5S23C53v82Ev,
  (VTBL_ENTRY)&_ZN5S23C53v83Ev,
  (VTBL_ENTRY)&_ZN5S23C53v84Ev,
  (VTBL_ENTRY)&_ZN5S23C53v85Ev,
};
extern VTBL_ENTRY _ZTI5S23C5[];
extern  VTBL_ENTRY _ZTV5S23C5[];
Class_Descriptor cd_S23C5 = {  "S23C5", // class name
  bases_S23C5, 3,
  &(vtc_S23C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,176), // object size
  NSPAIRA(_ZTI5S23C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S23C5),87, //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  S23C4  : S23C5 {
  unsigned int s23c4f0:1;
  unsigned int s23c4f1:1;
  unsigned int s23c4f2:1;
  unsigned int s23c4f3:1;
  unsigned int s23c4f4:1;
  unsigned int s23c4f5:1;
  unsigned int s23c4f6:1;
  unsigned int s23c4f7:1;
  unsigned int s23c4f8:1;
  unsigned int s23c4f9:1;
  unsigned int s23c4f10:1;
  unsigned int s23c4f11:1;
  unsigned int s23c4f12:1;
  ::S3214C4_nt s23c4f13;
  int s23c4f14[25];
  char s23c4f15[3];
  int s23c4f16[6];
  virtual  ~S23C4(); // _ZN5S23C4D1Ev
  virtual void  v86(); // _ZN5S23C43v86Ev
  virtual void  v87(); // _ZN5S23C43v87Ev
  virtual void  v88(); // _ZN5S23C43v88Ev
  virtual void  v89(); // _ZN5S23C43v89Ev
  virtual void  v90(); // _ZN5S23C43v90Ev
  virtual void  v91(); // _ZN5S23C43v91Ev
  S23C4(); // tgen
};
//SIG(-1 S23C4) C1{ BC2{ BC3{ BC4{ BC5{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v71 v72} vd v73 v74 v75 v76 v77 v78 v79 FC7{ m Fp FC6} FC7 FC7 FC7} vd v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 FC8{ BC9{ BC10{ m Fp Fi[2]}}} FC11{ BC12{ BC10}} Fc Fi[2] FC13{ BC14{ m FC9 Fp Fi}} FC12} vd v1 v2 v3 v4 v5 v6 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC6 Fi[25] Fc[3] Fi[6]}


 S23C4 ::~S23C4(){ note_dtor("S23C4", this);}
void  S23C4 ::v86(){vfunc_called(this, "_ZN5S23C43v86Ev");}
void  S23C4 ::v87(){vfunc_called(this, "_ZN5S23C43v87Ev");}
void  S23C4 ::v88(){vfunc_called(this, "_ZN5S23C43v88Ev");}
void  S23C4 ::v89(){vfunc_called(this, "_ZN5S23C43v89Ev");}
void  S23C4 ::v90(){vfunc_called(this, "_ZN5S23C43v90Ev");}
void  S23C4 ::v91(){vfunc_called(this, "_ZN5S23C43v91Ev");}
S23C4 ::S23C4(){ note_ctor("S23C4", this);} // tgen

static void Test_S23C4()
{
  extern Class_Descriptor cd_S23C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,80)];
    init_test(&cd_S23C4, buf);
    S23C4 *dp, &lv = *(dp=new (buf) S23C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,316), "sizeof(S23C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S23C4)");
    check_base_class_offset(lv, (S23C8*)(S23C7_nt*)(S23C6*)(S23C5*), 0, "S23C4");
    check_base_class_offset(lv, (S23C7_nt*)(S23C6*)(S23C5*), 0, "S23C4");
    check_base_class_offset(lv, (S23C6*)(S23C5*), 0, "S23C4");
    check_base_class_offset(lv, (S23C5*), 0, "S23C4");
    set_bf_and_test(lv, s23c4f0, ABISELECT(256,176), 0, 1, 1, "S23C4");
    set_bf_and_test(lv, s23c4f1, ABISELECT(256,176), 1, 1, 1, "S23C4");
    set_bf_and_test(lv, s23c4f2, ABISELECT(256,176), 2, 1, 1, "S23C4");
    set_bf_and_test(lv, s23c4f3, ABISELECT(256,176), 3, 1, 1, "S23C4");
    set_bf_and_test(lv, s23c4f4, ABISELECT(256,176), 4, 1, 1, "S23C4");
    set_bf_and_test(lv, s23c4f5, ABISELECT(256,176), 5, 1, 1, "S23C4");
    set_bf_and_test(lv, s23c4f6, ABISELECT(256,176), 6, 1, 1, "S23C4");
    set_bf_and_test(lv, s23c4f7, ABISELECT(256,176), 7, 1, 1, "S23C4");
    set_bf_and_test(lv, s23c4f8, ABISELECT(257,177), 0, 1, 1, "S23C4");
    set_bf_and_test(lv, s23c4f9, ABISELECT(257,177), 1, 1, 1, "S23C4");
    set_bf_and_test(lv, s23c4f10, ABISELECT(257,177), 2, 1, 1, "S23C4");
    set_bf_and_test(lv, s23c4f11, ABISELECT(257,177), 3, 1, 1, "S23C4");
    set_bf_and_test(lv, s23c4f12, ABISELECT(257,177), 4, 1, 1, "S23C4");
    check_field_offset(lv, s23c4f13, ABISELECT(260,180), "S23C4.s23c4f13");
    check_field_offset(lv, s23c4f14, ABISELECT(268,188), "S23C4.s23c4f14");
    check_field_offset(lv, s23c4f15, ABISELECT(368,288), "S23C4.s23c4f15");
    check_field_offset(lv, s23c4f16, ABISELECT(372,292), "S23C4.s23c4f16");
    test_class_info(&lv, &cd_S23C4);
    dp->~S23C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS23C4(Test_S23C4, "S23C4", ABISELECT(400,316));

#else // __cplusplus

extern void _ZN5S23C4C1Ev();
extern void _ZN5S23C4D1Ev();
Name_Map name_map_S23C4[] = {
  NSPAIR(_ZN5S23C4C1Ev),
  NSPAIR(_ZN5S23C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S23C8;
extern VTBL_ENTRY _ZTI5S23C8[];
extern  VTBL_ENTRY _ZTV5S23C8[];
extern Class_Descriptor cd_S23C7_nt;
extern VTBL_ENTRY _ZTI8S23C7_nt[];
extern  VTBL_ENTRY _ZTV8S23C7_nt[];
extern Class_Descriptor cd_S23C6;
extern VTBL_ENTRY _ZTI5S23C6[];
extern  VTBL_ENTRY _ZTV5S23C6[];
extern Class_Descriptor cd_S23C5;
extern VTBL_ENTRY _ZTI5S23C5[];
extern  VTBL_ENTRY _ZTV5S23C5[];
static Base_Class bases_S23C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S23C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S23C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S23C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S23C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI5S23C4[];
extern void _ZN5S23C4D1Ev();
extern void _ZN5S23C4D0Ev();
extern void _ZN5S23C82v3Ev();
extern void _ZN5S23C82v4Ev();
extern void _ZN5S23C82v5Ev();
extern void _ZN5S23C82v6Ev();
extern void _ZN5S23C82v7Ev();
extern void _ZN5S23C82v8Ev();
extern void _ZN5S23C82v9Ev();
extern void _ZN5S23C83v10Ev();
extern void _ZN5S23C83v11Ev();
extern void _ZN5S23C83v12Ev();
extern void _ZN5S23C83v13Ev();
extern void _ZN5S23C83v14Ev();
extern void _ZN5S23C83v15Ev();
extern void _ZN5S23C83v16Ev();
extern void _ZN5S23C83v17Ev();
extern void _ZN5S23C83v18Ev();
extern void _ZN5S23C83v19Ev();
extern void _ZN5S23C83v20Ev();
extern void _ZN5S23C83v21Ev();
extern void _ZN5S23C83v22Ev();
extern void _ZN5S23C83v23Ev();
extern void _ZN5S23C83v24Ev();
extern void _ZN5S23C83v25Ev();
extern void _ZN5S23C83v26Ev();
extern void _ZN5S23C83v27Ev();
extern void _ZN5S23C83v28Ev();
extern void _ZN5S23C83v29Ev();
extern void _ZN5S23C83v30Ev();
extern void _ZN5S23C83v31Ev();
extern void _ZN5S23C83v32Ev();
extern void _ZN5S23C83v33Ev();
extern void _ZN5S23C83v34Ev();
extern void _ZN5S23C83v35Ev();
extern void _ZN5S23C83v36Ev();
extern void _ZN5S23C83v37Ev();
extern void _ZN5S23C83v38Ev();
extern void _ZN5S23C83v39Ev();
extern void _ZN5S23C83v40Ev();
extern void _ZN5S23C83v41Ev();
extern void _ZN5S23C83v42Ev();
extern void _ZN5S23C83v43Ev();
extern void _ZN5S23C83v44Ev();
extern void _ZN5S23C83v45Ev();
extern void _ZN5S23C83v46Ev();
extern void _ZN5S23C83v47Ev();
extern void _ZN5S23C83v48Ev();
extern void _ZN5S23C83v49Ev();
extern void _ZN5S23C83v50Ev();
extern void _ZN5S23C83v51Ev();
extern void _ZN5S23C83v52Ev();
extern void _ZN5S23C83v53Ev();
extern void _ZN5S23C83v54Ev();
extern void _ZN5S23C83v55Ev();
extern void _ZN5S23C83v56Ev();
extern void _ZN5S23C83v57Ev();
extern void _ZN5S23C83v58Ev();
extern void _ZN5S23C83v59Ev();
extern void _ZN5S23C83v60Ev();
extern void _ZN5S23C83v61Ev();
extern void _ZN5S23C83v62Ev();
extern void _ZN5S23C83v63Ev();
extern void _ZN5S23C83v64Ev();
extern void _ZN5S23C83v65Ev();
extern void _ZN5S23C83v66Ev();
extern void _ZN8S23C7_nt3v67Ev();
extern void _ZN8S23C7_nt3v68Ev();
extern void _ZN5S23C63v69Ev();
extern void _ZN5S23C63v70Ev();
extern void _ZN5S23C63v71Ev();
extern void _ZN5S23C63v72Ev();
extern void _ZN5S23C63v73Ev();
extern void _ZN5S23C63v74Ev();
extern void _ZN5S23C63v75Ev();
extern void _ZN5S23C53v76Ev();
extern void _ZN5S23C53v77Ev();
extern void _ZN5S23C53v78Ev();
extern void _ZN5S23C53v79Ev();
extern void _ZN5S23C53v80Ev();
extern void _ZN5S23C53v81Ev();
extern void _ZN5S23C53v82Ev();
extern void _ZN5S23C53v83Ev();
extern void _ZN5S23C53v84Ev();
extern void _ZN5S23C53v85Ev();
extern void _ZN5S23C43v86Ev();
extern void _ZN5S23C43v87Ev();
extern void _ZN5S23C43v88Ev();
extern void _ZN5S23C43v89Ev();
extern void _ZN5S23C43v90Ev();
extern void _ZN5S23C43v91Ev();
static  VTBL_ENTRY vtc_S23C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S23C4[0]),
  (VTBL_ENTRY)&_ZN5S23C4D1Ev,
  (VTBL_ENTRY)&_ZN5S23C4D0Ev,
  (VTBL_ENTRY)&_ZN5S23C82v3Ev,
  (VTBL_ENTRY)&_ZN5S23C82v4Ev,
  (VTBL_ENTRY)&_ZN5S23C82v5Ev,
  (VTBL_ENTRY)&_ZN5S23C82v6Ev,
  (VTBL_ENTRY)&_ZN5S23C82v7Ev,
  (VTBL_ENTRY)&_ZN5S23C82v8Ev,
  (VTBL_ENTRY)&_ZN5S23C82v9Ev,
  (VTBL_ENTRY)&_ZN5S23C83v10Ev,
  (VTBL_ENTRY)&_ZN5S23C83v11Ev,
  (VTBL_ENTRY)&_ZN5S23C83v12Ev,
  (VTBL_ENTRY)&_ZN5S23C83v13Ev,
  (VTBL_ENTRY)&_ZN5S23C83v14Ev,
  (VTBL_ENTRY)&_ZN5S23C83v15Ev,
  (VTBL_ENTRY)&_ZN5S23C83v16Ev,
  (VTBL_ENTRY)&_ZN5S23C83v17Ev,
  (VTBL_ENTRY)&_ZN5S23C83v18Ev,
  (VTBL_ENTRY)&_ZN5S23C83v19Ev,
  (VTBL_ENTRY)&_ZN5S23C83v20Ev,
  (VTBL_ENTRY)&_ZN5S23C83v21Ev,
  (VTBL_ENTRY)&_ZN5S23C83v22Ev,
  (VTBL_ENTRY)&_ZN5S23C83v23Ev,
  (VTBL_ENTRY)&_ZN5S23C83v24Ev,
  (VTBL_ENTRY)&_ZN5S23C83v25Ev,
  (VTBL_ENTRY)&_ZN5S23C83v26Ev,
  (VTBL_ENTRY)&_ZN5S23C83v27Ev,
  (VTBL_ENTRY)&_ZN5S23C83v28Ev,
  (VTBL_ENTRY)&_ZN5S23C83v29Ev,
  (VTBL_ENTRY)&_ZN5S23C83v30Ev,
  (VTBL_ENTRY)&_ZN5S23C83v31Ev,
  (VTBL_ENTRY)&_ZN5S23C83v32Ev,
  (VTBL_ENTRY)&_ZN5S23C83v33Ev,
  (VTBL_ENTRY)&_ZN5S23C83v34Ev,
  (VTBL_ENTRY)&_ZN5S23C83v35Ev,
  (VTBL_ENTRY)&_ZN5S23C83v36Ev,
  (VTBL_ENTRY)&_ZN5S23C83v37Ev,
  (VTBL_ENTRY)&_ZN5S23C83v38Ev,
  (VTBL_ENTRY)&_ZN5S23C83v39Ev,
  (VTBL_ENTRY)&_ZN5S23C83v40Ev,
  (VTBL_ENTRY)&_ZN5S23C83v41Ev,
  (VTBL_ENTRY)&_ZN5S23C83v42Ev,
  (VTBL_ENTRY)&_ZN5S23C83v43Ev,
  (VTBL_ENTRY)&_ZN5S23C83v44Ev,
  (VTBL_ENTRY)&_ZN5S23C83v45Ev,
  (VTBL_ENTRY)&_ZN5S23C83v46Ev,
  (VTBL_ENTRY)&_ZN5S23C83v47Ev,
  (VTBL_ENTRY)&_ZN5S23C83v48Ev,
  (VTBL_ENTRY)&_ZN5S23C83v49Ev,
  (VTBL_ENTRY)&_ZN5S23C83v50Ev,
  (VTBL_ENTRY)&_ZN5S23C83v51Ev,
  (VTBL_ENTRY)&_ZN5S23C83v52Ev,
  (VTBL_ENTRY)&_ZN5S23C83v53Ev,
  (VTBL_ENTRY)&_ZN5S23C83v54Ev,
  (VTBL_ENTRY)&_ZN5S23C83v55Ev,
  (VTBL_ENTRY)&_ZN5S23C83v56Ev,
  (VTBL_ENTRY)&_ZN5S23C83v57Ev,
  (VTBL_ENTRY)&_ZN5S23C83v58Ev,
  (VTBL_ENTRY)&_ZN5S23C83v59Ev,
  (VTBL_ENTRY)&_ZN5S23C83v60Ev,
  (VTBL_ENTRY)&_ZN5S23C83v61Ev,
  (VTBL_ENTRY)&_ZN5S23C83v62Ev,
  (VTBL_ENTRY)&_ZN5S23C83v63Ev,
  (VTBL_ENTRY)&_ZN5S23C83v64Ev,
  (VTBL_ENTRY)&_ZN5S23C83v65Ev,
  (VTBL_ENTRY)&_ZN5S23C83v66Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN5S23C63v69Ev,
  (VTBL_ENTRY)&_ZN5S23C63v70Ev,
  (VTBL_ENTRY)&_ZN5S23C63v71Ev,
  (VTBL_ENTRY)&_ZN5S23C63v72Ev,
  (VTBL_ENTRY)&_ZN5S23C63v73Ev,
  (VTBL_ENTRY)&_ZN5S23C63v74Ev,
  (VTBL_ENTRY)&_ZN5S23C63v75Ev,
  (VTBL_ENTRY)&_ZN5S23C53v76Ev,
  (VTBL_ENTRY)&_ZN5S23C53v77Ev,
  (VTBL_ENTRY)&_ZN5S23C53v78Ev,
  (VTBL_ENTRY)&_ZN5S23C53v79Ev,
  (VTBL_ENTRY)&_ZN5S23C53v80Ev,
  (VTBL_ENTRY)&_ZN5S23C53v81Ev,
  (VTBL_ENTRY)&_ZN5S23C53v82Ev,
  (VTBL_ENTRY)&_ZN5S23C53v83Ev,
  (VTBL_ENTRY)&_ZN5S23C53v84Ev,
  (VTBL_ENTRY)&_ZN5S23C53v85Ev,
  (VTBL_ENTRY)&_ZN5S23C43v86Ev,
  (VTBL_ENTRY)&_ZN5S23C43v87Ev,
  (VTBL_ENTRY)&_ZN5S23C43v88Ev,
  (VTBL_ENTRY)&_ZN5S23C43v89Ev,
  (VTBL_ENTRY)&_ZN5S23C43v90Ev,
  (VTBL_ENTRY)&_ZN5S23C43v91Ev,
};
extern VTBL_ENTRY _ZTI5S23C4[];
extern  VTBL_ENTRY _ZTV5S23C4[];
Class_Descriptor cd_S23C4 = {  "S23C4", // class name
  bases_S23C4, 4,
  &(vtc_S23C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(400,316), // object size
  NSPAIRA(_ZTI5S23C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S23C4),93, //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  S23C3  : S23C4 {
  virtual  ~S23C3(); // _ZN5S23C3D1Ev
  virtual void  v92(); // _ZN5S23C33v92Ev
  virtual void  v93(); // _ZN5S23C33v93Ev
  S23C3(); // tgen
};
//SIG(-1 S23C3) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ 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 FC7{ m Fi[2]} Fp[2]} vd v67 v68} vd v69 v70 v71 v72 v73 v74 v75 FC8{ m Fp FC7} FC8 FC8 FC8} vd v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 FC9{ BC10{ BC11{ m Fp Fi[2]}}} FC12{ BC13{ BC11}} Fc Fi[2] FC14{ BC15{ m FC10 Fp Fi}} FC13} vd v86 v87 v88 v89 v90 v91 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC7 Fi[25] Fc[3] Fi[6]} vd v1 v2}


 S23C3 ::~S23C3(){ note_dtor("S23C3", this);}
void  S23C3 ::v92(){vfunc_called(this, "_ZN5S23C33v92Ev");}
void  S23C3 ::v93(){vfunc_called(this, "_ZN5S23C33v93Ev");}
S23C3 ::S23C3(){ note_ctor("S23C3", this);} // tgen

static void Test_S23C3()
{
  extern Class_Descriptor cd_S23C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(51,80)];
    init_test(&cd_S23C3, buf);
    S23C3 *dp, &lv = *(dp=new (buf) S23C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(400,316), "sizeof(S23C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S23C3)");
    check_base_class_offset(lv, (S23C8*)(S23C7_nt*)(S23C6*)(S23C5*)(S23C4*), 0, "S23C3");
    check_base_class_offset(lv, (S23C7_nt*)(S23C6*)(S23C5*)(S23C4*), 0, "S23C3");
    check_base_class_offset(lv, (S23C6*)(S23C5*)(S23C4*), 0, "S23C3");
    check_base_class_offset(lv, (S23C5*)(S23C4*), 0, "S23C3");
    check_base_class_offset(lv, (S23C4*), 0, "S23C3");
    test_class_info(&lv, &cd_S23C3);
    dp->~S23C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS23C3(Test_S23C3, "S23C3", ABISELECT(400,316));

#else // __cplusplus

extern void _ZN5S23C3C1Ev();
extern void _ZN5S23C3D1Ev();
Name_Map name_map_S23C3[] = {
  NSPAIR(_ZN5S23C3C1Ev),
  NSPAIR(_ZN5S23C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S23C8;
extern VTBL_ENTRY _ZTI5S23C8[];
extern  VTBL_ENTRY _ZTV5S23C8[];
extern Class_Descriptor cd_S23C7_nt;
extern VTBL_ENTRY _ZTI8S23C7_nt[];
extern  VTBL_ENTRY _ZTV8S23C7_nt[];
extern Class_Descriptor cd_S23C6;
extern VTBL_ENTRY _ZTI5S23C6[];
extern  VTBL_ENTRY _ZTV5S23C6[];
extern Class_Descriptor cd_S23C5;
extern VTBL_ENTRY _ZTI5S23C5[];
extern  VTBL_ENTRY _ZTV5S23C5[];
extern Class_Descriptor cd_S23C4;
extern VTBL_ENTRY _ZTI5S23C4[];
extern  VTBL_ENTRY _ZTV5S23C4[];
static Base_Class bases_S23C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S23C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S23C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S23C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S23C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S23C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S23C3[];
extern void _ZN5S23C3D1Ev();
extern void _ZN5S23C3D0Ev();
extern void _ZN5S23C82v3Ev();
extern void _ZN5S23C82v4Ev();
extern void _ZN5S23C82v5Ev();
extern void _ZN5S23C82v6Ev();
extern void _ZN5S23C82v7Ev();
extern void _ZN5S23C82v8Ev();
extern void _ZN5S23C82v9Ev();
extern void _ZN5S23C83v10Ev();
extern void _ZN5S23C83v11Ev();
extern void _ZN5S23C83v12Ev();
extern void _ZN5S23C83v13Ev();
extern void _ZN5S23C83v14Ev();
extern void _ZN5S23C83v15Ev();
extern void _ZN5S23C83v16Ev();
extern void _ZN5S23C83v17Ev();
extern void _ZN5S23C83v18Ev();
extern void _ZN5S23C83v19Ev();
extern void _ZN5S23C83v20Ev();
extern void _ZN5S23C83v21Ev();
extern void _ZN5S23C83v22Ev();
extern void _ZN5S23C83v23Ev();
extern void _ZN5S23C83v24Ev();
extern void _ZN5S23C83v25Ev();
extern void _ZN5S23C83v26Ev();
extern void _ZN5S23C83v27Ev();
extern void _ZN5S23C83v28Ev();
extern void _ZN5S23C83v29Ev();
extern void _ZN5S23C83v30Ev();
extern void _ZN5S23C83v31Ev();
extern void _ZN5S23C83v32Ev();
extern void _ZN5S23C83v33Ev();
extern void _ZN5S23C83v34Ev();
extern void _ZN5S23C83v35Ev();
extern void _ZN5S23C83v36Ev();
extern void _ZN5S23C83v37Ev();
extern void _ZN5S23C83v38Ev();
extern void _ZN5S23C83v39Ev();
extern void _ZN5S23C83v40Ev();
extern void _ZN5S23C83v41Ev();
extern void _ZN5S23C83v42Ev();
extern void _ZN5S23C83v43Ev();
extern void _ZN5S23C83v44Ev();
extern void _ZN5S23C83v45Ev();
extern void _ZN5S23C83v46Ev();
extern void _ZN5S23C83v47Ev();
extern void _ZN5S23C83v48Ev();
extern void _ZN5S23C83v49Ev();
extern void _ZN5S23C83v50Ev();
extern void _ZN5S23C83v51Ev();
extern void _ZN5S23C83v52Ev();
extern void _ZN5S23C83v53Ev();
extern void _ZN5S23C83v54Ev();
extern void _ZN5S23C83v55Ev();
extern void _ZN5S23C83v56Ev();
extern void _ZN5S23C83v57Ev();
extern void _ZN5S23C83v58Ev();
extern void _ZN5S23C83v59Ev();
extern void _ZN5S23C83v60Ev();
extern void _ZN5S23C83v61Ev();
extern void _ZN5S23C83v62Ev();
extern void _ZN5S23C83v63Ev();
extern void _ZN5S23C83v64Ev();
extern void _ZN5S23C83v65Ev();
extern void _ZN5S23C83v66Ev();
extern void _ZN8S23C7_nt3v67Ev();
extern void _ZN8S23C7_nt3v68Ev();
extern void _ZN5S23C63v69Ev();
extern void _ZN5S23C63v70Ev();
extern void _ZN5S23C63v71Ev();
extern void _ZN5S23C63v72Ev();
extern void _ZN5S23C63v73Ev();
extern void _ZN5S23C63v74Ev();
extern void _ZN5S23C63v75Ev();
extern void _ZN5S23C53v76Ev();
extern void _ZN5S23C53v77Ev();
extern void _ZN5S23C53v78Ev();
extern void _ZN5S23C53v79Ev();
extern void _ZN5S23C53v80Ev();
extern void _ZN5S23C53v81Ev();
extern void _ZN5S23C53v82Ev();
extern void _ZN5S23C53v83Ev();
extern void _ZN5S23C53v84Ev();
extern void _ZN5S23C53v85Ev();
extern void _ZN5S23C43v86Ev();
extern void _ZN5S23C43v87Ev();
extern void _ZN5S23C43v88Ev();
extern void _ZN5S23C43v89Ev();
extern void _ZN5S23C43v90Ev();
extern void _ZN5S23C43v91Ev();
extern void _ZN5S23C33v92Ev();
extern void _ZN5S23C33v93Ev();
static  VTBL_ENTRY vtc_S23C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S23C3[0]),
  (VTBL_ENTRY)&_ZN5S23C3D1Ev,
  (VTBL_ENTRY)&_ZN5S23C3D0Ev,
  (VTBL_ENTRY)&_ZN5S23C82v3Ev,
  (VTBL_ENTRY)&_ZN5S23C82v4Ev,
  (VTBL_ENTRY)&_ZN5S23C82v5Ev,
  (VTBL_ENTRY)&_ZN5S23C82v6Ev,
  (VTBL_ENTRY)&_ZN5S23C82v7Ev,
  (VTBL_ENTRY)&_ZN5S23C82v8Ev,
  (VTBL_ENTRY)&_ZN5S23C82v9Ev,
  (VTBL_ENTRY)&_ZN5S23C83v10Ev,
  (VTBL_ENTRY)&_ZN5S23C83v11Ev,
  (VTBL_ENTRY)&_ZN5S23C83v12Ev,
  (VTBL_ENTRY)&_ZN5S23C83v13Ev,
  (VTBL_ENTRY)&_ZN5S23C83v14Ev,
  (VTBL_ENTRY)&_ZN5S23C83v15Ev,
  (VTBL_ENTRY)&_ZN5S23C83v16Ev,
  (VTBL_ENTRY)&_ZN5S23C83v17Ev,
  (VTBL_ENTRY)&_ZN5S23C83v18Ev,
  (VTBL_ENTRY)&_ZN5S23C83v19Ev,
  (VTBL_ENTRY)&_ZN5S23C83v20Ev,
  (VTBL_ENTRY)&_ZN5S23C83v21Ev,
  (VTBL_ENTRY)&_ZN5S23C83v22Ev,
  (VTBL_ENTRY)&_ZN5S23C83v23Ev,
  (VTBL_ENTRY)&_ZN5S23C83v24Ev,
  (VTBL_ENTRY)&_ZN5S23C83v25Ev,
  (VTBL_ENTRY)&_ZN5S23C83v26Ev,
  (VTBL_ENTRY)&_ZN5S23C83v27Ev,
  (VTBL_ENTRY)&_ZN5S23C83v28Ev,
  (VTBL_ENTRY)&_ZN5S23C83v29Ev,
  (VTBL_ENTRY)&_ZN5S23C83v30Ev,
  (VTBL_ENTRY)&_ZN5S23C83v31Ev,
  (VTBL_ENTRY)&_ZN5S23C83v32Ev,
  (VTBL_ENTRY)&_ZN5S23C83v33Ev,
  (VTBL_ENTRY)&_ZN5S23C83v34Ev,
  (VTBL_ENTRY)&_ZN5S23C83v35Ev,
  (VTBL_ENTRY)&_ZN5S23C83v36Ev,
  (VTBL_ENTRY)&_ZN5S23C83v37Ev,
  (VTBL_ENTRY)&_ZN5S23C83v38Ev,
  (VTBL_ENTRY)&_ZN5S23C83v39Ev,
  (VTBL_ENTRY)&_ZN5S23C83v40Ev,
  (VTBL_ENTRY)&_ZN5S23C83v41Ev,
  (VTBL_ENTRY)&_ZN5S23C83v42Ev,
  (VTBL_ENTRY)&_ZN5S23C83v43Ev,
  (VTBL_ENTRY)&_ZN5S23C83v44Ev,
  (VTBL_ENTRY)&_ZN5S23C83v45Ev,
  (VTBL_ENTRY)&_ZN5S23C83v46Ev,
  (VTBL_ENTRY)&_ZN5S23C83v47Ev,
  (VTBL_ENTRY)&_ZN5S23C83v48Ev,
  (VTBL_ENTRY)&_ZN5S23C83v49Ev,
  (VTBL_ENTRY)&_ZN5S23C83v50Ev,
  (VTBL_ENTRY)&_ZN5S23C83v51Ev,
  (VTBL_ENTRY)&_ZN5S23C83v52Ev,
  (VTBL_ENTRY)&_ZN5S23C83v53Ev,
  (VTBL_ENTRY)&_ZN5S23C83v54Ev,
  (VTBL_ENTRY)&_ZN5S23C83v55Ev,
  (VTBL_ENTRY)&_ZN5S23C83v56Ev,
  (VTBL_ENTRY)&_ZN5S23C83v57Ev,
  (VTBL_ENTRY)&_ZN5S23C83v58Ev,
  (VTBL_ENTRY)&_ZN5S23C83v59Ev,
  (VTBL_ENTRY)&_ZN5S23C83v60Ev,
  (VTBL_ENTRY)&_ZN5S23C83v61Ev,
  (VTBL_ENTRY)&_ZN5S23C83v62Ev,
  (VTBL_ENTRY)&_ZN5S23C83v63Ev,
  (VTBL_ENTRY)&_ZN5S23C83v64Ev,
  (VTBL_ENTRY)&_ZN5S23C83v65Ev,
  (VTBL_ENTRY)&_ZN5S23C83v66Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN5S23C63v69Ev,
  (VTBL_ENTRY)&_ZN5S23C63v70Ev,
  (VTBL_ENTRY)&_ZN5S23C63v71Ev,
  (VTBL_ENTRY)&_ZN5S23C63v72Ev,
  (VTBL_ENTRY)&_ZN5S23C63v73Ev,
  (VTBL_ENTRY)&_ZN5S23C63v74Ev,
  (VTBL_ENTRY)&_ZN5S23C63v75Ev,
  (VTBL_ENTRY)&_ZN5S23C53v76Ev,
  (VTBL_ENTRY)&_ZN5S23C53v77Ev,
  (VTBL_ENTRY)&_ZN5S23C53v78Ev,
  (VTBL_ENTRY)&_ZN5S23C53v79Ev,
  (VTBL_ENTRY)&_ZN5S23C53v80Ev,
  (VTBL_ENTRY)&_ZN5S23C53v81Ev,
  (VTBL_ENTRY)&_ZN5S23C53v82Ev,
  (VTBL_ENTRY)&_ZN5S23C53v83Ev,
  (VTBL_ENTRY)&_ZN5S23C53v84Ev,
  (VTBL_ENTRY)&_ZN5S23C53v85Ev,
  (VTBL_ENTRY)&_ZN5S23C43v86Ev,
  (VTBL_ENTRY)&_ZN5S23C43v87Ev,
  (VTBL_ENTRY)&_ZN5S23C43v88Ev,
  (VTBL_ENTRY)&_ZN5S23C43v89Ev,
  (VTBL_ENTRY)&_ZN5S23C43v90Ev,
  (VTBL_ENTRY)&_ZN5S23C43v91Ev,
  (VTBL_ENTRY)&_ZN5S23C33v92Ev,
  (VTBL_ENTRY)&_ZN5S23C33v93Ev,
};
extern VTBL_ENTRY _ZTI5S23C3[];
extern  VTBL_ENTRY _ZTV5S23C3[];
Class_Descriptor cd_S23C3 = {  "S23C3", // class name
  bases_S23C3, 5,
  &(vtc_S23C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(400,316), // object size
  NSPAIRA(_ZTI5S23C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S23C3),95, //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  S23C2  : S23C3 {
  int s23c2f0;
  unsigned int s23c2f1:1;
  char s23c2f2;
  virtual  ~S23C2(); // _ZN5S23C2D1Ev
  virtual void  v94(); // _ZN5S23C23v94Ev
  virtual void  v95(); // _ZN5S23C23v95Ev
  virtual void  v96(); // _ZN5S23C23v96Ev
  virtual void  v97(); // _ZN5S23C23v97Ev
  virtual void  v98(); // _ZN5S23C23v98Ev
  S23C2(); // tgen
};
//SIG(-1 S23C2) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ 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 FC8{ m Fi[2]} Fp[2]} vd v70 v71} vd v72 v73 v74 v75 v76 v77 v78 FC9{ m Fp FC8} FC9 FC9 FC9} vd v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 FC10{ BC11{ BC12{ m Fp Fi[2]}}} FC13{ BC14{ BC12}} Fc Fi[2] FC15{ BC16{ m FC11 Fp Fi}} FC14} vd v89 v90 v91 v92 v93 v94 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC8 Fi[25] Fc[3] Fi[6]} vd v95 v96} vd v1 v2 v3 v4 v5 Fi Fi:1 Fc}


 S23C2 ::~S23C2(){ note_dtor("S23C2", this);}
void  S23C2 ::v94(){vfunc_called(this, "_ZN5S23C23v94Ev");}
void  S23C2 ::v95(){vfunc_called(this, "_ZN5S23C23v95Ev");}
void  S23C2 ::v96(){vfunc_called(this, "_ZN5S23C23v96Ev");}
void  S23C2 ::v97(){vfunc_called(this, "_ZN5S23C23v97Ev");}
void  S23C2 ::v98(){vfunc_called(this, "_ZN5S23C23v98Ev");}
S23C2 ::S23C2(){ note_ctor("S23C2", this);} // tgen

static void Test_S23C2()
{
  extern Class_Descriptor cd_S23C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(52,82)];
    init_test(&cd_S23C2, buf);
    S23C2 *dp, &lv = *(dp=new (buf) S23C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(408,324), "sizeof(S23C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S23C2)");
    check_base_class_offset(lv, (S23C8*)(S23C7_nt*)(S23C6*)(S23C5*)(S23C4*)(S23C3*), 0, "S23C2");
    check_base_class_offset(lv, (S23C7_nt*)(S23C6*)(S23C5*)(S23C4*)(S23C3*), 0, "S23C2");
    check_base_class_offset(lv, (S23C6*)(S23C5*)(S23C4*)(S23C3*), 0, "S23C2");
    check_base_class_offset(lv, (S23C5*)(S23C4*)(S23C3*), 0, "S23C2");
    check_base_class_offset(lv, (S23C4*)(S23C3*), 0, "S23C2");
    check_base_class_offset(lv, (S23C3*), 0, "S23C2");
    check_field_offset(lv, s23c2f0, ABISELECT(396,316), "S23C2.s23c2f0");
    set_bf_and_test(lv, s23c2f1, ABISELECT(400,320), 0, 1, 1, "S23C2");
    check_field_offset(lv, s23c2f2, ABISELECT(401,321), "S23C2.s23c2f2");
    test_class_info(&lv, &cd_S23C2);
    dp->~S23C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS23C2(Test_S23C2, "S23C2", ABISELECT(408,324));

#else // __cplusplus

extern void _ZN5S23C2C1Ev();
extern void _ZN5S23C2D1Ev();
Name_Map name_map_S23C2[] = {
  NSPAIR(_ZN5S23C2C1Ev),
  NSPAIR(_ZN5S23C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S23C8;
extern VTBL_ENTRY _ZTI5S23C8[];
extern  VTBL_ENTRY _ZTV5S23C8[];
extern Class_Descriptor cd_S23C7_nt;
extern VTBL_ENTRY _ZTI8S23C7_nt[];
extern  VTBL_ENTRY _ZTV8S23C7_nt[];
extern Class_Descriptor cd_S23C6;
extern VTBL_ENTRY _ZTI5S23C6[];
extern  VTBL_ENTRY _ZTV5S23C6[];
extern Class_Descriptor cd_S23C5;
extern VTBL_ENTRY _ZTI5S23C5[];
extern  VTBL_ENTRY _ZTV5S23C5[];
extern Class_Descriptor cd_S23C4;
extern VTBL_ENTRY _ZTI5S23C4[];
extern  VTBL_ENTRY _ZTV5S23C4[];
extern Class_Descriptor cd_S23C3;
extern VTBL_ENTRY _ZTI5S23C3[];
extern  VTBL_ENTRY _ZTV5S23C3[];
static Base_Class bases_S23C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S23C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S23C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S23C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S23C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S23C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S23C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S23C2[];
extern void _ZN5S23C2D1Ev();
extern void _ZN5S23C2D0Ev();
extern void _ZN5S23C82v3Ev();
extern void _ZN5S23C82v4Ev();
extern void _ZN5S23C82v5Ev();
extern void _ZN5S23C82v6Ev();
extern void _ZN5S23C82v7Ev();
extern void _ZN5S23C82v8Ev();
extern void _ZN5S23C82v9Ev();
extern void _ZN5S23C83v10Ev();
extern void _ZN5S23C83v11Ev();
extern void _ZN5S23C83v12Ev();
extern void _ZN5S23C83v13Ev();
extern void _ZN5S23C83v14Ev();
extern void _ZN5S23C83v15Ev();
extern void _ZN5S23C83v16Ev();
extern void _ZN5S23C83v17Ev();
extern void _ZN5S23C83v18Ev();
extern void _ZN5S23C83v19Ev();
extern void _ZN5S23C83v20Ev();
extern void _ZN5S23C83v21Ev();
extern void _ZN5S23C83v22Ev();
extern void _ZN5S23C83v23Ev();
extern void _ZN5S23C83v24Ev();
extern void _ZN5S23C83v25Ev();
extern void _ZN5S23C83v26Ev();
extern void _ZN5S23C83v27Ev();
extern void _ZN5S23C83v28Ev();
extern void _ZN5S23C83v29Ev();
extern void _ZN5S23C83v30Ev();
extern void _ZN5S23C83v31Ev();
extern void _ZN5S23C83v32Ev();
extern void _ZN5S23C83v33Ev();
extern void _ZN5S23C83v34Ev();
extern void _ZN5S23C83v35Ev();
extern void _ZN5S23C83v36Ev();
extern void _ZN5S23C83v37Ev();
extern void _ZN5S23C83v38Ev();
extern void _ZN5S23C83v39Ev();
extern void _ZN5S23C83v40Ev();
extern void _ZN5S23C83v41Ev();
extern void _ZN5S23C83v42Ev();
extern void _ZN5S23C83v43Ev();
extern void _ZN5S23C83v44Ev();
extern void _ZN5S23C83v45Ev();
extern void _ZN5S23C83v46Ev();
extern void _ZN5S23C83v47Ev();
extern void _ZN5S23C83v48Ev();
extern void _ZN5S23C83v49Ev();
extern void _ZN5S23C83v50Ev();
extern void _ZN5S23C83v51Ev();
extern void _ZN5S23C83v52Ev();
extern void _ZN5S23C83v53Ev();
extern void _ZN5S23C83v54Ev();
extern void _ZN5S23C83v55Ev();
extern void _ZN5S23C83v56Ev();
extern void _ZN5S23C83v57Ev();
extern void _ZN5S23C83v58Ev();
extern void _ZN5S23C83v59Ev();
extern void _ZN5S23C83v60Ev();
extern void _ZN5S23C83v61Ev();
extern void _ZN5S23C83v62Ev();
extern void _ZN5S23C83v63Ev();
extern void _ZN5S23C83v64Ev();
extern void _ZN5S23C83v65Ev();
extern void _ZN5S23C83v66Ev();
extern void _ZN8S23C7_nt3v67Ev();
extern void _ZN8S23C7_nt3v68Ev();
extern void _ZN5S23C63v69Ev();
extern void _ZN5S23C63v70Ev();
extern void _ZN5S23C63v71Ev();
extern void _ZN5S23C63v72Ev();
extern void _ZN5S23C63v73Ev();
extern void _ZN5S23C63v74Ev();
extern void _ZN5S23C63v75Ev();
extern void _ZN5S23C53v76Ev();
extern void _ZN5S23C53v77Ev();
extern void _ZN5S23C53v78Ev();
extern void _ZN5S23C53v79Ev();
extern void _ZN5S23C53v80Ev();
extern void _ZN5S23C53v81Ev();
extern void _ZN5S23C53v82Ev();
extern void _ZN5S23C53v83Ev();
extern void _ZN5S23C53v84Ev();
extern void _ZN5S23C53v85Ev();
extern void _ZN5S23C43v86Ev();
extern void _ZN5S23C43v87Ev();
extern void _ZN5S23C43v88Ev();
extern void _ZN5S23C43v89Ev();
extern void _ZN5S23C43v90Ev();
extern void _ZN5S23C43v91Ev();
extern void _ZN5S23C33v92Ev();
extern void _ZN5S23C33v93Ev();
extern void _ZN5S23C23v94Ev();
extern void _ZN5S23C23v95Ev();
extern void _ZN5S23C23v96Ev();
extern void _ZN5S23C23v97Ev();
extern void _ZN5S23C23v98Ev();
static  VTBL_ENTRY vtc_S23C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S23C2[0]),
  (VTBL_ENTRY)&_ZN5S23C2D1Ev,
  (VTBL_ENTRY)&_ZN5S23C2D0Ev,
  (VTBL_ENTRY)&_ZN5S23C82v3Ev,
  (VTBL_ENTRY)&_ZN5S23C82v4Ev,
  (VTBL_ENTRY)&_ZN5S23C82v5Ev,
  (VTBL_ENTRY)&_ZN5S23C82v6Ev,
  (VTBL_ENTRY)&_ZN5S23C82v7Ev,
  (VTBL_ENTRY)&_ZN5S23C82v8Ev,
  (VTBL_ENTRY)&_ZN5S23C82v9Ev,
  (VTBL_ENTRY)&_ZN5S23C83v10Ev,
  (VTBL_ENTRY)&_ZN5S23C83v11Ev,
  (VTBL_ENTRY)&_ZN5S23C83v12Ev,
  (VTBL_ENTRY)&_ZN5S23C83v13Ev,
  (VTBL_ENTRY)&_ZN5S23C83v14Ev,
  (VTBL_ENTRY)&_ZN5S23C83v15Ev,
  (VTBL_ENTRY)&_ZN5S23C83v16Ev,
  (VTBL_ENTRY)&_ZN5S23C83v17Ev,
  (VTBL_ENTRY)&_ZN5S23C83v18Ev,
  (VTBL_ENTRY)&_ZN5S23C83v19Ev,
  (VTBL_ENTRY)&_ZN5S23C83v20Ev,
  (VTBL_ENTRY)&_ZN5S23C83v21Ev,
  (VTBL_ENTRY)&_ZN5S23C83v22Ev,
  (VTBL_ENTRY)&_ZN5S23C83v23Ev,
  (VTBL_ENTRY)&_ZN5S23C83v24Ev,
  (VTBL_ENTRY)&_ZN5S23C83v25Ev,
  (VTBL_ENTRY)&_ZN5S23C83v26Ev,
  (VTBL_ENTRY)&_ZN5S23C83v27Ev,
  (VTBL_ENTRY)&_ZN5S23C83v28Ev,
  (VTBL_ENTRY)&_ZN5S23C83v29Ev,
  (VTBL_ENTRY)&_ZN5S23C83v30Ev,
  (VTBL_ENTRY)&_ZN5S23C83v31Ev,
  (VTBL_ENTRY)&_ZN5S23C83v32Ev,
  (VTBL_ENTRY)&_ZN5S23C83v33Ev,
  (VTBL_ENTRY)&_ZN5S23C83v34Ev,
  (VTBL_ENTRY)&_ZN5S23C83v35Ev,
  (VTBL_ENTRY)&_ZN5S23C83v36Ev,
  (VTBL_ENTRY)&_ZN5S23C83v37Ev,
  (VTBL_ENTRY)&_ZN5S23C83v38Ev,
  (VTBL_ENTRY)&_ZN5S23C83v39Ev,
  (VTBL_ENTRY)&_ZN5S23C83v40Ev,
  (VTBL_ENTRY)&_ZN5S23C83v41Ev,
  (VTBL_ENTRY)&_ZN5S23C83v42Ev,
  (VTBL_ENTRY)&_ZN5S23C83v43Ev,
  (VTBL_ENTRY)&_ZN5S23C83v44Ev,
  (VTBL_ENTRY)&_ZN5S23C83v45Ev,
  (VTBL_ENTRY)&_ZN5S23C83v46Ev,
  (VTBL_ENTRY)&_ZN5S23C83v47Ev,
  (VTBL_ENTRY)&_ZN5S23C83v48Ev,
  (VTBL_ENTRY)&_ZN5S23C83v49Ev,
  (VTBL_ENTRY)&_ZN5S23C83v50Ev,
  (VTBL_ENTRY)&_ZN5S23C83v51Ev,
  (VTBL_ENTRY)&_ZN5S23C83v52Ev,
  (VTBL_ENTRY)&_ZN5S23C83v53Ev,
  (VTBL_ENTRY)&_ZN5S23C83v54Ev,
  (VTBL_ENTRY)&_ZN5S23C83v55Ev,
  (VTBL_ENTRY)&_ZN5S23C83v56Ev,
  (VTBL_ENTRY)&_ZN5S23C83v57Ev,
  (VTBL_ENTRY)&_ZN5S23C83v58Ev,
  (VTBL_ENTRY)&_ZN5S23C83v59Ev,
  (VTBL_ENTRY)&_ZN5S23C83v60Ev,
  (VTBL_ENTRY)&_ZN5S23C83v61Ev,
  (VTBL_ENTRY)&_ZN5S23C83v62Ev,
  (VTBL_ENTRY)&_ZN5S23C83v63Ev,
  (VTBL_ENTRY)&_ZN5S23C83v64Ev,
  (VTBL_ENTRY)&_ZN5S23C83v65Ev,
  (VTBL_ENTRY)&_ZN5S23C83v66Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN5S23C63v69Ev,
  (VTBL_ENTRY)&_ZN5S23C63v70Ev,
  (VTBL_ENTRY)&_ZN5S23C63v71Ev,
  (VTBL_ENTRY)&_ZN5S23C63v72Ev,
  (VTBL_ENTRY)&_ZN5S23C63v73Ev,
  (VTBL_ENTRY)&_ZN5S23C63v74Ev,
  (VTBL_ENTRY)&_ZN5S23C63v75Ev,
  (VTBL_ENTRY)&_ZN5S23C53v76Ev,
  (VTBL_ENTRY)&_ZN5S23C53v77Ev,
  (VTBL_ENTRY)&_ZN5S23C53v78Ev,
  (VTBL_ENTRY)&_ZN5S23C53v79Ev,
  (VTBL_ENTRY)&_ZN5S23C53v80Ev,
  (VTBL_ENTRY)&_ZN5S23C53v81Ev,
  (VTBL_ENTRY)&_ZN5S23C53v82Ev,
  (VTBL_ENTRY)&_ZN5S23C53v83Ev,
  (VTBL_ENTRY)&_ZN5S23C53v84Ev,
  (VTBL_ENTRY)&_ZN5S23C53v85Ev,
  (VTBL_ENTRY)&_ZN5S23C43v86Ev,
  (VTBL_ENTRY)&_ZN5S23C43v87Ev,
  (VTBL_ENTRY)&_ZN5S23C43v88Ev,
  (VTBL_ENTRY)&_ZN5S23C43v89Ev,
  (VTBL_ENTRY)&_ZN5S23C43v90Ev,
  (VTBL_ENTRY)&_ZN5S23C43v91Ev,
  (VTBL_ENTRY)&_ZN5S23C33v92Ev,
  (VTBL_ENTRY)&_ZN5S23C33v93Ev,
  (VTBL_ENTRY)&_ZN5S23C23v94Ev,
  (VTBL_ENTRY)&_ZN5S23C23v95Ev,
  (VTBL_ENTRY)&_ZN5S23C23v96Ev,
  (VTBL_ENTRY)&_ZN5S23C23v97Ev,
  (VTBL_ENTRY)&_ZN5S23C23v98Ev,
};
extern VTBL_ENTRY _ZTI5S23C2[];
extern  VTBL_ENTRY _ZTV5S23C2[];
Class_Descriptor cd_S23C2 = {  "S23C2", // class name
  bases_S23C2, 6,
  &(vtc_S23C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(408,324), // object size
  NSPAIRA(_ZTI5S23C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S23C2),100, //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  S23C21_nt  {
  int s23c21f0[3];
  void  mf23c21(); // _ZN9S23C21_nt7mf23c21Ev
};
//SIG(-1 S23C21_nt) C1{ m Fi[3]}


void  S23C21_nt ::mf23c21(){}

//skip512 S23C21_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S23C1  : S23C2 {
  int s23c1f0[2];
  unsigned int s23c1f1:1;
  unsigned int s23c1f2:1;
  unsigned int s23c1f3:1;
  unsigned int s23c1f4:1;
  unsigned int s23c1f5:1;
  unsigned int s23c1f6:1;
  unsigned int s23c1f7:1;
  unsigned int s23c1f8:1;
  unsigned int s23c1f9:1;
  int s23c1f10[12];
  void *s23c1f11;
  int s23c1f12[14];
  ::S3214C13_nt s23c1f13;
  ::S23C21_nt s23c1f14;
  int s23c1f15[13];
  virtual  ~S23C1(); // _ZN5S23C1D1Ev
  virtual void  v1(); // _ZN5S23C12v1Ev
  virtual void  v2(); // _ZN5S23C12v2Ev
  S23C1(); // tgen
};
//SIG(1 S23C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ BC7{ BC8{ 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 FC9{ m Fi[2]} Fp[2]} vd v67 v68} vd v69 v70 v71 v72 v73 v74 v75 FC10{ m Fp FC9} FC10 FC10 FC10} vd v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 FC11{ BC12{ BC13{ m Fp Fi[2]}}} FC14{ BC15{ BC13}} Fc Fi[2] FC16{ BC17{ m FC12 Fp Fi}} FC15} vd v86 v87 v88 v89 v90 v91 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC9 Fi[25] Fc[3] Fi[6]} vd v92 v93} vd v94 v95 v96 v97 v98 Fi Fi:1 Fc} vd v1 v2 Fi[2] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[12] Fp Fi[14] FC18{ m Fi[3]} FC19{ m Fi[3]} Fi[13]}


 S23C1 ::~S23C1(){ note_dtor("S23C1", this);}
void  S23C1 ::v1(){vfunc_called(this, "_ZN5S23C12v1Ev");}
void  S23C1 ::v2(){vfunc_called(this, "_ZN5S23C12v2Ev");}
S23C1 ::S23C1(){ note_ctor("S23C1", this);} // tgen

static void Test_S23C1()
{
  extern Class_Descriptor cd_S23C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(77,131)];
    init_test(&cd_S23C1, buf);
    S23C1 *dp, &lv = *(dp=new (buf) S23C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(608,520), "sizeof(S23C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S23C1)");
    check_base_class_offset(lv, (S23C8*)(S23C7_nt*)(S23C6*)(S23C5*)(S23C4*)(S23C3*)(S23C2*), 0, "S23C1");
    check_base_class_offset(lv, (S23C7_nt*)(S23C6*)(S23C5*)(S23C4*)(S23C3*)(S23C2*), 0, "S23C1");
    check_base_class_offset(lv, (S23C6*)(S23C5*)(S23C4*)(S23C3*)(S23C2*), 0, "S23C1");
    check_base_class_offset(lv, (S23C5*)(S23C4*)(S23C3*)(S23C2*), 0, "S23C1");
    check_base_class_offset(lv, (S23C4*)(S23C3*)(S23C2*), 0, "S23C1");
    check_base_class_offset(lv, (S23C3*)(S23C2*), 0, "S23C1");
    check_base_class_offset(lv, (S23C2*), 0, "S23C1");
    check_field_offset(lv, s23c1f0, ABISELECT(404,324), "S23C1.s23c1f0");
    set_bf_and_test(lv, s23c1f1, ABISELECT(412,332), 0, 1, 1, "S23C1");
    set_bf_and_test(lv, s23c1f2, ABISELECT(412,332), 1, 1, 1, "S23C1");
    set_bf_and_test(lv, s23c1f3, ABISELECT(412,332), 2, 1, 1, "S23C1");
    set_bf_and_test(lv, s23c1f4, ABISELECT(412,332), 3, 1, 1, "S23C1");
    set_bf_and_test(lv, s23c1f5, ABISELECT(412,332), 4, 1, 1, "S23C1");
    set_bf_and_test(lv, s23c1f6, ABISELECT(412,332), 5, 1, 1, "S23C1");
    set_bf_and_test(lv, s23c1f7, ABISELECT(412,332), 6, 1, 1, "S23C1");
    set_bf_and_test(lv, s23c1f8, ABISELECT(412,332), 7, 1, 1, "S23C1");
    set_bf_and_test(lv, s23c1f9, ABISELECT(413,333), 0, 1, 1, "S23C1");
    check_field_offset(lv, s23c1f10, ABISELECT(416,336), "S23C1.s23c1f10");
    check_field_offset(lv, s23c1f11, ABISELECT(464,384), "S23C1.s23c1f11");
    check_field_offset(lv, s23c1f12, ABISELECT(472,388), "S23C1.s23c1f12");
    check_field_offset(lv, s23c1f13, ABISELECT(528,444), "S23C1.s23c1f13");
    check_field_offset(lv, s23c1f14, ABISELECT(540,456), "S23C1.s23c1f14");
    check_field_offset(lv, s23c1f15, ABISELECT(552,468), "S23C1.s23c1f15");
    test_class_info(&lv, &cd_S23C1);
    dp->~S23C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS23C1(Test_S23C1, "S23C1", ABISELECT(608,520));

#else // __cplusplus

extern void _ZN5S23C1C1Ev();
extern void _ZN5S23C1D1Ev();
Name_Map name_map_S23C1[] = {
  NSPAIR(_ZN5S23C1C1Ev),
  NSPAIR(_ZN5S23C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S23C8;
extern VTBL_ENTRY _ZTI5S23C8[];
extern  VTBL_ENTRY _ZTV5S23C8[];
extern Class_Descriptor cd_S23C7_nt;
extern VTBL_ENTRY _ZTI8S23C7_nt[];
extern  VTBL_ENTRY _ZTV8S23C7_nt[];
extern Class_Descriptor cd_S23C6;
extern VTBL_ENTRY _ZTI5S23C6[];
extern  VTBL_ENTRY _ZTV5S23C6[];
extern Class_Descriptor cd_S23C5;
extern VTBL_ENTRY _ZTI5S23C5[];
extern  VTBL_ENTRY _ZTV5S23C5[];
extern Class_Descriptor cd_S23C4;
extern VTBL_ENTRY _ZTI5S23C4[];
extern  VTBL_ENTRY _ZTV5S23C4[];
extern Class_Descriptor cd_S23C3;
extern VTBL_ENTRY _ZTI5S23C3[];
extern  VTBL_ENTRY _ZTV5S23C3[];
extern Class_Descriptor cd_S23C2;
extern VTBL_ENTRY _ZTI5S23C2[];
extern  VTBL_ENTRY _ZTV5S23C2[];
static Base_Class bases_S23C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S23C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S23C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S23C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S23C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S23C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S23C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S23C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI5S23C1[];
extern void _ZN5S23C1D1Ev();
extern void _ZN5S23C1D0Ev();
extern void _ZN5S23C82v3Ev();
extern void _ZN5S23C82v4Ev();
extern void _ZN5S23C82v5Ev();
extern void _ZN5S23C82v6Ev();
extern void _ZN5S23C82v7Ev();
extern void _ZN5S23C82v8Ev();
extern void _ZN5S23C82v9Ev();
extern void _ZN5S23C83v10Ev();
extern void _ZN5S23C83v11Ev();
extern void _ZN5S23C83v12Ev();
extern void _ZN5S23C83v13Ev();
extern void _ZN5S23C83v14Ev();
extern void _ZN5S23C83v15Ev();
extern void _ZN5S23C83v16Ev();
extern void _ZN5S23C83v17Ev();
extern void _ZN5S23C83v18Ev();
extern void _ZN5S23C83v19Ev();
extern void _ZN5S23C83v20Ev();
extern void _ZN5S23C83v21Ev();
extern void _ZN5S23C83v22Ev();
extern void _ZN5S23C83v23Ev();
extern void _ZN5S23C83v24Ev();
extern void _ZN5S23C83v25Ev();
extern void _ZN5S23C83v26Ev();
extern void _ZN5S23C83v27Ev();
extern void _ZN5S23C83v28Ev();
extern void _ZN5S23C83v29Ev();
extern void _ZN5S23C83v30Ev();
extern void _ZN5S23C83v31Ev();
extern void _ZN5S23C83v32Ev();
extern void _ZN5S23C83v33Ev();
extern void _ZN5S23C83v34Ev();
extern void _ZN5S23C83v35Ev();
extern void _ZN5S23C83v36Ev();
extern void _ZN5S23C83v37Ev();
extern void _ZN5S23C83v38Ev();
extern void _ZN5S23C83v39Ev();
extern void _ZN5S23C83v40Ev();
extern void _ZN5S23C83v41Ev();
extern void _ZN5S23C83v42Ev();
extern void _ZN5S23C83v43Ev();
extern void _ZN5S23C83v44Ev();
extern void _ZN5S23C83v45Ev();
extern void _ZN5S23C83v46Ev();
extern void _ZN5S23C83v47Ev();
extern void _ZN5S23C83v48Ev();
extern void _ZN5S23C83v49Ev();
extern void _ZN5S23C83v50Ev();
extern void _ZN5S23C83v51Ev();
extern void _ZN5S23C83v52Ev();
extern void _ZN5S23C83v53Ev();
extern void _ZN5S23C83v54Ev();
extern void _ZN5S23C83v55Ev();
extern void _ZN5S23C83v56Ev();
extern void _ZN5S23C83v57Ev();
extern void _ZN5S23C83v58Ev();
extern void _ZN5S23C83v59Ev();
extern void _ZN5S23C83v60Ev();
extern void _ZN5S23C83v61Ev();
extern void _ZN5S23C83v62Ev();
extern void _ZN5S23C83v63Ev();
extern void _ZN5S23C83v64Ev();
extern void _ZN5S23C83v65Ev();
extern void _ZN5S23C83v66Ev();
extern void _ZN8S23C7_nt3v67Ev();
extern void _ZN8S23C7_nt3v68Ev();
extern void _ZN5S23C63v69Ev();
extern void _ZN5S23C63v70Ev();
extern void _ZN5S23C63v71Ev();
extern void _ZN5S23C63v72Ev();
extern void _ZN5S23C63v73Ev();
extern void _ZN5S23C63v74Ev();
extern void _ZN5S23C63v75Ev();
extern void _ZN5S23C53v76Ev();
extern void _ZN5S23C53v77Ev();
extern void _ZN5S23C53v78Ev();
extern void _ZN5S23C53v79Ev();
extern void _ZN5S23C53v80Ev();
extern void _ZN5S23C53v81Ev();
extern void _ZN5S23C53v82Ev();
extern void _ZN5S23C53v83Ev();
extern void _ZN5S23C53v84Ev();
extern void _ZN5S23C53v85Ev();
extern void _ZN5S23C43v86Ev();
extern void _ZN5S23C43v87Ev();
extern void _ZN5S23C43v88Ev();
extern void _ZN5S23C43v89Ev();
extern void _ZN5S23C43v90Ev();
extern void _ZN5S23C43v91Ev();
extern void _ZN5S23C33v92Ev();
extern void _ZN5S23C33v93Ev();
extern void _ZN5S23C23v94Ev();
extern void _ZN5S23C23v95Ev();
extern void _ZN5S23C23v96Ev();
extern void _ZN5S23C23v97Ev();
extern void _ZN5S23C23v98Ev();
extern void _ZN5S23C12v1Ev();
extern void _ZN5S23C12v2Ev();
static  VTBL_ENTRY vtc_S23C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI5S23C1[0]),
  (VTBL_ENTRY)&_ZN5S23C1D1Ev,
  (VTBL_ENTRY)&_ZN5S23C1D0Ev,
  (VTBL_ENTRY)&_ZN5S23C82v3Ev,
  (VTBL_ENTRY)&_ZN5S23C82v4Ev,
  (VTBL_ENTRY)&_ZN5S23C82v5Ev,
  (VTBL_ENTRY)&_ZN5S23C82v6Ev,
  (VTBL_ENTRY)&_ZN5S23C82v7Ev,
  (VTBL_ENTRY)&_ZN5S23C82v8Ev,
  (VTBL_ENTRY)&_ZN5S23C82v9Ev,
  (VTBL_ENTRY)&_ZN5S23C83v10Ev,
  (VTBL_ENTRY)&_ZN5S23C83v11Ev,
  (VTBL_ENTRY)&_ZN5S23C83v12Ev,
  (VTBL_ENTRY)&_ZN5S23C83v13Ev,
  (VTBL_ENTRY)&_ZN5S23C83v14Ev,
  (VTBL_ENTRY)&_ZN5S23C83v15Ev,
  (VTBL_ENTRY)&_ZN5S23C83v16Ev,
  (VTBL_ENTRY)&_ZN5S23C83v17Ev,
  (VTBL_ENTRY)&_ZN5S23C83v18Ev,
  (VTBL_ENTRY)&_ZN5S23C83v19Ev,
  (VTBL_ENTRY)&_ZN5S23C83v20Ev,
  (VTBL_ENTRY)&_ZN5S23C83v21Ev,
  (VTBL_ENTRY)&_ZN5S23C83v22Ev,
  (VTBL_ENTRY)&_ZN5S23C83v23Ev,
  (VTBL_ENTRY)&_ZN5S23C83v24Ev,
  (VTBL_ENTRY)&_ZN5S23C83v25Ev,
  (VTBL_ENTRY)&_ZN5S23C83v26Ev,
  (VTBL_ENTRY)&_ZN5S23C83v27Ev,
  (VTBL_ENTRY)&_ZN5S23C83v28Ev,
  (VTBL_ENTRY)&_ZN5S23C83v29Ev,
  (VTBL_ENTRY)&_ZN5S23C83v30Ev,
  (VTBL_ENTRY)&_ZN5S23C83v31Ev,
  (VTBL_ENTRY)&_ZN5S23C83v32Ev,
  (VTBL_ENTRY)&_ZN5S23C83v33Ev,
  (VTBL_ENTRY)&_ZN5S23C83v34Ev,
  (VTBL_ENTRY)&_ZN5S23C83v35Ev,
  (VTBL_ENTRY)&_ZN5S23C83v36Ev,
  (VTBL_ENTRY)&_ZN5S23C83v37Ev,
  (VTBL_ENTRY)&_ZN5S23C83v38Ev,
  (VTBL_ENTRY)&_ZN5S23C83v39Ev,
  (VTBL_ENTRY)&_ZN5S23C83v40Ev,
  (VTBL_ENTRY)&_ZN5S23C83v41Ev,
  (VTBL_ENTRY)&_ZN5S23C83v42Ev,
  (VTBL_ENTRY)&_ZN5S23C83v43Ev,
  (VTBL_ENTRY)&_ZN5S23C83v44Ev,
  (VTBL_ENTRY)&_ZN5S23C83v45Ev,
  (VTBL_ENTRY)&_ZN5S23C83v46Ev,
  (VTBL_ENTRY)&_ZN5S23C83v47Ev,
  (VTBL_ENTRY)&_ZN5S23C83v48Ev,
  (VTBL_ENTRY)&_ZN5S23C83v49Ev,
  (VTBL_ENTRY)&_ZN5S23C83v50Ev,
  (VTBL_ENTRY)&_ZN5S23C83v51Ev,
  (VTBL_ENTRY)&_ZN5S23C83v52Ev,
  (VTBL_ENTRY)&_ZN5S23C83v53Ev,
  (VTBL_ENTRY)&_ZN5S23C83v54Ev,
  (VTBL_ENTRY)&_ZN5S23C83v55Ev,
  (VTBL_ENTRY)&_ZN5S23C83v56Ev,
  (VTBL_ENTRY)&_ZN5S23C83v57Ev,
  (VTBL_ENTRY)&_ZN5S23C83v58Ev,
  (VTBL_ENTRY)&_ZN5S23C83v59Ev,
  (VTBL_ENTRY)&_ZN5S23C83v60Ev,
  (VTBL_ENTRY)&_ZN5S23C83v61Ev,
  (VTBL_ENTRY)&_ZN5S23C83v62Ev,
  (VTBL_ENTRY)&_ZN5S23C83v63Ev,
  (VTBL_ENTRY)&_ZN5S23C83v64Ev,
  (VTBL_ENTRY)&_ZN5S23C83v65Ev,
  (VTBL_ENTRY)&_ZN5S23C83v66Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v67Ev,
  (VTBL_ENTRY)&_ZN8S23C7_nt3v68Ev,
  (VTBL_ENTRY)&_ZN5S23C63v69Ev,
  (VTBL_ENTRY)&_ZN5S23C63v70Ev,
  (VTBL_ENTRY)&_ZN5S23C63v71Ev,
  (VTBL_ENTRY)&_ZN5S23C63v72Ev,
  (VTBL_ENTRY)&_ZN5S23C63v73Ev,
  (VTBL_ENTRY)&_ZN5S23C63v74Ev,
  (VTBL_ENTRY)&_ZN5S23C63v75Ev,
  (VTBL_ENTRY)&_ZN5S23C53v76Ev,
  (VTBL_ENTRY)&_ZN5S23C53v77Ev,
  (VTBL_ENTRY)&_ZN5S23C53v78Ev,
  (VTBL_ENTRY)&_ZN5S23C53v79Ev,
  (VTBL_ENTRY)&_ZN5S23C53v80Ev,
  (VTBL_ENTRY)&_ZN5S23C53v81Ev,
  (VTBL_ENTRY)&_ZN5S23C53v82Ev,
  (VTBL_ENTRY)&_ZN5S23C53v83Ev,
  (VTBL_ENTRY)&_ZN5S23C53v84Ev,
  (VTBL_ENTRY)&_ZN5S23C53v85Ev,
  (VTBL_ENTRY)&_ZN5S23C43v86Ev,
  (VTBL_ENTRY)&_ZN5S23C43v87Ev,
  (VTBL_ENTRY)&_ZN5S23C43v88Ev,
  (VTBL_ENTRY)&_ZN5S23C43v89Ev,
  (VTBL_ENTRY)&_ZN5S23C43v90Ev,
  (VTBL_ENTRY)&_ZN5S23C43v91Ev,
  (VTBL_ENTRY)&_ZN5S23C33v92Ev,
  (VTBL_ENTRY)&_ZN5S23C33v93Ev,
  (VTBL_ENTRY)&_ZN5S23C23v94Ev,
  (VTBL_ENTRY)&_ZN5S23C23v95Ev,
  (VTBL_ENTRY)&_ZN5S23C23v96Ev,
  (VTBL_ENTRY)&_ZN5S23C23v97Ev,
  (VTBL_ENTRY)&_ZN5S23C23v98Ev,
  (VTBL_ENTRY)&_ZN5S23C12v1Ev,
  (VTBL_ENTRY)&_ZN5S23C12v2Ev,
};
extern VTBL_ENTRY _ZTI5S23C1[];
extern  VTBL_ENTRY _ZTV5S23C1[];
Class_Descriptor cd_S23C1 = {  "S23C1", // class name
  bases_S23C1, 7,
  &(vtc_S23C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(608,520), // object size
  NSPAIRA(_ZTI5S23C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV5S23C1),102, //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  S574C5  {
  int s574c5f0;
  __tsi64 s574c5f1;
  void *s574c5f2[4];
  int s574c5f3[2];
  void *s574c5f4;
  ::S3214C4_nt s574c5f5;
  void *s574c5f6[2];
  virtual  ~S574C5(); // _ZN6S574C5D1Ev
  virtual void  v4(); // _ZN6S574C52v4Ev
  virtual void  v5(); // _ZN6S574C52v5Ev
  virtual void  v6(); // _ZN6S574C52v6Ev
  virtual void  v7(); // _ZN6S574C52v7Ev
  virtual void  v8(); // _ZN6S574C52v8Ev
  virtual void  v9(); // _ZN6S574C52v9Ev
  virtual void  v10(); // _ZN6S574C53v10Ev
  virtual void  v11(); // _ZN6S574C53v11Ev
  virtual void  v12(); // _ZN6S574C53v12Ev
  virtual void  v13(); // _ZN6S574C53v13Ev
  virtual void  v14(); // _ZN6S574C53v14Ev
  virtual void  v15(); // _ZN6S574C53v15Ev
  virtual void  v16(); // _ZN6S574C53v16Ev
  virtual void  v17(); // _ZN6S574C53v17Ev
  virtual void  v18(); // _ZN6S574C53v18Ev
  virtual void  v19(); // _ZN6S574C53v19Ev
  virtual void  v20(); // _ZN6S574C53v20Ev
  virtual void  v21(); // _ZN6S574C53v21Ev
  virtual void  v22(); // _ZN6S574C53v22Ev
  virtual void  v23(); // _ZN6S574C53v23Ev
  virtual void  v24(); // _ZN6S574C53v24Ev
  virtual void  v25(); // _ZN6S574C53v25Ev
  virtual void  v26(); // _ZN6S574C53v26Ev
  virtual void  v27(); // _ZN6S574C53v27Ev
  virtual void  v28(); // _ZN6S574C53v28Ev
  virtual void  v29(); // _ZN6S574C53v29Ev
  virtual void  v30(); // _ZN6S574C53v30Ev
  virtual void  v31(); // _ZN6S574C53v31Ev
  virtual void  v32(); // _ZN6S574C53v32Ev
  virtual void  v33(); // _ZN6S574C53v33Ev
  virtual void  v34(); // _ZN6S574C53v34Ev
  virtual void  v35(); // _ZN6S574C53v35Ev
  virtual void  v36(); // _ZN6S574C53v36Ev
  virtual void  v37(); // _ZN6S574C53v37Ev
  virtual void  v38(); // _ZN6S574C53v38Ev
  virtual void  v39(); // _ZN6S574C53v39Ev
  virtual void  v40(); // _ZN6S574C53v40Ev
  virtual void  v41(); // _ZN6S574C53v41Ev
  virtual void  v42(); // _ZN6S574C53v42Ev
  virtual void  v43(); // _ZN6S574C53v43Ev
  virtual void  v44(); // _ZN6S574C53v44Ev
  virtual void  v45(); // _ZN6S574C53v45Ev
  virtual void  v46(); // _ZN6S574C53v46Ev
  virtual void  v47(); // _ZN6S574C53v47Ev
  virtual void  v48(); // _ZN6S574C53v48Ev
  virtual void  v49(); // _ZN6S574C53v49Ev
  virtual void  v50(); // _ZN6S574C53v50Ev
  virtual void  v51(); // _ZN6S574C53v51Ev
  virtual void  v52(); // _ZN6S574C53v52Ev
  virtual void  v53(); // _ZN6S574C53v53Ev
  virtual void  v54(); // _ZN6S574C53v54Ev
  virtual void  v55(); // _ZN6S574C53v55Ev
  virtual void  v56(); // _ZN6S574C53v56Ev
  virtual void  v57(); // _ZN6S574C53v57Ev
  virtual void  v58(); // _ZN6S574C53v58Ev
  virtual void  v59(); // _ZN6S574C53v59Ev
  virtual void  v60(); // _ZN6S574C53v60Ev
  virtual void  v61(); // _ZN6S574C53v61Ev
  virtual void  v62(); // _ZN6S574C53v62Ev
  virtual void  v63(); // _ZN6S574C53v63Ev
  virtual void  v64(); // _ZN6S574C53v64Ev
  virtual void  v65(); // _ZN6S574C53v65Ev
  virtual void  v66(); // _ZN6S574C53v66Ev
  virtual void  v67(); // _ZN6S574C53v67Ev
  S574C5(); // tgen
};
//SIG(-1 S574C5) 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]}


 S574C5 ::~S574C5(){ note_dtor("S574C5", this);}
void  S574C5 ::v4(){vfunc_called(this, "_ZN6S574C52v4Ev");}
void  S574C5 ::v5(){vfunc_called(this, "_ZN6S574C52v5Ev");}
void  S574C5 ::v6(){vfunc_called(this, "_ZN6S574C52v6Ev");}
void  S574C5 ::v7(){vfunc_called(this, "_ZN6S574C52v7Ev");}
void  S574C5 ::v8(){vfunc_called(this, "_ZN6S574C52v8Ev");}
void  S574C5 ::v9(){vfunc_called(this, "_ZN6S574C52v9Ev");}
void  S574C5 ::v10(){vfunc_called(this, "_ZN6S574C53v10Ev");}
void  S574C5 ::v11(){vfunc_called(this, "_ZN6S574C53v11Ev");}
void  S574C5 ::v12(){vfunc_called(this, "_ZN6S574C53v12Ev");}
void  S574C5 ::v13(){vfunc_called(this, "_ZN6S574C53v13Ev");}
void  S574C5 ::v14(){vfunc_called(this, "_ZN6S574C53v14Ev");}
void  S574C5 ::v15(){vfunc_called(this, "_ZN6S574C53v15Ev");}
void  S574C5 ::v16(){vfunc_called(this, "_ZN6S574C53v16Ev");}
void  S574C5 ::v17(){vfunc_called(this, "_ZN6S574C53v17Ev");}
void  S574C5 ::v18(){vfunc_called(this, "_ZN6S574C53v18Ev");}
void  S574C5 ::v19(){vfunc_called(this, "_ZN6S574C53v19Ev");}
void  S574C5 ::v20(){vfunc_called(this, "_ZN6S574C53v20Ev");}
void  S574C5 ::v21(){vfunc_called(this, "_ZN6S574C53v21Ev");}
void  S574C5 ::v22(){vfunc_called(this, "_ZN6S574C53v22Ev");}
void  S574C5 ::v23(){vfunc_called(this, "_ZN6S574C53v23Ev");}
void  S574C5 ::v24(){vfunc_called(this, "_ZN6S574C53v24Ev");}
void  S574C5 ::v25(){vfunc_called(this, "_ZN6S574C53v25Ev");}
void  S574C5 ::v26(){vfunc_called(this, "_ZN6S574C53v26Ev");}
void  S574C5 ::v27(){vfunc_called(this, "_ZN6S574C53v27Ev");}
void  S574C5 ::v28(){vfunc_called(this, "_ZN6S574C53v28Ev");}
void  S574C5 ::v29(){vfunc_called(this, "_ZN6S574C53v29Ev");}
void  S574C5 ::v30(){vfunc_called(this, "_ZN6S574C53v30Ev");}
void  S574C5 ::v31(){vfunc_called(this, "_ZN6S574C53v31Ev");}
void  S574C5 ::v32(){vfunc_called(this, "_ZN6S574C53v32Ev");}
void  S574C5 ::v33(){vfunc_called(this, "_ZN6S574C53v33Ev");}
void  S574C5 ::v34(){vfunc_called(this, "_ZN6S574C53v34Ev");}
void  S574C5 ::v35(){vfunc_called(this, "_ZN6S574C53v35Ev");}
void  S574C5 ::v36(){vfunc_called(this, "_ZN6S574C53v36Ev");}
void  S574C5 ::v37(){vfunc_called(this, "_ZN6S574C53v37Ev");}
void  S574C5 ::v38(){vfunc_called(this, "_ZN6S574C53v38Ev");}
void  S574C5 ::v39(){vfunc_called(this, "_ZN6S574C53v39Ev");}
void  S574C5 ::v40(){vfunc_called(this, "_ZN6S574C53v40Ev");}
void  S574C5 ::v41(){vfunc_called(this, "_ZN6S574C53v41Ev");}
void  S574C5 ::v42(){vfunc_called(this, "_ZN6S574C53v42Ev");}
void  S574C5 ::v43(){vfunc_called(this, "_ZN6S574C53v43Ev");}
void  S574C5 ::v44(){vfunc_called(this, "_ZN6S574C53v44Ev");}
void  S574C5 ::v45(){vfunc_called(this, "_ZN6S574C53v45Ev");}
void  S574C5 ::v46(){vfunc_called(this, "_ZN6S574C53v46Ev");}
void  S574C5 ::v47(){vfunc_called(this, "_ZN6S574C53v47Ev");}
void  S574C5 ::v48(){vfunc_called(this, "_ZN6S574C53v48Ev");}
void  S574C5 ::v49(){vfunc_called(this, "_ZN6S574C53v49Ev");}
void  S574C5 ::v50(){vfunc_called(this, "_ZN6S574C53v50Ev");}
void  S574C5 ::v51(){vfunc_called(this, "_ZN6S574C53v51Ev");}
void  S574C5 ::v52(){vfunc_called(this, "_ZN6S574C53v52Ev");}
void  S574C5 ::v53(){vfunc_called(this, "_ZN6S574C53v53Ev");}
void  S574C5 ::v54(){vfunc_called(this, "_ZN6S574C53v54Ev");}
void  S574C5 ::v55(){vfunc_called(this, "_ZN6S574C53v55Ev");}
void  S574C5 ::v56(){vfunc_called(this, "_ZN6S574C53v56Ev");}
void  S574C5 ::v57(){vfunc_called(this, "_ZN6S574C53v57Ev");}
void  S574C5 ::v58(){vfunc_called(this, "_ZN6S574C53v58Ev");}
void  S574C5 ::v59(){vfunc_called(this, "_ZN6S574C53v59Ev");}
void  S574C5 ::v60(){vfunc_called(this, "_ZN6S574C53v60Ev");}
void  S574C5 ::v61(){vfunc_called(this, "_ZN6S574C53v61Ev");}
void  S574C5 ::v62(){vfunc_called(this, "_ZN6S574C53v62Ev");}
void  S574C5 ::v63(){vfunc_called(this, "_ZN6S574C53v63Ev");}
void  S574C5 ::v64(){vfunc_called(this, "_ZN6S574C53v64Ev");}
void  S574C5 ::v65(){vfunc_called(this, "_ZN6S574C53v65Ev");}
void  S574C5 ::v66(){vfunc_called(this, "_ZN6S574C53v66Ev");}
void  S574C5 ::v67(){vfunc_called(this, "_ZN6S574C53v67Ev");}
S574C5 ::S574C5(){ note_ctor("S574C5", this);} // tgen

static void Test_S574C5()
{
  extern Class_Descriptor cd_S574C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S574C5, buf);
    S574C5 *dp, &lv = *(dp=new (buf) S574C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S574C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S574C5)");
    check_field_offset(lv, s574c5f0, ABISELECT(8,4), "S574C5.s574c5f0");
    check_field_offset(lv, s574c5f1, ABISELECT(16,8), "S574C5.s574c5f1");
    check_field_offset(lv, s574c5f2, ABISELECT(24,16), "S574C5.s574c5f2");
    check_field_offset(lv, s574c5f3, ABISELECT(56,32), "S574C5.s574c5f3");
    check_field_offset(lv, s574c5f4, ABISELECT(64,40), "S574C5.s574c5f4");
    check_field_offset(lv, s574c5f5, ABISELECT(72,44), "S574C5.s574c5f5");
    check_field_offset(lv, s574c5f6, ABISELECT(80,52), "S574C5.s574c5f6");
    test_class_info(&lv, &cd_S574C5);
    dp->~S574C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS574C5(Test_S574C5, "S574C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S574C5C1Ev();
extern void _ZN6S574C5D1Ev();
Name_Map name_map_S574C5[] = {
  NSPAIR(_ZN6S574C5C1Ev),
  NSPAIR(_ZN6S574C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S574C5[];
extern void _ZN6S574C5D1Ev();
extern void _ZN6S574C5D0Ev();
extern void _ZN6S574C52v4Ev();
extern void _ZN6S574C52v5Ev();
extern void _ZN6S574C52v6Ev();
extern void _ZN6S574C52v7Ev();
extern void _ZN6S574C52v8Ev();
extern void _ZN6S574C52v9Ev();
extern void _ZN6S574C53v10Ev();
extern void _ZN6S574C53v11Ev();
extern void _ZN6S574C53v12Ev();
extern void _ZN6S574C53v13Ev();
extern void _ZN6S574C53v14Ev();
extern void _ZN6S574C53v15Ev();
extern void _ZN6S574C53v16Ev();
extern void _ZN6S574C53v17Ev();
extern void _ZN6S574C53v18Ev();
extern void _ZN6S574C53v19Ev();
extern void _ZN6S574C53v20Ev();
extern void _ZN6S574C53v21Ev();
extern void _ZN6S574C53v22Ev();
extern void _ZN6S574C53v23Ev();
extern void _ZN6S574C53v24Ev();
extern void _ZN6S574C53v25Ev();
extern void _ZN6S574C53v26Ev();
extern void _ZN6S574C53v27Ev();
extern void _ZN6S574C53v28Ev();
extern void _ZN6S574C53v29Ev();
extern void _ZN6S574C53v30Ev();
extern void _ZN6S574C53v31Ev();
extern void _ZN6S574C53v32Ev();
extern void _ZN6S574C53v33Ev();
extern void _ZN6S574C53v34Ev();
extern void _ZN6S574C53v35Ev();
extern void _ZN6S574C53v36Ev();
extern void _ZN6S574C53v37Ev();
extern void _ZN6S574C53v38Ev();
extern void _ZN6S574C53v39Ev();
extern void _ZN6S574C53v40Ev();
extern void _ZN6S574C53v41Ev();
extern void _ZN6S574C53v42Ev();
extern void _ZN6S574C53v43Ev();
extern void _ZN6S574C53v44Ev();
extern void _ZN6S574C53v45Ev();
extern void _ZN6S574C53v46Ev();
extern void _ZN6S574C53v47Ev();
extern void _ZN6S574C53v48Ev();
extern void _ZN6S574C53v49Ev();
extern void _ZN6S574C53v50Ev();
extern void _ZN6S574C53v51Ev();
extern void _ZN6S574C53v52Ev();
extern void _ZN6S574C53v53Ev();
extern void _ZN6S574C53v54Ev();
extern void _ZN6S574C53v55Ev();
extern void _ZN6S574C53v56Ev();
extern void _ZN6S574C53v57Ev();
extern void _ZN6S574C53v58Ev();
extern void _ZN6S574C53v59Ev();
extern void _ZN6S574C53v60Ev();
extern void _ZN6S574C53v61Ev();
extern void _ZN6S574C53v62Ev();
extern void _ZN6S574C53v63Ev();
extern void _ZN6S574C53v64Ev();
extern void _ZN6S574C53v65Ev();
extern void _ZN6S574C53v66Ev();
extern void _ZN6S574C53v67Ev();
static  VTBL_ENTRY vtc_S574C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S574C5[0]),
  (VTBL_ENTRY)&_ZN6S574C5D1Ev,
  (VTBL_ENTRY)&_ZN6S574C5D0Ev,
  (VTBL_ENTRY)&_ZN6S574C52v4Ev,
  (VTBL_ENTRY)&_ZN6S574C52v5Ev,
  (VTBL_ENTRY)&_ZN6S574C52v6Ev,
  (VTBL_ENTRY)&_ZN6S574C52v7Ev,
  (VTBL_ENTRY)&_ZN6S574C52v8Ev,
  (VTBL_ENTRY)&_ZN6S574C52v9Ev,
  (VTBL_ENTRY)&_ZN6S574C53v10Ev,
  (VTBL_ENTRY)&_ZN6S574C53v11Ev,
  (VTBL_ENTRY)&_ZN6S574C53v12Ev,
  (VTBL_ENTRY)&_ZN6S574C53v13Ev,
  (VTBL_ENTRY)&_ZN6S574C53v14Ev,
  (VTBL_ENTRY)&_ZN6S574C53v15Ev,
  (VTBL_ENTRY)&_ZN6S574C53v16Ev,
  (VTBL_ENTRY)&_ZN6S574C53v17Ev,
  (VTBL_ENTRY)&_ZN6S574C53v18Ev,
  (VTBL_ENTRY)&_ZN6S574C53v19Ev,
  (VTBL_ENTRY)&_ZN6S574C53v20Ev,
  (VTBL_ENTRY)&_ZN6S574C53v21Ev,
  (VTBL_ENTRY)&_ZN6S574C53v22Ev,
  (VTBL_ENTRY)&_ZN6S574C53v23Ev,
  (VTBL_ENTRY)&_ZN6S574C53v24Ev,
  (VTBL_ENTRY)&_ZN6S574C53v25Ev,
  (VTBL_ENTRY)&_ZN6S574C53v26Ev,
  (VTBL_ENTRY)&_ZN6S574C53v27Ev,
  (VTBL_ENTRY)&_ZN6S574C53v28Ev,
  (VTBL_ENTRY)&_ZN6S574C53v29Ev,
  (VTBL_ENTRY)&_ZN6S574C53v30Ev,
  (VTBL_ENTRY)&_ZN6S574C53v31Ev,
  (VTBL_ENTRY)&_ZN6S574C53v32Ev,
  (VTBL_ENTRY)&_ZN6S574C53v33Ev,
  (VTBL_ENTRY)&_ZN6S574C53v34Ev,
  (VTBL_ENTRY)&_ZN6S574C53v35Ev,
  (VTBL_ENTRY)&_ZN6S574C53v36Ev,
  (VTBL_ENTRY)&_ZN6S574C53v37Ev,
  (VTBL_ENTRY)&_ZN6S574C53v38Ev,
  (VTBL_ENTRY)&_ZN6S574C53v39Ev,
  (VTBL_ENTRY)&_ZN6S574C53v40Ev,
  (VTBL_ENTRY)&_ZN6S574C53v41Ev,
  (VTBL_ENTRY)&_ZN6S574C53v42Ev,
  (VTBL_ENTRY)&_ZN6S574C53v43Ev,
  (VTBL_ENTRY)&_ZN6S574C53v44Ev,
  (VTBL_ENTRY)&_ZN6S574C53v45Ev,
  (VTBL_ENTRY)&_ZN6S574C53v46Ev,
  (VTBL_ENTRY)&_ZN6S574C53v47Ev,
  (VTBL_ENTRY)&_ZN6S574C53v48Ev,
  (VTBL_ENTRY)&_ZN6S574C53v49Ev,
  (VTBL_ENTRY)&_ZN6S574C53v50Ev,
  (VTBL_ENTRY)&_ZN6S574C53v51Ev,
  (VTBL_ENTRY)&_ZN6S574C53v52Ev,
  (VTBL_ENTRY)&_ZN6S574C53v53Ev,
  (VTBL_ENTRY)&_ZN6S574C53v54Ev,
  (VTBL_ENTRY)&_ZN6S574C53v55Ev,
  (VTBL_ENTRY)&_ZN6S574C53v56Ev,
  (VTBL_ENTRY)&_ZN6S574C53v57Ev,
  (VTBL_ENTRY)&_ZN6S574C53v58Ev,
  (VTBL_ENTRY)&_ZN6S574C53v59Ev,
  (VTBL_ENTRY)&_ZN6S574C53v60Ev,
  (VTBL_ENTRY)&_ZN6S574C53v61Ev,
  (VTBL_ENTRY)&_ZN6S574C53v62Ev,
  (VTBL_ENTRY)&_ZN6S574C53v63Ev,
  (VTBL_ENTRY)&_ZN6S574C53v64Ev,
  (VTBL_ENTRY)&_ZN6S574C53v65Ev,
  (VTBL_ENTRY)&_ZN6S574C53v66Ev,
  (VTBL_ENTRY)&_ZN6S574C53v67Ev,
};
extern VTBL_ENTRY _ZTI6S574C5[];
extern  VTBL_ENTRY _ZTV6S574C5[];
Class_Descriptor cd_S574C5 = {  "S574C5", // class name
  0,0,//no base classes
  &(vtc_S574C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S574C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S574C5),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  S574C4  : S574C5 {
  int s574c4f0[2];
  void *s574c4f1;
  int s574c4f2[2];
  ::S3214C21_nt s574c4f3;
  ::S3214C21_nt s574c4f4;
  ::S4227C37 s574c4f5;
  ::S3214C21_nt s574c4f6;
  unsigned int s574c4f7:1;
  unsigned int s574c4f8:1;
  unsigned int s574c4f9:1;
  unsigned int s574c4f10:1;
  unsigned int s574c4f11:1;
  int s574c4f12[2];
  virtual  ~S574C4(); // _ZN6S574C4D1Ev
  virtual void  v68(); // _ZN6S574C43v68Ev
  virtual void  v69(); // _ZN6S574C43v69Ev
  virtual void  v70(); // _ZN6S574C43v70Ev
  virtual void  v71(); // _ZN6S574C43v71Ev
  virtual void  v72(); // _ZN6S574C43v72Ev
  virtual void  v73(); // _ZN6S574C43v73Ev
  virtual void  v74(); // _ZN6S574C43v74Ev
  virtual void  v75(); // _ZN6S574C43v75Ev
  virtual void  v76(); // _ZN6S574C43v76Ev
  virtual void  v77(); // _ZN6S574C43v77Ev
  virtual void  v78(); // _ZN6S574C43v78Ev
  virtual void  v79(); // _ZN6S574C43v79Ev
  virtual void  v80(); // _ZN6S574C43v80Ev
  virtual void  v81(); // _ZN6S574C43v81Ev
  virtual void  v82(); // _ZN6S574C43v82Ev
  virtual void  v83(); // _ZN6S574C43v83Ev
  virtual void  v84(); // _ZN6S574C43v84Ev
  virtual void  v85(); // _ZN6S574C43v85Ev
  virtual void  v86(); // _ZN6S574C43v86Ev
  virtual void  v87(); // _ZN6S574C43v87Ev
  virtual void  v88(); // _ZN6S574C43v88Ev
  virtual void  v89(); // _ZN6S574C43v89Ev
  S574C4(); // tgen
};
//SIG(-1 S574C4) C1{ BC2{ vd v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fi[2] Fp Fi[2] FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} FC4 FC8{ m} FC4 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]}


 S574C4 ::~S574C4(){ note_dtor("S574C4", this);}
void  S574C4 ::v68(){vfunc_called(this, "_ZN6S574C43v68Ev");}
void  S574C4 ::v69(){vfunc_called(this, "_ZN6S574C43v69Ev");}
void  S574C4 ::v70(){vfunc_called(this, "_ZN6S574C43v70Ev");}
void  S574C4 ::v71(){vfunc_called(this, "_ZN6S574C43v71Ev");}
void  S574C4 ::v72(){vfunc_called(this, "_ZN6S574C43v72Ev");}
void  S574C4 ::v73(){vfunc_called(this, "_ZN6S574C43v73Ev");}
void  S574C4 ::v74(){vfunc_called(this, "_ZN6S574C43v74Ev");}
void  S574C4 ::v75(){vfunc_called(this, "_ZN6S574C43v75Ev");}
void  S574C4 ::v76(){vfunc_called(this, "_ZN6S574C43v76Ev");}
void  S574C4 ::v77(){vfunc_called(this, "_ZN6S574C43v77Ev");}
void  S574C4 ::v78(){vfunc_called(this, "_ZN6S574C43v78Ev");}
void  S574C4 ::v79(){vfunc_called(this, "_ZN6S574C43v79Ev");}
void  S574C4 ::v80(){vfunc_called(this, "_ZN6S574C43v80Ev");}
void  S574C4 ::v81(){vfunc_called(this, "_ZN6S574C43v81Ev");}
void  S574C4 ::v82(){vfunc_called(this, "_ZN6S574C43v82Ev");}
void  S574C4 ::v83(){vfunc_called(this, "_ZN6S574C43v83Ev");}
void  S574C4 ::v84(){vfunc_called(this, "_ZN6S574C43v84Ev");}
void  S574C4 ::v85(){vfunc_called(this, "_ZN6S574C43v85Ev");}
void  S574C4 ::v86(){vfunc_called(this, "_ZN6S574C43v86Ev");}
void  S574C4 ::v87(){vfunc_called(this, "_ZN6S574C43v87Ev");}
void  S574C4 ::v88(){vfunc_called(this, "_ZN6S574C43v88Ev");}
void  S574C4 ::v89(){vfunc_called(this, "_ZN6S574C43v89Ev");}
S574C4 ::S574C4(){ note_ctor("S574C4", this);} // tgen

static void Test_S574C4()
{
  extern Class_Descriptor cd_S574C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,34)];
    init_test(&cd_S574C4, buf);
    S574C4 *dp, &lv = *(dp=new (buf) S574C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,132), "sizeof(S574C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S574C4)");
    check_base_class_offset(lv, (S574C5*), 0, "S574C4");
    check_field_offset(lv, s574c4f0, ABISELECT(96,60), "S574C4.s574c4f0");
    check_field_offset(lv, s574c4f1, ABISELECT(104,68), "S574C4.s574c4f1");
    check_field_offset(lv, s574c4f2, ABISELECT(112,72), "S574C4.s574c4f2");
    check_field_offset(lv, s574c4f3, ABISELECT(120,80), "S574C4.s574c4f3");
    check_field_offset(lv, s574c4f4, ABISELECT(136,92), "S574C4.s574c4f4");
    check_field_offset(lv, s574c4f5, ABISELECT(152,104), "S574C4.s574c4f5");
    check_field_offset(lv, s574c4f6, ABISELECT(160,108), "S574C4.s574c4f6");
    set_bf_and_test(lv, s574c4f7, ABISELECT(176,120), 0, 1, 1, "S574C4");
    set_bf_and_test(lv, s574c4f8, ABISELECT(176,120), 1, 1, 1, "S574C4");
    set_bf_and_test(lv, s574c4f9, ABISELECT(176,120), 2, 1, 1, "S574C4");
    set_bf_and_test(lv, s574c4f10, ABISELECT(176,120), 3, 1, 1, "S574C4");
    set_bf_and_test(lv, s574c4f11, ABISELECT(176,120), 4, 1, 1, "S574C4");
    check_field_offset(lv, s574c4f12, ABISELECT(180,124), "S574C4.s574c4f12");
    test_class_info(&lv, &cd_S574C4);
    dp->~S574C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS574C4(Test_S574C4, "S574C4", ABISELECT(192,132));

#else // __cplusplus

extern void _ZN6S574C4C1Ev();
extern void _ZN6S574C4D1Ev();
Name_Map name_map_S574C4[] = {
  NSPAIR(_ZN6S574C4C1Ev),
  NSPAIR(_ZN6S574C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S574C5;
extern VTBL_ENTRY _ZTI6S574C5[];
extern  VTBL_ENTRY _ZTV6S574C5[];
static Base_Class bases_S574C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S574C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S574C4[];
extern void _ZN6S574C4D1Ev();
extern void _ZN6S574C4D0Ev();
extern void _ZN6S574C52v4Ev();
extern void _ZN6S574C52v5Ev();
extern void _ZN6S574C52v6Ev();
extern void _ZN6S574C52v7Ev();
extern void _ZN6S574C52v8Ev();
extern void _ZN6S574C52v9Ev();
extern void _ZN6S574C53v10Ev();
extern void _ZN6S574C53v11Ev();
extern void _ZN6S574C53v12Ev();
extern void _ZN6S574C53v13Ev();
extern void _ZN6S574C53v14Ev();
extern void _ZN6S574C53v15Ev();
extern void _ZN6S574C53v16Ev();
extern void _ZN6S574C53v17Ev();
extern void _ZN6S574C53v18Ev();
extern void _ZN6S574C53v19Ev();
extern void _ZN6S574C53v20Ev();
extern void _ZN6S574C53v21Ev();
extern void _ZN6S574C53v22Ev();
extern void _ZN6S574C53v23Ev();
extern void _ZN6S574C53v24Ev();
extern void _ZN6S574C53v25Ev();
extern void _ZN6S574C53v26Ev();
extern void _ZN6S574C53v27Ev();
extern void _ZN6S574C53v28Ev();
extern void _ZN6S574C53v29Ev();
extern void _ZN6S574C53v30Ev();
extern void _ZN6S574C53v31Ev();
extern void _ZN6S574C53v32Ev();
extern void _ZN6S574C53v33Ev();
extern void _ZN6S574C53v34Ev();
extern void _ZN6S574C53v35Ev();
extern void _ZN6S574C53v36Ev();
extern void _ZN6S574C53v37Ev();
extern void _ZN6S574C53v38Ev();
extern void _ZN6S574C53v39Ev();
extern void _ZN6S574C53v40Ev();
extern void _ZN6S574C53v41Ev();
extern void _ZN6S574C53v42Ev();
extern void _ZN6S574C53v43Ev();
extern void _ZN6S574C53v44Ev();
extern void _ZN6S574C53v45Ev();
extern void _ZN6S574C53v46Ev();
extern void _ZN6S574C53v47Ev();
extern void _ZN6S574C53v48Ev();
extern void _ZN6S574C53v49Ev();
extern void _ZN6S574C53v50Ev();
extern void _ZN6S574C53v51Ev();
extern void _ZN6S574C53v52Ev();
extern void _ZN6S574C53v53Ev();
extern void _ZN6S574C53v54Ev();
extern void _ZN6S574C53v55Ev();
extern void _ZN6S574C53v56Ev();
extern void _ZN6S574C53v57Ev();
extern void _ZN6S574C53v58Ev();
extern void _ZN6S574C53v59Ev();
extern void _ZN6S574C53v60Ev();
extern void _ZN6S574C53v61Ev();
extern void _ZN6S574C53v62Ev();
extern void _ZN6S574C53v63Ev();
extern void _ZN6S574C53v64Ev();
extern void _ZN6S574C53v65Ev();
extern void _ZN6S574C53v66Ev();
extern void _ZN6S574C53v67Ev();
extern void _ZN6S574C43v68Ev();
extern void _ZN6S574C43v69Ev();
extern void _ZN6S574C43v70Ev();
extern void _ZN6S574C43v71Ev();
extern void _ZN6S574C43v72Ev();
extern void _ZN6S574C43v73Ev();
extern void _ZN6S574C43v74Ev();
extern void _ZN6S574C43v75Ev();
extern void _ZN6S574C43v76Ev();
extern void _ZN6S574C43v77Ev();
extern void _ZN6S574C43v78Ev();
extern void _ZN6S574C43v79Ev();
extern void _ZN6S574C43v80Ev();
extern void _ZN6S574C43v81Ev();
extern void _ZN6S574C43v82Ev();
extern void _ZN6S574C43v83Ev();
extern void _ZN6S574C43v84Ev();
extern void _ZN6S574C43v85Ev();
extern void _ZN6S574C43v86Ev();
extern void _ZN6S574C43v87Ev();
extern void _ZN6S574C43v88Ev();
extern void _ZN6S574C43v89Ev();
static  VTBL_ENTRY vtc_S574C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S574C4[0]),
  (VTBL_ENTRY)&_ZN6S574C4D1Ev,
  (VTBL_ENTRY)&_ZN6S574C4D0Ev,
  (VTBL_ENTRY)&_ZN6S574C52v4Ev,
  (VTBL_ENTRY)&_ZN6S574C52v5Ev,
  (VTBL_ENTRY)&_ZN6S574C52v6Ev,
  (VTBL_ENTRY)&_ZN6S574C52v7Ev,
  (VTBL_ENTRY)&_ZN6S574C52v8Ev,
  (VTBL_ENTRY)&_ZN6S574C52v9Ev,
  (VTBL_ENTRY)&_ZN6S574C53v10Ev,
  (VTBL_ENTRY)&_ZN6S574C53v11Ev,
  (VTBL_ENTRY)&_ZN6S574C53v12Ev,
  (VTBL_ENTRY)&_ZN6S574C53v13Ev,
  (VTBL_ENTRY)&_ZN6S574C53v14Ev,
  (VTBL_ENTRY)&_ZN6S574C53v15Ev,
  (VTBL_ENTRY)&_ZN6S574C53v16Ev,
  (VTBL_ENTRY)&_ZN6S574C53v17Ev,
  (VTBL_ENTRY)&_ZN6S574C53v18Ev,
  (VTBL_ENTRY)&_ZN6S574C53v19Ev,
  (VTBL_ENTRY)&_ZN6S574C53v20Ev,
  (VTBL_ENTRY)&_ZN6S574C53v21Ev,
  (VTBL_ENTRY)&_ZN6S574C53v22Ev,
  (VTBL_ENTRY)&_ZN6S574C53v23Ev,
  (VTBL_ENTRY)&_ZN6S574C53v24Ev,
  (VTBL_ENTRY)&_ZN6S574C53v25Ev,
  (VTBL_ENTRY)&_ZN6S574C53v26Ev,
  (VTBL_ENTRY)&_ZN6S574C53v27Ev,
  (VTBL_ENTRY)&_ZN6S574C53v28Ev,
  (VTBL_ENTRY)&_ZN6S574C53v29Ev,
  (VTBL_ENTRY)&_ZN6S574C53v30Ev,
  (VTBL_ENTRY)&_ZN6S574C53v31Ev,
  (VTBL_ENTRY)&_ZN6S574C53v32Ev,
  (VTBL_ENTRY)&_ZN6S574C53v33Ev,
  (VTBL_ENTRY)&_ZN6S574C53v34Ev,
  (VTBL_ENTRY)&_ZN6S574C53v35Ev,
  (VTBL_ENTRY)&_ZN6S574C53v36Ev,
  (VTBL_ENTRY)&_ZN6S574C53v37Ev,
  (VTBL_ENTRY)&_ZN6S574C53v38Ev,
  (VTBL_ENTRY)&_ZN6S574C53v39Ev,
  (VTBL_ENTRY)&_ZN6S574C53v40Ev,
  (VTBL_ENTRY)&_ZN6S574C53v41Ev,
  (VTBL_ENTRY)&_ZN6S574C53v42Ev,
  (VTBL_ENTRY)&_ZN6S574C53v43Ev,
  (VTBL_ENTRY)&_ZN6S574C53v44Ev,
  (VTBL_ENTRY)&_ZN6S574C53v45Ev,
  (VTBL_ENTRY)&_ZN6S574C53v46Ev,
  (VTBL_ENTRY)&_ZN6S574C53v47Ev,
  (VTBL_ENTRY)&_ZN6S574C53v48Ev,
  (VTBL_ENTRY)&_ZN6S574C53v49Ev,
  (VTBL_ENTRY)&_ZN6S574C53v50Ev,
  (VTBL_ENTRY)&_ZN6S574C53v51Ev,
  (VTBL_ENTRY)&_ZN6S574C53v52Ev,
  (VTBL_ENTRY)&_ZN6S574C53v53Ev,
  (VTBL_ENTRY)&_ZN6S574C53v54Ev,
  (VTBL_ENTRY)&_ZN6S574C53v55Ev,
  (VTBL_ENTRY)&_ZN6S574C53v56Ev,
  (VTBL_ENTRY)&_ZN6S574C53v57Ev,
  (VTBL_ENTRY)&_ZN6S574C53v58Ev,
  (VTBL_ENTRY)&_ZN6S574C53v59Ev,
  (VTBL_ENTRY)&_ZN6S574C53v60Ev,
  (VTBL_ENTRY)&_ZN6S574C53v61Ev,
  (VTBL_ENTRY)&_ZN6S574C53v62Ev,
  (VTBL_ENTRY)&_ZN6S574C53v63Ev,
  (VTBL_ENTRY)&_ZN6S574C53v64Ev,
  (VTBL_ENTRY)&_ZN6S574C53v65Ev,
  (VTBL_ENTRY)&_ZN6S574C53v66Ev,
  (VTBL_ENTRY)&_ZN6S574C53v67Ev,
  (VTBL_ENTRY)&_ZN6S574C43v68Ev,
  (VTBL_ENTRY)&_ZN6S574C43v69Ev,
  (VTBL_ENTRY)&_ZN6S574C43v70Ev,
  (VTBL_ENTRY)&_ZN6S574C43v71Ev,
  (VTBL_ENTRY)&_ZN6S574C43v72Ev,
  (VTBL_ENTRY)&_ZN6S574C43v73Ev,
  (VTBL_ENTRY)&_ZN6S574C43v74Ev,
  (VTBL_ENTRY)&_ZN6S574C43v75Ev,
  (VTBL_ENTRY)&_ZN6S574C43v76Ev,
  (VTBL_ENTRY)&_ZN6S574C43v77Ev,
  (VTBL_ENTRY)&_ZN6S574C43v78Ev,
  (VTBL_ENTRY)&_ZN6S574C43v79Ev,
  (VTBL_ENTRY)&_ZN6S574C43v80Ev,
  (VTBL_ENTRY)&_ZN6S574C43v81Ev,
  (VTBL_ENTRY)&_ZN6S574C43v82Ev,
  (VTBL_ENTRY)&_ZN6S574C43v83Ev,
  (VTBL_ENTRY)&_ZN6S574C43v84Ev,
  (VTBL_ENTRY)&_ZN6S574C43v85Ev,
  (VTBL_ENTRY)&_ZN6S574C43v86Ev,
  (VTBL_ENTRY)&_ZN6S574C43v87Ev,
  (VTBL_ENTRY)&_ZN6S574C43v88Ev,
  (VTBL_ENTRY)&_ZN6S574C43v89Ev,
};
extern VTBL_ENTRY _ZTI6S574C4[];
extern  VTBL_ENTRY _ZTV6S574C4[];
Class_Descriptor cd_S574C4 = {  "S574C4", // class name
  bases_S574C4, 1,
  &(vtc_S574C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,132), // object size
  NSPAIRA(_ZTI6S574C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S574C4),90, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S574C3  : S574C4 {
  unsigned int s574c3f0:1;
  unsigned int s574c3f1:1;
  unsigned int s574c3f2:1;
  ::S3214C22 s574c3f3;
  ::S3214C17 s574c3f4;
  ::S3214C11 s574c3f5;
  ::S3214C5_nt s574c3f6;
  int s574c3f7[3];
  virtual  ~S574C3(); // _ZN6S574C3D1Ev
  virtual void  v90(); // _ZN6S574C33v90Ev
  virtual void  v91(); // _ZN6S574C33v91Ev
  virtual void  v92(); // _ZN6S574C33v92Ev
  virtual void  v93(); // _ZN6S574C33v93Ev
  virtual void  v94(); // _ZN6S574C33v94Ev
  virtual void  v95(); // _ZN6S574C33v95Ev
  virtual void  v96(); // _ZN6S574C33v96Ev
  virtual void  v97(); // _ZN6S574C33v97Ev
  virtual void  v98(); // _ZN6S574C33v98Ev
  virtual void  v99(); // _ZN6S574C33v99Ev
  virtual void  v100(); // _ZN6S574C34v100Ev
  virtual void  v101(); // _ZN6S574C34v101Ev
  virtual void  v102(); // _ZN6S574C34v102Ev
  virtual void  v103(); // _ZN6S574C34v103Ev
  virtual void  v104(); // _ZN6S574C34v104Ev
  virtual void  v105(); // _ZN6S574C34v105Ev
  virtual void  v106(); // _ZN6S574C34v106Ev
  virtual void  v107(); // _ZN6S574C34v107Ev
  virtual void  v108(); // _ZN6S574C34v108Ev
  virtual void  v109(); // _ZN6S574C34v109Ev
  S574C3(); // tgen
};
//SIG(-1 S574C3) C1{ BC2{ BC3{ vd v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 v101 v102 v103 v104 v105 v106 Fi[2] Fp Fi[2] FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} FC5 FC9{ m} FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 Fi:1 Fi:1 Fi:1 FC6 FC10{ BC11{ BC8}} FC12{ BC13{ BC8}} FC14{ BC15{ BC8}} Fi[3]}


 S574C3 ::~S574C3(){ note_dtor("S574C3", this);}
void  S574C3 ::v90(){vfunc_called(this, "_ZN6S574C33v90Ev");}
void  S574C3 ::v91(){vfunc_called(this, "_ZN6S574C33v91Ev");}
void  S574C3 ::v92(){vfunc_called(this, "_ZN6S574C33v92Ev");}
void  S574C3 ::v93(){vfunc_called(this, "_ZN6S574C33v93Ev");}
void  S574C3 ::v94(){vfunc_called(this, "_ZN6S574C33v94Ev");}
void  S574C3 ::v95(){vfunc_called(this, "_ZN6S574C33v95Ev");}
void  S574C3 ::v96(){vfunc_called(this, "_ZN6S574C33v96Ev");}
void  S574C3 ::v97(){vfunc_called(this, "_ZN6S574C33v97Ev");}
void  S574C3 ::v98(){vfunc_called(this, "_ZN6S574C33v98Ev");}
void  S574C3 ::v99(){vfunc_called(this, "_ZN6S574C33v99Ev");}
void  S574C3 ::v100(){vfunc_called(this, "_ZN6S574C34v100Ev");}
void  S574C3 ::v101(){vfunc_called(this, "_ZN6S574C34v101Ev");}
void  S574C3 ::v102(){vfunc_called(this, "_ZN6S574C34v102Ev");}
void  S574C3 ::v103(){vfunc_called(this, "_ZN6S574C34v103Ev");}
void  S574C3 ::v104(){vfunc_called(this, "_ZN6S574C34v104Ev");}
void  S574C3 ::v105(){vfunc_called(this, "_ZN6S574C34v105Ev");}
void  S574C3 ::v106(){vfunc_called(this, "_ZN6S574C34v106Ev");}
void  S574C3 ::v107(){vfunc_called(this, "_ZN6S574C34v107Ev");}
void  S574C3 ::v108(){vfunc_called(this, "_ZN6S574C34v108Ev");}
void  S574C3 ::v109(){vfunc_called(this, "_ZN6S574C34v109Ev");}
S574C3 ::S574C3(){ note_ctor("S574C3", this);} // tgen

static void Test_S574C3()
{
  extern Class_Descriptor cd_S574C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,50)];
    init_test(&cd_S574C3, buf);
    S574C3 *dp, &lv = *(dp=new (buf) S574C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,196), "sizeof(S574C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S574C3)");
    check_base_class_offset(lv, (S574C5*)(S574C4*), 0, "S574C3");
    check_base_class_offset(lv, (S574C4*), 0, "S574C3");
    set_bf_and_test(lv, s574c3f0, ABISELECT(188,132), 0, 1, 1, "S574C3");
    set_bf_and_test(lv, s574c3f1, ABISELECT(188,132), 1, 1, 1, "S574C3");
    set_bf_and_test(lv, s574c3f2, ABISELECT(188,132), 2, 1, 1, "S574C3");
    check_field_offset(lv, s574c3f3, ABISELECT(192,136), "S574C3.s574c3f3");
    check_field_offset(lv, s574c3f4, ABISELECT(208,148), "S574C3.s574c3f4");
    check_field_offset(lv, s574c3f5, ABISELECT(224,160), "S574C3.s574c3f5");
    check_field_offset(lv, s574c3f6, ABISELECT(240,172), "S574C3.s574c3f6");
    check_field_offset(lv, s574c3f7, ABISELECT(256,184), "S574C3.s574c3f7");
    test_class_info(&lv, &cd_S574C3);
    dp->~S574C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS574C3(Test_S574C3, "S574C3", ABISELECT(272,196));

#else // __cplusplus

extern void _ZN6S574C3C1Ev();
extern void _ZN6S574C3D1Ev();
Name_Map name_map_S574C3[] = {
  NSPAIR(_ZN6S574C3C1Ev),
  NSPAIR(_ZN6S574C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S574C5;
extern VTBL_ENTRY _ZTI6S574C5[];
extern  VTBL_ENTRY _ZTV6S574C5[];
extern Class_Descriptor cd_S574C4;
extern VTBL_ENTRY _ZTI6S574C4[];
extern  VTBL_ENTRY _ZTV6S574C4[];
static Base_Class bases_S574C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S574C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S574C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S574C3[];
extern void _ZN6S574C3D1Ev();
extern void _ZN6S574C3D0Ev();
extern void _ZN6S574C52v4Ev();
extern void _ZN6S574C52v5Ev();
extern void _ZN6S574C52v6Ev();
extern void _ZN6S574C52v7Ev();
extern void _ZN6S574C52v8Ev();
extern void _ZN6S574C52v9Ev();
extern void _ZN6S574C53v10Ev();
extern void _ZN6S574C53v11Ev();
extern void _ZN6S574C53v12Ev();
extern void _ZN6S574C53v13Ev();
extern void _ZN6S574C53v14Ev();
extern void _ZN6S574C53v15Ev();
extern void _ZN6S574C53v16Ev();
extern void _ZN6S574C53v17Ev();
extern void _ZN6S574C53v18Ev();
extern void _ZN6S574C53v19Ev();
extern void _ZN6S574C53v20Ev();
extern void _ZN6S574C53v21Ev();
extern void _ZN6S574C53v22Ev();
extern void _ZN6S574C53v23Ev();
extern void _ZN6S574C53v24Ev();
extern void _ZN6S574C53v25Ev();
extern void _ZN6S574C53v26Ev();
extern void _ZN6S574C53v27Ev();
extern void _ZN6S574C53v28Ev();
extern void _ZN6S574C53v29Ev();
extern void _ZN6S574C53v30Ev();
extern void _ZN6S574C53v31Ev();
extern void _ZN6S574C53v32Ev();
extern void _ZN6S574C53v33Ev();
extern void _ZN6S574C53v34Ev();
extern void _ZN6S574C53v35Ev();
extern void _ZN6S574C53v36Ev();
extern void _ZN6S574C53v37Ev();
extern void _ZN6S574C53v38Ev();
extern void _ZN6S574C53v39Ev();
extern void _ZN6S574C53v40Ev();
extern void _ZN6S574C53v41Ev();
extern void _ZN6S574C53v42Ev();
extern void _ZN6S574C53v43Ev();
extern void _ZN6S574C53v44Ev();
extern void _ZN6S574C53v45Ev();
extern void _ZN6S574C53v46Ev();
extern void _ZN6S574C53v47Ev();
extern void _ZN6S574C53v48Ev();
extern void _ZN6S574C53v49Ev();
extern void _ZN6S574C53v50Ev();
extern void _ZN6S574C53v51Ev();
extern void _ZN6S574C53v52Ev();
extern void _ZN6S574C53v53Ev();
extern void _ZN6S574C53v54Ev();
extern void _ZN6S574C53v55Ev();
extern void _ZN6S574C53v56Ev();
extern void _ZN6S574C53v57Ev();
extern void _ZN6S574C53v58Ev();
extern void _ZN6S574C53v59Ev();
extern void _ZN6S574C53v60Ev();
extern void _ZN6S574C53v61Ev();
extern void _ZN6S574C53v62Ev();
extern void _ZN6S574C53v63Ev();
extern void _ZN6S574C53v64Ev();
extern void _ZN6S574C53v65Ev();
extern void _ZN6S574C53v66Ev();
extern void _ZN6S574C53v67Ev();
extern void _ZN6S574C43v68Ev();
extern void _ZN6S574C43v69Ev();
extern void _ZN6S574C43v70Ev();
extern void _ZN6S574C43v71Ev();
extern void _ZN6S574C43v72Ev();
extern void _ZN6S574C43v73Ev();
extern void _ZN6S574C43v74Ev();
extern void _ZN6S574C43v75Ev();
extern void _ZN6S574C43v76Ev();
extern void _ZN6S574C43v77Ev();
extern void _ZN6S574C43v78Ev();
extern void _ZN6S574C43v79Ev();
extern void _ZN6S574C43v80Ev();
extern void _ZN6S574C43v81Ev();
extern void _ZN6S574C43v82Ev();
extern void _ZN6S574C43v83Ev();
extern void _ZN6S574C43v84Ev();
extern void _ZN6S574C43v85Ev();
extern void _ZN6S574C43v86Ev();
extern void _ZN6S574C43v87Ev();
extern void _ZN6S574C43v88Ev();
extern void _ZN6S574C43v89Ev();
extern void _ZN6S574C33v90Ev();
extern void _ZN6S574C33v91Ev();
extern void _ZN6S574C33v92Ev();
extern void _ZN6S574C33v93Ev();
extern void _ZN6S574C33v94Ev();
extern void _ZN6S574C33v95Ev();
extern void _ZN6S574C33v96Ev();
extern void _ZN6S574C33v97Ev();
extern void _ZN6S574C33v98Ev();
extern void _ZN6S574C33v99Ev();
extern void _ZN6S574C34v100Ev();
extern void _ZN6S574C34v101Ev();
extern void _ZN6S574C34v102Ev();
extern void _ZN6S574C34v103Ev();
extern void _ZN6S574C34v104Ev();
extern void _ZN6S574C34v105Ev();
extern void _ZN6S574C34v106Ev();
extern void _ZN6S574C34v107Ev();
extern void _ZN6S574C34v108Ev();
extern void _ZN6S574C34v109Ev();
static  VTBL_ENTRY vtc_S574C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S574C3[0]),
  (VTBL_ENTRY)&_ZN6S574C3D1Ev,
  (VTBL_ENTRY)&_ZN6S574C3D0Ev,
  (VTBL_ENTRY)&_ZN6S574C52v4Ev,
  (VTBL_ENTRY)&_ZN6S574C52v5Ev,
  (VTBL_ENTRY)&_ZN6S574C52v6Ev,
  (VTBL_ENTRY)&_ZN6S574C52v7Ev,
  (VTBL_ENTRY)&_ZN6S574C52v8Ev,
  (VTBL_ENTRY)&_ZN6S574C52v9Ev,
  (VTBL_ENTRY)&_ZN6S574C53v10Ev,
  (VTBL_ENTRY)&_ZN6S574C53v11Ev,
  (VTBL_ENTRY)&_ZN6S574C53v12Ev,
  (VTBL_ENTRY)&_ZN6S574C53v13Ev,
  (VTBL_ENTRY)&_ZN6S574C53v14Ev,
  (VTBL_ENTRY)&_ZN6S574C53v15Ev,
  (VTBL_ENTRY)&_ZN6S574C53v16Ev,
  (VTBL_ENTRY)&_ZN6S574C53v17Ev,
  (VTBL_ENTRY)&_ZN6S574C53v18Ev,
  (VTBL_ENTRY)&_ZN6S574C53v19Ev,
  (VTBL_ENTRY)&_ZN6S574C53v20Ev,
  (VTBL_ENTRY)&_ZN6S574C53v21Ev,
  (VTBL_ENTRY)&_ZN6S574C53v22Ev,
  (VTBL_ENTRY)&_ZN6S574C53v23Ev,
  (VTBL_ENTRY)&_ZN6S574C53v24Ev,
  (VTBL_ENTRY)&_ZN6S574C53v25Ev,
  (VTBL_ENTRY)&_ZN6S574C53v26Ev,
  (VTBL_ENTRY)&_ZN6S574C53v27Ev,
  (VTBL_ENTRY)&_ZN6S574C53v28Ev,
  (VTBL_ENTRY)&_ZN6S574C53v29Ev,
  (VTBL_ENTRY)&_ZN6S574C53v30Ev,
  (VTBL_ENTRY)&_ZN6S574C53v31Ev,
  (VTBL_ENTRY)&_ZN6S574C53v32Ev,
  (VTBL_ENTRY)&_ZN6S574C53v33Ev,
  (VTBL_ENTRY)&_ZN6S574C53v34Ev,
  (VTBL_ENTRY)&_ZN6S574C53v35Ev,
  (VTBL_ENTRY)&_ZN6S574C53v36Ev,
  (VTBL_ENTRY)&_ZN6S574C53v37Ev,
  (VTBL_ENTRY)&_ZN6S574C53v38Ev,
  (VTBL_ENTRY)&_ZN6S574C53v39Ev,
  (VTBL_ENTRY)&_ZN6S574C53v40Ev,
  (VTBL_ENTRY)&_ZN6S574C53v41Ev,
  (VTBL_ENTRY)&_ZN6S574C53v42Ev,
  (VTBL_ENTRY)&_ZN6S574C53v43Ev,
  (VTBL_ENTRY)&_ZN6S574C53v44Ev,
  (VTBL_ENTRY)&_ZN6S574C53v45Ev,
  (VTBL_ENTRY)&_ZN6S574C53v46Ev,
  (VTBL_ENTRY)&_ZN6S574C53v47Ev,
  (VTBL_ENTRY)&_ZN6S574C53v48Ev,
  (VTBL_ENTRY)&_ZN6S574C53v49Ev,
  (VTBL_ENTRY)&_ZN6S574C53v50Ev,
  (VTBL_ENTRY)&_ZN6S574C53v51Ev,
  (VTBL_ENTRY)&_ZN6S574C53v52Ev,
  (VTBL_ENTRY)&_ZN6S574C53v53Ev,
  (VTBL_ENTRY)&_ZN6S574C53v54Ev,
  (VTBL_ENTRY)&_ZN6S574C53v55Ev,
  (VTBL_ENTRY)&_ZN6S574C53v56Ev,
  (VTBL_ENTRY)&_ZN6S574C53v57Ev,
  (VTBL_ENTRY)&_ZN6S574C53v58Ev,
  (VTBL_ENTRY)&_ZN6S574C53v59Ev,
  (VTBL_ENTRY)&_ZN6S574C53v60Ev,
  (VTBL_ENTRY)&_ZN6S574C53v61Ev,
  (VTBL_ENTRY)&_ZN6S574C53v62Ev,
  (VTBL_ENTRY)&_ZN6S574C53v63Ev,
  (VTBL_ENTRY)&_ZN6S574C53v64Ev,
  (VTBL_ENTRY)&_ZN6S574C53v65Ev,
  (VTBL_ENTRY)&_ZN6S574C53v66Ev,
  (VTBL_ENTRY)&_ZN6S574C53v67Ev,
  (VTBL_ENTRY)&_ZN6S574C43v68Ev,
  (VTBL_ENTRY)&_ZN6S574C43v69Ev,
  (VTBL_ENTRY)&_ZN6S574C43v70Ev,
  (VTBL_ENTRY)&_ZN6S574C43v71Ev,
  (VTBL_ENTRY)&_ZN6S574C43v72Ev,
  (VTBL_ENTRY)&_ZN6S574C43v73Ev,
  (VTBL_ENTRY)&_ZN6S574C43v74Ev,
  (VTBL_ENTRY)&_ZN6S574C43v75Ev,
  (VTBL_ENTRY)&_ZN6S574C43v76Ev,
  (VTBL_ENTRY)&_ZN6S574C43v77Ev,
  (VTBL_ENTRY)&_ZN6S574C43v78Ev,
  (VTBL_ENTRY)&_ZN6S574C43v79Ev,
  (VTBL_ENTRY)&_ZN6S574C43v80Ev,
  (VTBL_ENTRY)&_ZN6S574C43v81Ev,
  (VTBL_ENTRY)&_ZN6S574C43v82Ev,
  (VTBL_ENTRY)&_ZN6S574C43v83Ev,
  (VTBL_ENTRY)&_ZN6S574C43v84Ev,
  (VTBL_ENTRY)&_ZN6S574C43v85Ev,
  (VTBL_ENTRY)&_ZN6S574C43v86Ev,
  (VTBL_ENTRY)&_ZN6S574C43v87Ev,
  (VTBL_ENTRY)&_ZN6S574C43v88Ev,
  (VTBL_ENTRY)&_ZN6S574C43v89Ev,
  (VTBL_ENTRY)&_ZN6S574C33v90Ev,
  (VTBL_ENTRY)&_ZN6S574C33v91Ev,
  (VTBL_ENTRY)&_ZN6S574C33v92Ev,
  (VTBL_ENTRY)&_ZN6S574C33v93Ev,
  (VTBL_ENTRY)&_ZN6S574C33v94Ev,
  (VTBL_ENTRY)&_ZN6S574C33v95Ev,
  (VTBL_ENTRY)&_ZN6S574C33v96Ev,
  (VTBL_ENTRY)&_ZN6S574C33v97Ev,
  (VTBL_ENTRY)&_ZN6S574C33v98Ev,
  (VTBL_ENTRY)&_ZN6S574C33v99Ev,
  (VTBL_ENTRY)&_ZN6S574C34v100Ev,
  (VTBL_ENTRY)&_ZN6S574C34v101Ev,
  (VTBL_ENTRY)&_ZN6S574C34v102Ev,
  (VTBL_ENTRY)&_ZN6S574C34v103Ev,
  (VTBL_ENTRY)&_ZN6S574C34v104Ev,
  (VTBL_ENTRY)&_ZN6S574C34v105Ev,
  (VTBL_ENTRY)&_ZN6S574C34v106Ev,
  (VTBL_ENTRY)&_ZN6S574C34v107Ev,
  (VTBL_ENTRY)&_ZN6S574C34v108Ev,
  (VTBL_ENTRY)&_ZN6S574C34v109Ev,
};
extern VTBL_ENTRY _ZTI6S574C3[];
extern  VTBL_ENTRY _ZTV6S574C3[];
Class_Descriptor cd_S574C3 = {  "S574C3", // class name
  bases_S574C3, 2,
  &(vtc_S574C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,196), // object size
  NSPAIRA(_ZTI6S574C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S574C3),110, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S574C2 ::~S574C2(){ note_dtor("S574C2", this);}
void  S574C2 ::v110(){vfunc_called(this, "_ZN6S574C24v110Ev");}
void  S574C2 ::v111(){vfunc_called(this, "_ZN6S574C24v111Ev");}
void  S574C2 ::v112(){vfunc_called(this, "_ZN6S574C24v112Ev");}
void  S574C2 ::v113(){vfunc_called(this, "_ZN6S574C24v113Ev");}
S574C2 ::S574C2(){ note_ctor("S574C2", this);} // tgen

static void Test_S574C2()
{
  extern Class_Descriptor cd_S574C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,56)];
    init_test(&cd_S574C2, buf);
    S574C2 *dp, &lv = *(dp=new (buf) S574C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,220), "sizeof(S574C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S574C2)");
    check_base_class_offset(lv, (S574C5*)(S574C4*)(S574C3*), 0, "S574C2");
    check_base_class_offset(lv, (S574C4*)(S574C3*), 0, "S574C2");
    check_base_class_offset(lv, (S574C3*), 0, "S574C2");
    check_field_offset(lv, s574c2f0, ABISELECT(268,196), "S574C2.s574c2f0");
    set_bf_and_test(lv, s574c2f1, ABISELECT(276,204), 0, 1, 1, "S574C2");
    check_field_offset(lv, s574c2f2, ABISELECT(280,208), "S574C2.s574c2f2");
    test_class_info(&lv, &cd_S574C2);
    dp->~S574C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS574C2(Test_S574C2, "S574C2", ABISELECT(296,220));

#else // __cplusplus

extern void _ZN6S574C2C1Ev();
extern void _ZN6S574C2D1Ev();
Name_Map name_map_S574C2[] = {
  NSPAIR(_ZN6S574C2C1Ev),
  NSPAIR(_ZN6S574C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S574C5;
extern VTBL_ENTRY _ZTI6S574C5[];
extern  VTBL_ENTRY _ZTV6S574C5[];
extern Class_Descriptor cd_S574C4;
extern VTBL_ENTRY _ZTI6S574C4[];
extern  VTBL_ENTRY _ZTV6S574C4[];
extern Class_Descriptor cd_S574C3;
extern VTBL_ENTRY _ZTI6S574C3[];
extern  VTBL_ENTRY _ZTV6S574C3[];
static Base_Class bases_S574C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S574C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S574C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S574C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S574C2[];
extern void _ZN6S574C2D1Ev();
extern void _ZN6S574C2D0Ev();
extern void _ZN6S574C52v4Ev();
extern void _ZN6S574C52v5Ev();
extern void _ZN6S574C52v6Ev();
extern void _ZN6S574C52v7Ev();
extern void _ZN6S574C52v8Ev();
extern void _ZN6S574C52v9Ev();
extern void _ZN6S574C53v10Ev();
extern void _ZN6S574C53v11Ev();
extern void _ZN6S574C53v12Ev();
extern void _ZN6S574C53v13Ev();
extern void _ZN6S574C53v14Ev();
extern void _ZN6S574C53v15Ev();
extern void _ZN6S574C53v16Ev();
extern void _ZN6S574C53v17Ev();
extern void _ZN6S574C53v18Ev();
extern void _ZN6S574C53v19Ev();
extern void _ZN6S574C53v20Ev();
extern void _ZN6S574C53v21Ev();
extern void _ZN6S574C53v22Ev();
extern void _ZN6S574C53v23Ev();
extern void _ZN6S574C53v24Ev();
extern void _ZN6S574C53v25Ev();
extern void _ZN6S574C53v26Ev();
extern void _ZN6S574C53v27Ev();
extern void _ZN6S574C53v28Ev();
extern void _ZN6S574C53v29Ev();
extern void _ZN6S574C53v30Ev();
extern void _ZN6S574C53v31Ev();
extern void _ZN6S574C53v32Ev();
extern void _ZN6S574C53v33Ev();
extern void _ZN6S574C53v34Ev();
extern void _ZN6S574C53v35Ev();
extern void _ZN6S574C53v36Ev();
extern void _ZN6S574C53v37Ev();
extern void _ZN6S574C53v38Ev();
extern void _ZN6S574C53v39Ev();
extern void _ZN6S574C53v40Ev();
extern void _ZN6S574C53v41Ev();
extern void _ZN6S574C53v42Ev();
extern void _ZN6S574C53v43Ev();
extern void _ZN6S574C53v44Ev();
extern void _ZN6S574C53v45Ev();
extern void _ZN6S574C53v46Ev();
extern void _ZN6S574C53v47Ev();
extern void _ZN6S574C53v48Ev();
extern void _ZN6S574C53v49Ev();
extern void _ZN6S574C53v50Ev();
extern void _ZN6S574C53v51Ev();
extern void _ZN6S574C53v52Ev();
extern void _ZN6S574C53v53Ev();
extern void _ZN6S574C53v54Ev();
extern void _ZN6S574C53v55Ev();
extern void _ZN6S574C53v56Ev();
extern void _ZN6S574C53v57Ev();
extern void _ZN6S574C53v58Ev();
extern void _ZN6S574C53v59Ev();
extern void _ZN6S574C53v60Ev();
extern void _ZN6S574C53v61Ev();
extern void _ZN6S574C53v62Ev();
extern void _ZN6S574C53v63Ev();
extern void _ZN6S574C53v64Ev();
extern void _ZN6S574C53v65Ev();
extern void _ZN6S574C53v66Ev();
extern void _ZN6S574C53v67Ev();
extern void _ZN6S574C43v68Ev();
extern void _ZN6S574C43v69Ev();
extern void _ZN6S574C43v70Ev();
extern void _ZN6S574C43v71Ev();
extern void _ZN6S574C43v72Ev();
extern void _ZN6S574C43v73Ev();
extern void _ZN6S574C43v74Ev();
extern void _ZN6S574C43v75Ev();
extern void _ZN6S574C43v76Ev();
extern void _ZN6S574C43v77Ev();
extern void _ZN6S574C43v78Ev();
extern void _ZN6S574C43v79Ev();
extern void _ZN6S574C43v80Ev();
extern void _ZN6S574C43v81Ev();
extern void _ZN6S574C43v82Ev();
extern void _ZN6S574C43v83Ev();
extern void _ZN6S574C43v84Ev();
extern void _ZN6S574C43v85Ev();
extern void _ZN6S574C43v86Ev();
extern void _ZN6S574C43v87Ev();
extern void _ZN6S574C43v88Ev();
extern void _ZN6S574C43v89Ev();
extern void _ZN6S574C33v90Ev();
extern void _ZN6S574C33v91Ev();
extern void _ZN6S574C33v92Ev();
extern void _ZN6S574C33v93Ev();
extern void _ZN6S574C33v94Ev();
extern void _ZN6S574C33v95Ev();
extern void _ZN6S574C33v96Ev();
extern void _ZN6S574C33v97Ev();
extern void _ZN6S574C33v98Ev();
extern void _ZN6S574C33v99Ev();
extern void _ZN6S574C34v100Ev();
extern void _ZN6S574C34v101Ev();
extern void _ZN6S574C34v102Ev();
extern void _ZN6S574C34v103Ev();
extern void _ZN6S574C34v104Ev();
extern void _ZN6S574C34v105Ev();
extern void _ZN6S574C34v106Ev();
extern void _ZN6S574C34v107Ev();
extern void _ZN6S574C34v108Ev();
extern void _ZN6S574C34v109Ev();
extern void _ZN6S574C24v110Ev();
extern void _ZN6S574C24v111Ev();
extern void _ZN6S574C24v112Ev();
extern void _ZN6S574C24v113Ev();
static  VTBL_ENTRY vtc_S574C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S574C2[0]),
  (VTBL_ENTRY)&_ZN6S574C2D1Ev,
  (VTBL_ENTRY)&_ZN6S574C2D0Ev,
  (VTBL_ENTRY)&_ZN6S574C52v4Ev,
  (VTBL_ENTRY)&_ZN6S574C52v5Ev,
  (VTBL_ENTRY)&_ZN6S574C52v6Ev,
  (VTBL_ENTRY)&_ZN6S574C52v7Ev,
  (VTBL_ENTRY)&_ZN6S574C52v8Ev,
  (VTBL_ENTRY)&_ZN6S574C52v9Ev,
  (VTBL_ENTRY)&_ZN6S574C53v10Ev,
  (VTBL_ENTRY)&_ZN6S574C53v11Ev,
  (VTBL_ENTRY)&_ZN6S574C53v12Ev,
  (VTBL_ENTRY)&_ZN6S574C53v13Ev,
  (VTBL_ENTRY)&_ZN6S574C53v14Ev,
  (VTBL_ENTRY)&_ZN6S574C53v15Ev,
  (VTBL_ENTRY)&_ZN6S574C53v16Ev,
  (VTBL_ENTRY)&_ZN6S574C53v17Ev,
  (VTBL_ENTRY)&_ZN6S574C53v18Ev,
  (VTBL_ENTRY)&_ZN6S574C53v19Ev,
  (VTBL_ENTRY)&_ZN6S574C53v20Ev,
  (VTBL_ENTRY)&_ZN6S574C53v21Ev,
  (VTBL_ENTRY)&_ZN6S574C53v22Ev,
  (VTBL_ENTRY)&_ZN6S574C53v23Ev,
  (VTBL_ENTRY)&_ZN6S574C53v24Ev,
  (VTBL_ENTRY)&_ZN6S574C53v25Ev,
  (VTBL_ENTRY)&_ZN6S574C53v26Ev,
  (VTBL_ENTRY)&_ZN6S574C53v27Ev,
  (VTBL_ENTRY)&_ZN6S574C53v28Ev,
  (VTBL_ENTRY)&_ZN6S574C53v29Ev,
  (VTBL_ENTRY)&_ZN6S574C53v30Ev,
  (VTBL_ENTRY)&_ZN6S574C53v31Ev,
  (VTBL_ENTRY)&_ZN6S574C53v32Ev,
  (VTBL_ENTRY)&_ZN6S574C53v33Ev,
  (VTBL_ENTRY)&_ZN6S574C53v34Ev,
  (VTBL_ENTRY)&_ZN6S574C53v35Ev,
  (VTBL_ENTRY)&_ZN6S574C53v36Ev,
  (VTBL_ENTRY)&_ZN6S574C53v37Ev,
  (VTBL_ENTRY)&_ZN6S574C53v38Ev,
  (VTBL_ENTRY)&_ZN6S574C53v39Ev,
  (VTBL_ENTRY)&_ZN6S574C53v40Ev,
  (VTBL_ENTRY)&_ZN6S574C53v41Ev,
  (VTBL_ENTRY)&_ZN6S574C53v42Ev,
  (VTBL_ENTRY)&_ZN6S574C53v43Ev,
  (VTBL_ENTRY)&_ZN6S574C53v44Ev,
  (VTBL_ENTRY)&_ZN6S574C53v45Ev,
  (VTBL_ENTRY)&_ZN6S574C53v46Ev,
  (VTBL_ENTRY)&_ZN6S574C53v47Ev,
  (VTBL_ENTRY)&_ZN6S574C53v48Ev,
  (VTBL_ENTRY)&_ZN6S574C53v49Ev,
  (VTBL_ENTRY)&_ZN6S574C53v50Ev,
  (VTBL_ENTRY)&_ZN6S574C53v51Ev,
  (VTBL_ENTRY)&_ZN6S574C53v52Ev,
  (VTBL_ENTRY)&_ZN6S574C53v53Ev,
  (VTBL_ENTRY)&_ZN6S574C53v54Ev,
  (VTBL_ENTRY)&_ZN6S574C53v55Ev,
  (VTBL_ENTRY)&_ZN6S574C53v56Ev,
  (VTBL_ENTRY)&_ZN6S574C53v57Ev,
  (VTBL_ENTRY)&_ZN6S574C53v58Ev,
  (VTBL_ENTRY)&_ZN6S574C53v59Ev,
  (VTBL_ENTRY)&_ZN6S574C53v60Ev,
  (VTBL_ENTRY)&_ZN6S574C53v61Ev,
  (VTBL_ENTRY)&_ZN6S574C53v62Ev,
  (VTBL_ENTRY)&_ZN6S574C53v63Ev,
  (VTBL_ENTRY)&_ZN6S574C53v64Ev,
  (VTBL_ENTRY)&_ZN6S574C53v65Ev,
  (VTBL_ENTRY)&_ZN6S574C53v66Ev,
  (VTBL_ENTRY)&_ZN6S574C53v67Ev,
  (VTBL_ENTRY)&_ZN6S574C43v68Ev,
  (VTBL_ENTRY)&_ZN6S574C43v69Ev,
  (VTBL_ENTRY)&_ZN6S574C43v70Ev,
  (VTBL_ENTRY)&_ZN6S574C43v71Ev,
  (VTBL_ENTRY)&_ZN6S574C43v72Ev,
  (VTBL_ENTRY)&_ZN6S574C43v73Ev,
  (VTBL_ENTRY)&_ZN6S574C43v74Ev,
  (VTBL_ENTRY)&_ZN6S574C43v75Ev,
  (VTBL_ENTRY)&_ZN6S574C43v76Ev,
  (VTBL_ENTRY)&_ZN6S574C43v77Ev,
  (VTBL_ENTRY)&_ZN6S574C43v78Ev,
  (VTBL_ENTRY)&_ZN6S574C43v79Ev,
  (VTBL_ENTRY)&_ZN6S574C43v80Ev,
  (VTBL_ENTRY)&_ZN6S574C43v81Ev,
  (VTBL_ENTRY)&_ZN6S574C43v82Ev,
  (VTBL_ENTRY)&_ZN6S574C43v83Ev,
  (VTBL_ENTRY)&_ZN6S574C43v84Ev,
  (VTBL_ENTRY)&_ZN6S574C43v85Ev,
  (VTBL_ENTRY)&_ZN6S574C43v86Ev,
  (VTBL_ENTRY)&_ZN6S574C43v87Ev,
  (VTBL_ENTRY)&_ZN6S574C43v88Ev,
  (VTBL_ENTRY)&_ZN6S574C43v89Ev,
  (VTBL_ENTRY)&_ZN6S574C33v90Ev,
  (VTBL_ENTRY)&_ZN6S574C33v91Ev,
  (VTBL_ENTRY)&_ZN6S574C33v92Ev,
  (VTBL_ENTRY)&_ZN6S574C33v93Ev,
  (VTBL_ENTRY)&_ZN6S574C33v94Ev,
  (VTBL_ENTRY)&_ZN6S574C33v95Ev,
  (VTBL_ENTRY)&_ZN6S574C33v96Ev,
  (VTBL_ENTRY)&_ZN6S574C33v97Ev,
  (VTBL_ENTRY)&_ZN6S574C33v98Ev,
  (VTBL_ENTRY)&_ZN6S574C33v99Ev,
  (VTBL_ENTRY)&_ZN6S574C34v100Ev,
  (VTBL_ENTRY)&_ZN6S574C34v101Ev,
  (VTBL_ENTRY)&_ZN6S574C34v102Ev,
  (VTBL_ENTRY)&_ZN6S574C34v103Ev,
  (VTBL_ENTRY)&_ZN6S574C34v104Ev,
  (VTBL_ENTRY)&_ZN6S574C34v105Ev,
  (VTBL_ENTRY)&_ZN6S574C34v106Ev,
  (VTBL_ENTRY)&_ZN6S574C34v107Ev,
  (VTBL_ENTRY)&_ZN6S574C34v108Ev,
  (VTBL_ENTRY)&_ZN6S574C34v109Ev,
  (VTBL_ENTRY)&_ZN6S574C24v110Ev,
  (VTBL_ENTRY)&_ZN6S574C24v111Ev,
  (VTBL_ENTRY)&_ZN6S574C24v112Ev,
  (VTBL_ENTRY)&_ZN6S574C24v113Ev,
};
extern VTBL_ENTRY _ZTI6S574C2[];
extern  VTBL_ENTRY _ZTV6S574C2[];
Class_Descriptor cd_S574C2 = {  "S574C2", // class name
  bases_S574C2, 3,
  &(vtc_S574C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,220), // object size
  NSPAIRA(_ZTI6S574C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S574C2),114, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


 S574C1 ::~S574C1(){ note_dtor("S574C1", this);}
void  S574C1 ::v1(){vfunc_called(this, "_ZN6S574C12v1Ev");}
void  S574C1 ::v2(){vfunc_called(this, "_ZN6S574C12v2Ev");}
void  S574C1 ::v3(){vfunc_called(this, "_ZN6S574C12v3Ev");}
S574C1 ::S574C1(){ note_ctor("S574C1", this);} // tgen

static void Test_S574C1()
{
  extern Class_Descriptor cd_S574C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(43,62)];
    init_test(&cd_S574C1, buf);
    S574C1 *dp, &lv = *(dp=new (buf) S574C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(336,244), "sizeof(S574C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S574C1)");
    check_base_class_offset(lv, (S574C5*)(S574C4*)(S574C3*)(S574C2*), 0, "S574C1");
    check_base_class_offset(lv, (S574C4*)(S574C3*)(S574C2*), 0, "S574C1");
    check_base_class_offset(lv, (S574C3*)(S574C2*), 0, "S574C1");
    check_base_class_offset(lv, (S574C2*), 0, "S574C1");
    check_field_offset(lv, s574c1f0, ABISELECT(296,220), "S574C1.s574c1f0");
    check_field_offset(lv, s574c1f1, ABISELECT(312,232), "S574C1.s574c1f1");
    set_bf_and_test(lv, s574c1f2, ABISELECT(328,240), 0, 1, 1, "S574C1");
    test_class_info(&lv, &cd_S574C1);
    dp->~S574C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS574C1(Test_S574C1, "S574C1", ABISELECT(336,244));

#else // __cplusplus

extern void _ZN6S574C1C1Ev();
extern void _ZN6S574C1D1Ev();
Name_Map name_map_S574C1[] = {
  NSPAIR(_ZN6S574C1C1Ev),
  NSPAIR(_ZN6S574C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S574C5;
extern VTBL_ENTRY _ZTI6S574C5[];
extern  VTBL_ENTRY _ZTV6S574C5[];
extern Class_Descriptor cd_S574C4;
extern VTBL_ENTRY _ZTI6S574C4[];
extern  VTBL_ENTRY _ZTV6S574C4[];
extern Class_Descriptor cd_S574C3;
extern VTBL_ENTRY _ZTI6S574C3[];
extern  VTBL_ENTRY _ZTV6S574C3[];
extern Class_Descriptor cd_S574C2;
extern VTBL_ENTRY _ZTI6S574C2[];
extern  VTBL_ENTRY _ZTV6S574C2[];
static Base_Class bases_S574C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S574C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S574C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S574C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S574C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S574C1[];
extern void _ZN6S574C1D1Ev();
extern void _ZN6S574C1D0Ev();
extern void _ZN6S574C52v4Ev();
extern void _ZN6S574C52v5Ev();
extern void _ZN6S574C52v6Ev();
extern void _ZN6S574C52v7Ev();
extern void _ZN6S574C52v8Ev();
extern void _ZN6S574C52v9Ev();
extern void _ZN6S574C53v10Ev();
extern void _ZN6S574C53v11Ev();
extern void _ZN6S574C53v12Ev();
extern void _ZN6S574C53v13Ev();
extern void _ZN6S574C53v14Ev();
extern void _ZN6S574C53v15Ev();
extern void _ZN6S574C53v16Ev();
extern void _ZN6S574C53v17Ev();
extern void _ZN6S574C53v18Ev();
extern void _ZN6S574C53v19Ev();
extern void _ZN6S574C53v20Ev();
extern void _ZN6S574C53v21Ev();
extern void _ZN6S574C53v22Ev();
extern void _ZN6S574C53v23Ev();
extern void _ZN6S574C53v24Ev();
extern void _ZN6S574C53v25Ev();
extern void _ZN6S574C53v26Ev();
extern void _ZN6S574C53v27Ev();
extern void _ZN6S574C53v28Ev();
extern void _ZN6S574C53v29Ev();
extern void _ZN6S574C53v30Ev();
extern void _ZN6S574C53v31Ev();
extern void _ZN6S574C53v32Ev();
extern void _ZN6S574C53v33Ev();
extern void _ZN6S574C53v34Ev();
extern void _ZN6S574C53v35Ev();
extern void _ZN6S574C53v36Ev();
extern void _ZN6S574C53v37Ev();
extern void _ZN6S574C53v38Ev();
extern void _ZN6S574C53v39Ev();
extern void _ZN6S574C53v40Ev();
extern void _ZN6S574C53v41Ev();
extern void _ZN6S574C53v42Ev();
extern void _ZN6S574C53v43Ev();
extern void _ZN6S574C53v44Ev();
extern void _ZN6S574C53v45Ev();
extern void _ZN6S574C53v46Ev();
extern void _ZN6S574C53v47Ev();
extern void _ZN6S574C53v48Ev();
extern void _ZN6S574C53v49Ev();
extern void _ZN6S574C53v50Ev();
extern void _ZN6S574C53v51Ev();
extern void _ZN6S574C53v52Ev();
extern void _ZN6S574C53v53Ev();
extern void _ZN6S574C53v54Ev();
extern void _ZN6S574C53v55Ev();
extern void _ZN6S574C53v56Ev();
extern void _ZN6S574C53v57Ev();
extern void _ZN6S574C53v58Ev();
extern void _ZN6S574C53v59Ev();
extern void _ZN6S574C53v60Ev();
extern void _ZN6S574C53v61Ev();
extern void _ZN6S574C53v62Ev();
extern void _ZN6S574C53v63Ev();
extern void _ZN6S574C53v64Ev();
extern void _ZN6S574C53v65Ev();
extern void _ZN6S574C53v66Ev();
extern void _ZN6S574C53v67Ev();
extern void _ZN6S574C43v68Ev();
extern void _ZN6S574C43v69Ev();
extern void _ZN6S574C43v70Ev();
extern void _ZN6S574C43v71Ev();
extern void _ZN6S574C43v72Ev();
extern void _ZN6S574C43v73Ev();
extern void _ZN6S574C43v74Ev();
extern void _ZN6S574C43v75Ev();
extern void _ZN6S574C43v76Ev();
extern void _ZN6S574C43v77Ev();
extern void _ZN6S574C43v78Ev();
extern void _ZN6S574C43v79Ev();
extern void _ZN6S574C43v80Ev();
extern void _ZN6S574C43v81Ev();
extern void _ZN6S574C43v82Ev();
extern void _ZN6S574C43v83Ev();
extern void _ZN6S574C43v84Ev();
extern void _ZN6S574C43v85Ev();
extern void _ZN6S574C43v86Ev();
extern void _ZN6S574C43v87Ev();
extern void _ZN6S574C43v88Ev();
extern void _ZN6S574C43v89Ev();
extern void _ZN6S574C33v90Ev();
extern void _ZN6S574C33v91Ev();
extern void _ZN6S574C33v92Ev();
extern void _ZN6S574C33v93Ev();
extern void _ZN6S574C33v94Ev();
extern void _ZN6S574C33v95Ev();
extern void _ZN6S574C33v96Ev();
extern void _ZN6S574C33v97Ev();
extern void _ZN6S574C33v98Ev();
extern void _ZN6S574C33v99Ev();
extern void _ZN6S574C34v100Ev();
extern void _ZN6S574C34v101Ev();
extern void _ZN6S574C34v102Ev();
extern void _ZN6S574C34v103Ev();
extern void _ZN6S574C34v104Ev();
extern void _ZN6S574C34v105Ev();
extern void _ZN6S574C34v106Ev();
extern void _ZN6S574C34v107Ev();
extern void _ZN6S574C34v108Ev();
extern void _ZN6S574C34v109Ev();
extern void _ZN6S574C24v110Ev();
extern void _ZN6S574C24v111Ev();
extern void _ZN6S574C24v112Ev();
extern void _ZN6S574C24v113Ev();
extern void _ZN6S574C12v1Ev();
extern void _ZN6S574C12v2Ev();
extern void _ZN6S574C12v3Ev();
static  VTBL_ENTRY vtc_S574C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S574C1[0]),
  (VTBL_ENTRY)&_ZN6S574C1D1Ev,
  (VTBL_ENTRY)&_ZN6S574C1D0Ev,
  (VTBL_ENTRY)&_ZN6S574C52v4Ev,
  (VTBL_ENTRY)&_ZN6S574C52v5Ev,
  (VTBL_ENTRY)&_ZN6S574C52v6Ev,
  (VTBL_ENTRY)&_ZN6S574C52v7Ev,
  (VTBL_ENTRY)&_ZN6S574C52v8Ev,
  (VTBL_ENTRY)&_ZN6S574C52v9Ev,
  (VTBL_ENTRY)&_ZN6S574C53v10Ev,
  (VTBL_ENTRY)&_ZN6S574C53v11Ev,
  (VTBL_ENTRY)&_ZN6S574C53v12Ev,
  (VTBL_ENTRY)&_ZN6S574C53v13Ev,
  (VTBL_ENTRY)&_ZN6S574C53v14Ev,
  (VTBL_ENTRY)&_ZN6S574C53v15Ev,
  (VTBL_ENTRY)&_ZN6S574C53v16Ev,
  (VTBL_ENTRY)&_ZN6S574C53v17Ev,
  (VTBL_ENTRY)&_ZN6S574C53v18Ev,
  (VTBL_ENTRY)&_ZN6S574C53v19Ev,
  (VTBL_ENTRY)&_ZN6S574C53v20Ev,
  (VTBL_ENTRY)&_ZN6S574C53v21Ev,
  (VTBL_ENTRY)&_ZN6S574C53v22Ev,
  (VTBL_ENTRY)&_ZN6S574C53v23Ev,
  (VTBL_ENTRY)&_ZN6S574C53v24Ev,
  (VTBL_ENTRY)&_ZN6S574C53v25Ev,
  (VTBL_ENTRY)&_ZN6S574C53v26Ev,
  (VTBL_ENTRY)&_ZN6S574C53v27Ev,
  (VTBL_ENTRY)&_ZN6S574C53v28Ev,
  (VTBL_ENTRY)&_ZN6S574C53v29Ev,
  (VTBL_ENTRY)&_ZN6S574C53v30Ev,
  (VTBL_ENTRY)&_ZN6S574C53v31Ev,
  (VTBL_ENTRY)&_ZN6S574C53v32Ev,
  (VTBL_ENTRY)&_ZN6S574C53v33Ev,
  (VTBL_ENTRY)&_ZN6S574C53v34Ev,
  (VTBL_ENTRY)&_ZN6S574C53v35Ev,
  (VTBL_ENTRY)&_ZN6S574C53v36Ev,
  (VTBL_ENTRY)&_ZN6S574C53v37Ev,
  (VTBL_ENTRY)&_ZN6S574C53v38Ev,
  (VTBL_ENTRY)&_ZN6S574C53v39Ev,
  (VTBL_ENTRY)&_ZN6S574C53v40Ev,
  (VTBL_ENTRY)&_ZN6S574C53v41Ev,
  (VTBL_ENTRY)&_ZN6S574C53v42Ev,
  (VTBL_ENTRY)&_ZN6S574C53v43Ev,
  (VTBL_ENTRY)&_ZN6S574C53v44Ev,
  (VTBL_ENTRY)&_ZN6S574C53v45Ev,
  (VTBL_ENTRY)&_ZN6S574C53v46Ev,
  (VTBL_ENTRY)&_ZN6S574C53v47Ev,
  (VTBL_ENTRY)&_ZN6S574C53v48Ev,
  (VTBL_ENTRY)&_ZN6S574C53v49Ev,
  (VTBL_ENTRY)&_ZN6S574C53v50Ev,
  (VTBL_ENTRY)&_ZN6S574C53v51Ev,
  (VTBL_ENTRY)&_ZN6S574C53v52Ev,
  (VTBL_ENTRY)&_ZN6S574C53v53Ev,
  (VTBL_ENTRY)&_ZN6S574C53v54Ev,
  (VTBL_ENTRY)&_ZN6S574C53v55Ev,
  (VTBL_ENTRY)&_ZN6S574C53v56Ev,
  (VTBL_ENTRY)&_ZN6S574C53v57Ev,
  (VTBL_ENTRY)&_ZN6S574C53v58Ev,
  (VTBL_ENTRY)&_ZN6S574C53v59Ev,
  (VTBL_ENTRY)&_ZN6S574C53v60Ev,
  (VTBL_ENTRY)&_ZN6S574C53v61Ev,
  (VTBL_ENTRY)&_ZN6S574C53v62Ev,
  (VTBL_ENTRY)&_ZN6S574C53v63Ev,
  (VTBL_ENTRY)&_ZN6S574C53v64Ev,
  (VTBL_ENTRY)&_ZN6S574C53v65Ev,
  (VTBL_ENTRY)&_ZN6S574C53v66Ev,
  (VTBL_ENTRY)&_ZN6S574C53v67Ev,
  (VTBL_ENTRY)&_ZN6S574C43v68Ev,
  (VTBL_ENTRY)&_ZN6S574C43v69Ev,
  (VTBL_ENTRY)&_ZN6S574C43v70Ev,
  (VTBL_ENTRY)&_ZN6S574C43v71Ev,
  (VTBL_ENTRY)&_ZN6S574C43v72Ev,
  (VTBL_ENTRY)&_ZN6S574C43v73Ev,
  (VTBL_ENTRY)&_ZN6S574C43v74Ev,
  (VTBL_ENTRY)&_ZN6S574C43v75Ev,
  (VTBL_ENTRY)&_ZN6S574C43v76Ev,
  (VTBL_ENTRY)&_ZN6S574C43v77Ev,
  (VTBL_ENTRY)&_ZN6S574C43v78Ev,
  (VTBL_ENTRY)&_ZN6S574C43v79Ev,
  (VTBL_ENTRY)&_ZN6S574C43v80Ev,
  (VTBL_ENTRY)&_ZN6S574C43v81Ev,
  (VTBL_ENTRY)&_ZN6S574C43v82Ev,
  (VTBL_ENTRY)&_ZN6S574C43v83Ev,
  (VTBL_ENTRY)&_ZN6S574C43v84Ev,
  (VTBL_ENTRY)&_ZN6S574C43v85Ev,
  (VTBL_ENTRY)&_ZN6S574C43v86Ev,
  (VTBL_ENTRY)&_ZN6S574C43v87Ev,
  (VTBL_ENTRY)&_ZN6S574C43v88Ev,
  (VTBL_ENTRY)&_ZN6S574C43v89Ev,
  (VTBL_ENTRY)&_ZN6S574C33v90Ev,
  (VTBL_ENTRY)&_ZN6S574C33v91Ev,
  (VTBL_ENTRY)&_ZN6S574C33v92Ev,
  (VTBL_ENTRY)&_ZN6S574C33v93Ev,
  (VTBL_ENTRY)&_ZN6S574C33v94Ev,
  (VTBL_ENTRY)&_ZN6S574C33v95Ev,
  (VTBL_ENTRY)&_ZN6S574C33v96Ev,
  (VTBL_ENTRY)&_ZN6S574C33v97Ev,
  (VTBL_ENTRY)&_ZN6S574C33v98Ev,
  (VTBL_ENTRY)&_ZN6S574C33v99Ev,
  (VTBL_ENTRY)&_ZN6S574C34v100Ev,
  (VTBL_ENTRY)&_ZN6S574C34v101Ev,
  (VTBL_ENTRY)&_ZN6S574C34v102Ev,
  (VTBL_ENTRY)&_ZN6S574C34v103Ev,
  (VTBL_ENTRY)&_ZN6S574C34v104Ev,
  (VTBL_ENTRY)&_ZN6S574C34v105Ev,
  (VTBL_ENTRY)&_ZN6S574C34v106Ev,
  (VTBL_ENTRY)&_ZN6S574C34v107Ev,
  (VTBL_ENTRY)&_ZN6S574C34v108Ev,
  (VTBL_ENTRY)&_ZN6S574C34v109Ev,
  (VTBL_ENTRY)&_ZN6S574C24v110Ev,
  (VTBL_ENTRY)&_ZN6S574C24v111Ev,
  (VTBL_ENTRY)&_ZN6S574C24v112Ev,
  (VTBL_ENTRY)&_ZN6S574C24v113Ev,
  (VTBL_ENTRY)&_ZN6S574C12v1Ev,
  (VTBL_ENTRY)&_ZN6S574C12v2Ev,
  (VTBL_ENTRY)&_ZN6S574C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S574C1[];
extern  VTBL_ENTRY _ZTV6S574C1[];
Class_Descriptor cd_S574C1 = {  "S574C1", // class name
  bases_S574C1, 4,
  &(vtc_S574C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(336,244), // object size
  NSPAIRA(_ZTI6S574C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S574C1),117, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  4, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S509C5  {
  int s509c5f0;
  __tsi64 s509c5f1;
  void *s509c5f2[4];
  int s509c5f3[2];
  void *s509c5f4;
  ::S3214C4_nt s509c5f5;
  void *s509c5f6[2];
  virtual  ~S509C5(); // _ZN6S509C5D1Ev
  virtual void  v23(); // _ZN6S509C53v23Ev
  virtual void  v24(); // _ZN6S509C53v24Ev
  virtual void  v25(); // _ZN6S509C53v25Ev
  virtual void  v26(); // _ZN6S509C53v26Ev
  virtual void  v27(); // _ZN6S509C53v27Ev
  virtual void  v28(); // _ZN6S509C53v28Ev
  virtual void  v29(); // _ZN6S509C53v29Ev
  virtual void  v30(); // _ZN6S509C53v30Ev
  virtual void  v31(); // _ZN6S509C53v31Ev
  virtual void  v32(); // _ZN6S509C53v32Ev
  virtual void  v33(); // _ZN6S509C53v33Ev
  virtual void  v34(); // _ZN6S509C53v34Ev
  virtual void  v35(); // _ZN6S509C53v35Ev
  virtual void  v36(); // _ZN6S509C53v36Ev
  virtual void  v37(); // _ZN6S509C53v37Ev
  virtual void  v38(); // _ZN6S509C53v38Ev
  virtual void  v39(); // _ZN6S509C53v39Ev
  virtual void  v40(); // _ZN6S509C53v40Ev
  virtual void  v41(); // _ZN6S509C53v41Ev
  virtual void  v42(); // _ZN6S509C53v42Ev
  virtual void  v43(); // _ZN6S509C53v43Ev
  virtual void  v44(); // _ZN6S509C53v44Ev
  virtual void  v45(); // _ZN6S509C53v45Ev
  virtual void  v46(); // _ZN6S509C53v46Ev
  virtual void  v47(); // _ZN6S509C53v47Ev
  virtual void  v48(); // _ZN6S509C53v48Ev
  virtual void  v49(); // _ZN6S509C53v49Ev
  virtual void  v50(); // _ZN6S509C53v50Ev
  virtual void  v51(); // _ZN6S509C53v51Ev
  virtual void  v52(); // _ZN6S509C53v52Ev
  virtual void  v53(); // _ZN6S509C53v53Ev
  virtual void  v54(); // _ZN6S509C53v54Ev
  virtual void  v55(); // _ZN6S509C53v55Ev
  virtual void  v56(); // _ZN6S509C53v56Ev
  virtual void  v57(); // _ZN6S509C53v57Ev
  virtual void  v58(); // _ZN6S509C53v58Ev
  virtual void  v59(); // _ZN6S509C53v59Ev
  virtual void  v60(); // _ZN6S509C53v60Ev
  virtual void  v61(); // _ZN6S509C53v61Ev
  virtual void  v62(); // _ZN6S509C53v62Ev
  virtual void  v63(); // _ZN6S509C53v63Ev
  virtual void  v64(); // _ZN6S509C53v64Ev
  virtual void  v65(); // _ZN6S509C53v65Ev
  virtual void  v66(); // _ZN6S509C53v66Ev
  virtual void  v67(); // _ZN6S509C53v67Ev
  virtual void  v68(); // _ZN6S509C53v68Ev
  virtual void  v69(); // _ZN6S509C53v69Ev
  virtual void  v70(); // _ZN6S509C53v70Ev
  virtual void  v71(); // _ZN6S509C53v71Ev
  virtual void  v72(); // _ZN6S509C53v72Ev
  virtual void  v73(); // _ZN6S509C53v73Ev
  virtual void  v74(); // _ZN6S509C53v74Ev
  virtual void  v75(); // _ZN6S509C53v75Ev
  virtual void  v76(); // _ZN6S509C53v76Ev
  virtual void  v77(); // _ZN6S509C53v77Ev
  virtual void  v78(); // _ZN6S509C53v78Ev
  virtual void  v79(); // _ZN6S509C53v79Ev
  virtual void  v80(); // _ZN6S509C53v80Ev
  virtual void  v81(); // _ZN6S509C53v81Ev
  virtual void  v82(); // _ZN6S509C53v82Ev
  virtual void  v83(); // _ZN6S509C53v83Ev
  virtual void  v84(); // _ZN6S509C53v84Ev
  virtual void  v85(); // _ZN6S509C53v85Ev
  virtual void  v86(); // _ZN6S509C53v86Ev
  S509C5(); // tgen
};
//SIG(-1 S509C5) 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]}


 S509C5 ::~S509C5(){ note_dtor("S509C5", this);}
void  S509C5 ::v23(){vfunc_called(this, "_ZN6S509C53v23Ev");}
void  S509C5 ::v24(){vfunc_called(this, "_ZN6S509C53v24Ev");}
void  S509C5 ::v25(){vfunc_called(this, "_ZN6S509C53v25Ev");}
void  S509C5 ::v26(){vfunc_called(this, "_ZN6S509C53v26Ev");}
void  S509C5 ::v27(){vfunc_called(this, "_ZN6S509C53v27Ev");}
void  S509C5 ::v28(){vfunc_called(this, "_ZN6S509C53v28Ev");}
void  S509C5 ::v29(){vfunc_called(this, "_ZN6S509C53v29Ev");}
void  S509C5 ::v30(){vfunc_called(this, "_ZN6S509C53v30Ev");}
void  S509C5 ::v31(){vfunc_called(this, "_ZN6S509C53v31Ev");}
void  S509C5 ::v32(){vfunc_called(this, "_ZN6S509C53v32Ev");}
void  S509C5 ::v33(){vfunc_called(this, "_ZN6S509C53v33Ev");}
void  S509C5 ::v34(){vfunc_called(this, "_ZN6S509C53v34Ev");}
void  S509C5 ::v35(){vfunc_called(this, "_ZN6S509C53v35Ev");}
void  S509C5 ::v36(){vfunc_called(this, "_ZN6S509C53v36Ev");}
void  S509C5 ::v37(){vfunc_called(this, "_ZN6S509C53v37Ev");}
void  S509C5 ::v38(){vfunc_called(this, "_ZN6S509C53v38Ev");}
void  S509C5 ::v39(){vfunc_called(this, "_ZN6S509C53v39Ev");}
void  S509C5 ::v40(){vfunc_called(this, "_ZN6S509C53v40Ev");}
void  S509C5 ::v41(){vfunc_called(this, "_ZN6S509C53v41Ev");}
void  S509C5 ::v42(){vfunc_called(this, "_ZN6S509C53v42Ev");}
void  S509C5 ::v43(){vfunc_called(this, "_ZN6S509C53v43Ev");}
void  S509C5 ::v44(){vfunc_called(this, "_ZN6S509C53v44Ev");}
void  S509C5 ::v45(){vfunc_called(this, "_ZN6S509C53v45Ev");}
void  S509C5 ::v46(){vfunc_called(this, "_ZN6S509C53v46Ev");}
void  S509C5 ::v47(){vfunc_called(this, "_ZN6S509C53v47Ev");}
void  S509C5 ::v48(){vfunc_called(this, "_ZN6S509C53v48Ev");}
void  S509C5 ::v49(){vfunc_called(this, "_ZN6S509C53v49Ev");}
void  S509C5 ::v50(){vfunc_called(this, "_ZN6S509C53v50Ev");}
void  S509C5 ::v51(){vfunc_called(this, "_ZN6S509C53v51Ev");}
void  S509C5 ::v52(){vfunc_called(this, "_ZN6S509C53v52Ev");}
void  S509C5 ::v53(){vfunc_called(this, "_ZN6S509C53v53Ev");}
void  S509C5 ::v54(){vfunc_called(this, "_ZN6S509C53v54Ev");}
void  S509C5 ::v55(){vfunc_called(this, "_ZN6S509C53v55Ev");}
void  S509C5 ::v56(){vfunc_called(this, "_ZN6S509C53v56Ev");}
void  S509C5 ::v57(){vfunc_called(this, "_ZN6S509C53v57Ev");}
void  S509C5 ::v58(){vfunc_called(this, "_ZN6S509C53v58Ev");}
void  S509C5 ::v59(){vfunc_called(this, "_ZN6S509C53v59Ev");}
void  S509C5 ::v60(){vfunc_called(this, "_ZN6S509C53v60Ev");}
void  S509C5 ::v61(){vfunc_called(this, "_ZN6S509C53v61Ev");}
void  S509C5 ::v62(){vfunc_called(this, "_ZN6S509C53v62Ev");}
void  S509C5 ::v63(){vfunc_called(this, "_ZN6S509C53v63Ev");}
void  S509C5 ::v64(){vfunc_called(this, "_ZN6S509C53v64Ev");}
void  S509C5 ::v65(){vfunc_called(this, "_ZN6S509C53v65Ev");}
void  S509C5 ::v66(){vfunc_called(this, "_ZN6S509C53v66Ev");}
void  S509C5 ::v67(){vfunc_called(this, "_ZN6S509C53v67Ev");}
void  S509C5 ::v68(){vfunc_called(this, "_ZN6S509C53v68Ev");}
void  S509C5 ::v69(){vfunc_called(this, "_ZN6S509C53v69Ev");}
void  S509C5 ::v70(){vfunc_called(this, "_ZN6S509C53v70Ev");}
void  S509C5 ::v71(){vfunc_called(this, "_ZN6S509C53v71Ev");}
void  S509C5 ::v72(){vfunc_called(this, "_ZN6S509C53v72Ev");}
void  S509C5 ::v73(){vfunc_called(this, "_ZN6S509C53v73Ev");}
void  S509C5 ::v74(){vfunc_called(this, "_ZN6S509C53v74Ev");}
void  S509C5 ::v75(){vfunc_called(this, "_ZN6S509C53v75Ev");}
void  S509C5 ::v76(){vfunc_called(this, "_ZN6S509C53v76Ev");}
void  S509C5 ::v77(){vfunc_called(this, "_ZN6S509C53v77Ev");}
void  S509C5 ::v78(){vfunc_called(this, "_ZN6S509C53v78Ev");}
void  S509C5 ::v79(){vfunc_called(this, "_ZN6S509C53v79Ev");}
void  S509C5 ::v80(){vfunc_called(this, "_ZN6S509C53v80Ev");}
void  S509C5 ::v81(){vfunc_called(this, "_ZN6S509C53v81Ev");}
void  S509C5 ::v82(){vfunc_called(this, "_ZN6S509C53v82Ev");}
void  S509C5 ::v83(){vfunc_called(this, "_ZN6S509C53v83Ev");}
void  S509C5 ::v84(){vfunc_called(this, "_ZN6S509C53v84Ev");}
void  S509C5 ::v85(){vfunc_called(this, "_ZN6S509C53v85Ev");}
void  S509C5 ::v86(){vfunc_called(this, "_ZN6S509C53v86Ev");}
S509C5 ::S509C5(){ note_ctor("S509C5", this);} // tgen

static void Test_S509C5()
{
  extern Class_Descriptor cd_S509C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S509C5, buf);
    S509C5 *dp, &lv = *(dp=new (buf) S509C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S509C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S509C5)");
    check_field_offset(lv, s509c5f0, ABISELECT(8,4), "S509C5.s509c5f0");
    check_field_offset(lv, s509c5f1, ABISELECT(16,8), "S509C5.s509c5f1");
    check_field_offset(lv, s509c5f2, ABISELECT(24,16), "S509C5.s509c5f2");
    check_field_offset(lv, s509c5f3, ABISELECT(56,32), "S509C5.s509c5f3");
    check_field_offset(lv, s509c5f4, ABISELECT(64,40), "S509C5.s509c5f4");
    check_field_offset(lv, s509c5f5, ABISELECT(72,44), "S509C5.s509c5f5");
    check_field_offset(lv, s509c5f6, ABISELECT(80,52), "S509C5.s509c5f6");
    test_class_info(&lv, &cd_S509C5);
    dp->~S509C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS509C5(Test_S509C5, "S509C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S509C5C1Ev();
extern void _ZN6S509C5D1Ev();
Name_Map name_map_S509C5[] = {
  NSPAIR(_ZN6S509C5C1Ev),
  NSPAIR(_ZN6S509C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S509C5[];
extern void _ZN6S509C5D1Ev();
extern void _ZN6S509C5D0Ev();
extern void _ZN6S509C53v23Ev();
extern void _ZN6S509C53v24Ev();
extern void _ZN6S509C53v25Ev();
extern void _ZN6S509C53v26Ev();
extern void _ZN6S509C53v27Ev();
extern void _ZN6S509C53v28Ev();
extern void _ZN6S509C53v29Ev();
extern void _ZN6S509C53v30Ev();
extern void _ZN6S509C53v31Ev();
extern void _ZN6S509C53v32Ev();
extern void _ZN6S509C53v33Ev();
extern void _ZN6S509C53v34Ev();
extern void _ZN6S509C53v35Ev();
extern void _ZN6S509C53v36Ev();
extern void _ZN6S509C53v37Ev();
extern void _ZN6S509C53v38Ev();
extern void _ZN6S509C53v39Ev();
extern void _ZN6S509C53v40Ev();
extern void _ZN6S509C53v41Ev();
extern void _ZN6S509C53v42Ev();
extern void _ZN6S509C53v43Ev();
extern void _ZN6S509C53v44Ev();
extern void _ZN6S509C53v45Ev();
extern void _ZN6S509C53v46Ev();
extern void _ZN6S509C53v47Ev();
extern void _ZN6S509C53v48Ev();
extern void _ZN6S509C53v49Ev();
extern void _ZN6S509C53v50Ev();
extern void _ZN6S509C53v51Ev();
extern void _ZN6S509C53v52Ev();
extern void _ZN6S509C53v53Ev();
extern void _ZN6S509C53v54Ev();
extern void _ZN6S509C53v55Ev();
extern void _ZN6S509C53v56Ev();
extern void _ZN6S509C53v57Ev();
extern void _ZN6S509C53v58Ev();
extern void _ZN6S509C53v59Ev();
extern void _ZN6S509C53v60Ev();
extern void _ZN6S509C53v61Ev();
extern void _ZN6S509C53v62Ev();
extern void _ZN6S509C53v63Ev();
extern void _ZN6S509C53v64Ev();
extern void _ZN6S509C53v65Ev();
extern void _ZN6S509C53v66Ev();
extern void _ZN6S509C53v67Ev();
extern void _ZN6S509C53v68Ev();
extern void _ZN6S509C53v69Ev();
extern void _ZN6S509C53v70Ev();
extern void _ZN6S509C53v71Ev();
extern void _ZN6S509C53v72Ev();
extern void _ZN6S509C53v73Ev();
extern void _ZN6S509C53v74Ev();
extern void _ZN6S509C53v75Ev();
extern void _ZN6S509C53v76Ev();
extern void _ZN6S509C53v77Ev();
extern void _ZN6S509C53v78Ev();
extern void _ZN6S509C53v79Ev();
extern void _ZN6S509C53v80Ev();
extern void _ZN6S509C53v81Ev();
extern void _ZN6S509C53v82Ev();
extern void _ZN6S509C53v83Ev();
extern void _ZN6S509C53v84Ev();
extern void _ZN6S509C53v85Ev();
extern void _ZN6S509C53v86Ev();
static  VTBL_ENTRY vtc_S509C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S509C5[0]),
  (VTBL_ENTRY)&_ZN6S509C5D1Ev,
  (VTBL_ENTRY)&_ZN6S509C5D0Ev,
  (VTBL_ENTRY)&_ZN6S509C53v23Ev,
  (VTBL_ENTRY)&_ZN6S509C53v24Ev,
  (VTBL_ENTRY)&_ZN6S509C53v25Ev,
  (VTBL_ENTRY)&_ZN6S509C53v26Ev,
  (VTBL_ENTRY)&_ZN6S509C53v27Ev,
  (VTBL_ENTRY)&_ZN6S509C53v28Ev,
  (VTBL_ENTRY)&_ZN6S509C53v29Ev,
  (VTBL_ENTRY)&_ZN6S509C53v30Ev,
  (VTBL_ENTRY)&_ZN6S509C53v31Ev,
  (VTBL_ENTRY)&_ZN6S509C53v32Ev,
  (VTBL_ENTRY)&_ZN6S509C53v33Ev,
  (VTBL_ENTRY)&_ZN6S509C53v34Ev,
  (VTBL_ENTRY)&_ZN6S509C53v35Ev,
  (VTBL_ENTRY)&_ZN6S509C53v36Ev,
  (VTBL_ENTRY)&_ZN6S509C53v37Ev,
  (VTBL_ENTRY)&_ZN6S509C53v38Ev,
  (VTBL_ENTRY)&_ZN6S509C53v39Ev,
  (VTBL_ENTRY)&_ZN6S509C53v40Ev,
  (VTBL_ENTRY)&_ZN6S509C53v41Ev,
  (VTBL_ENTRY)&_ZN6S509C53v42Ev,
  (VTBL_ENTRY)&_ZN6S509C53v43Ev,
  (VTBL_ENTRY)&_ZN6S509C53v44Ev,
  (VTBL_ENTRY)&_ZN6S509C53v45Ev,
  (VTBL_ENTRY)&_ZN6S509C53v46Ev,
  (VTBL_ENTRY)&_ZN6S509C53v47Ev,
  (VTBL_ENTRY)&_ZN6S509C53v48Ev,
  (VTBL_ENTRY)&_ZN6S509C53v49Ev,
  (VTBL_ENTRY)&_ZN6S509C53v50Ev,
  (VTBL_ENTRY)&_ZN6S509C53v51Ev,
  (VTBL_ENTRY)&_ZN6S509C53v52Ev,
  (VTBL_ENTRY)&_ZN6S509C53v53Ev,
  (VTBL_ENTRY)&_ZN6S509C53v54Ev,
  (VTBL_ENTRY)&_ZN6S509C53v55Ev,
  (VTBL_ENTRY)&_ZN6S509C53v56Ev,
  (VTBL_ENTRY)&_ZN6S509C53v57Ev,
  (VTBL_ENTRY)&_ZN6S509C53v58Ev,
  (VTBL_ENTRY)&_ZN6S509C53v59Ev,
  (VTBL_ENTRY)&_ZN6S509C53v60Ev,
  (VTBL_ENTRY)&_ZN6S509C53v61Ev,
  (VTBL_ENTRY)&_ZN6S509C53v62Ev,
  (VTBL_ENTRY)&_ZN6S509C53v63Ev,
  (VTBL_ENTRY)&_ZN6S509C53v64Ev,
  (VTBL_ENTRY)&_ZN6S509C53v65Ev,
  (VTBL_ENTRY)&_ZN6S509C53v66Ev,
  (VTBL_ENTRY)&_ZN6S509C53v67Ev,
  (VTBL_ENTRY)&_ZN6S509C53v68Ev,
  (VTBL_ENTRY)&_ZN6S509C53v69Ev,
  (VTBL_ENTRY)&_ZN6S509C53v70Ev,
  (VTBL_ENTRY)&_ZN6S509C53v71Ev,
  (VTBL_ENTRY)&_ZN6S509C53v72Ev,
  (VTBL_ENTRY)&_ZN6S509C53v73Ev,
  (VTBL_ENTRY)&_ZN6S509C53v74Ev,
  (VTBL_ENTRY)&_ZN6S509C53v75Ev,
  (VTBL_ENTRY)&_ZN6S509C53v76Ev,
  (VTBL_ENTRY)&_ZN6S509C53v77Ev,
  (VTBL_ENTRY)&_ZN6S509C53v78Ev,
  (VTBL_ENTRY)&_ZN6S509C53v79Ev,
  (VTBL_ENTRY)&_ZN6S509C53v80Ev,
  (VTBL_ENTRY)&_ZN6S509C53v81Ev,
  (VTBL_ENTRY)&_ZN6S509C53v82Ev,
  (VTBL_ENTRY)&_ZN6S509C53v83Ev,
  (VTBL_ENTRY)&_ZN6S509C53v84Ev,
  (VTBL_ENTRY)&_ZN6S509C53v85Ev,
  (VTBL_ENTRY)&_ZN6S509C53v86Ev,
};
extern VTBL_ENTRY _ZTI6S509C5[];
extern  VTBL_ENTRY _ZTV6S509C5[];
Class_Descriptor cd_S509C5 = {  "S509C5", // class name
  0,0,//no base classes
  &(vtc_S509C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S509C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S509C5),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  S509C4  : S509C5 {
  virtual  ~S509C4(); // _ZN6S509C4D1Ev
  virtual void  v87(); // _ZN6S509C43v87Ev
  virtual void  v88(); // _ZN6S509C43v88Ev
  S509C4(); // tgen
};
//SIG(-1 S509C4) 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}


 S509C4 ::~S509C4(){ note_dtor("S509C4", this);}
void  S509C4 ::v87(){vfunc_called(this, "_ZN6S509C43v87Ev");}
void  S509C4 ::v88(){vfunc_called(this, "_ZN6S509C43v88Ev");}
S509C4 ::S509C4(){ note_ctor("S509C4", this);} // tgen

static void Test_S509C4()
{
  extern Class_Descriptor cd_S509C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S509C4, buf);
    S509C4 *dp, &lv = *(dp=new (buf) S509C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S509C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S509C4)");
    check_base_class_offset(lv, (S509C5*), 0, "S509C4");
    test_class_info(&lv, &cd_S509C4);
    dp->~S509C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS509C4(Test_S509C4, "S509C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S509C4C1Ev();
extern void _ZN6S509C4D1Ev();
Name_Map name_map_S509C4[] = {
  NSPAIR(_ZN6S509C4C1Ev),
  NSPAIR(_ZN6S509C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S509C5;
extern VTBL_ENTRY _ZTI6S509C5[];
extern  VTBL_ENTRY _ZTV6S509C5[];
static Base_Class bases_S509C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S509C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S509C4[];
extern void _ZN6S509C4D1Ev();
extern void _ZN6S509C4D0Ev();
extern void _ZN6S509C53v23Ev();
extern void _ZN6S509C53v24Ev();
extern void _ZN6S509C53v25Ev();
extern void _ZN6S509C53v26Ev();
extern void _ZN6S509C53v27Ev();
extern void _ZN6S509C53v28Ev();
extern void _ZN6S509C53v29Ev();
extern void _ZN6S509C53v30Ev();
extern void _ZN6S509C53v31Ev();
extern void _ZN6S509C53v32Ev();
extern void _ZN6S509C53v33Ev();
extern void _ZN6S509C53v34Ev();
extern void _ZN6S509C53v35Ev();
extern void _ZN6S509C53v36Ev();
extern void _ZN6S509C53v37Ev();
extern void _ZN6S509C53v38Ev();
extern void _ZN6S509C53v39Ev();
extern void _ZN6S509C53v40Ev();
extern void _ZN6S509C53v41Ev();
extern void _ZN6S509C53v42Ev();
extern void _ZN6S509C53v43Ev();
extern void _ZN6S509C53v44Ev();
extern void _ZN6S509C53v45Ev();
extern void _ZN6S509C53v46Ev();
extern void _ZN6S509C53v47Ev();
extern void _ZN6S509C53v48Ev();
extern void _ZN6S509C53v49Ev();
extern void _ZN6S509C53v50Ev();
extern void _ZN6S509C53v51Ev();
extern void _ZN6S509C53v52Ev();
extern void _ZN6S509C53v53Ev();
extern void _ZN6S509C53v54Ev();
extern void _ZN6S509C53v55Ev();
extern void _ZN6S509C53v56Ev();
extern void _ZN6S509C53v57Ev();
extern void _ZN6S509C53v58Ev();
extern void _ZN6S509C53v59Ev();
extern void _ZN6S509C53v60Ev();
extern void _ZN6S509C53v61Ev();
extern void _ZN6S509C53v62Ev();
extern void _ZN6S509C53v63Ev();
extern void _ZN6S509C53v64Ev();
extern void _ZN6S509C53v65Ev();
extern void _ZN6S509C53v66Ev();
extern void _ZN6S509C53v67Ev();
extern void _ZN6S509C53v68Ev();
extern void _ZN6S509C53v69Ev();
extern void _ZN6S509C53v70Ev();
extern void _ZN6S509C53v71Ev();
extern void _ZN6S509C53v72Ev();
extern void _ZN6S509C53v73Ev();
extern void _ZN6S509C53v74Ev();
extern void _ZN6S509C53v75Ev();
extern void _ZN6S509C53v76Ev();
extern void _ZN6S509C53v77Ev();
extern void _ZN6S509C53v78Ev();
extern void _ZN6S509C53v79Ev();
extern void _ZN6S509C53v80Ev();
extern void _ZN6S509C53v81Ev();
extern void _ZN6S509C53v82Ev();
extern void _ZN6S509C53v83Ev();
extern void _ZN6S509C53v84Ev();
extern void _ZN6S509C53v85Ev();
extern void _ZN6S509C53v86Ev();
extern void _ZN6S509C43v87Ev();
extern void _ZN6S509C43v88Ev();
static  VTBL_ENTRY vtc_S509C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S509C4[0]),
  (VTBL_ENTRY)&_ZN6S509C4D1Ev,
  (VTBL_ENTRY)&_ZN6S509C4D0Ev,
  (VTBL_ENTRY)&_ZN6S509C53v23Ev,
  (VTBL_ENTRY)&_ZN6S509C53v24Ev,
  (VTBL_ENTRY)&_ZN6S509C53v25Ev,
  (VTBL_ENTRY)&_ZN6S509C53v26Ev,
  (VTBL_ENTRY)&_ZN6S509C53v27Ev,
  (VTBL_ENTRY)&_ZN6S509C53v28Ev,
  (VTBL_ENTRY)&_ZN6S509C53v29Ev,
  (VTBL_ENTRY)&_ZN6S509C53v30Ev,
  (VTBL_ENTRY)&_ZN6S509C53v31Ev,
  (VTBL_ENTRY)&_ZN6S509C53v32Ev,
  (VTBL_ENTRY)&_ZN6S509C53v33Ev,
  (VTBL_ENTRY)&_ZN6S509C53v34Ev,
  (VTBL_ENTRY)&_ZN6S509C53v35Ev,
  (VTBL_ENTRY)&_ZN6S509C53v36Ev,
  (VTBL_ENTRY)&_ZN6S509C53v37Ev,
  (VTBL_ENTRY)&_ZN6S509C53v38Ev,
  (VTBL_ENTRY)&_ZN6S509C53v39Ev,
  (VTBL_ENTRY)&_ZN6S509C53v40Ev,
  (VTBL_ENTRY)&_ZN6S509C53v41Ev,
  (VTBL_ENTRY)&_ZN6S509C53v42Ev,
  (VTBL_ENTRY)&_ZN6S509C53v43Ev,
  (VTBL_ENTRY)&_ZN6S509C53v44Ev,
  (VTBL_ENTRY)&_ZN6S509C53v45Ev,
  (VTBL_ENTRY)&_ZN6S509C53v46Ev,
  (VTBL_ENTRY)&_ZN6S509C53v47Ev,
  (VTBL_ENTRY)&_ZN6S509C53v48Ev,
  (VTBL_ENTRY)&_ZN6S509C53v49Ev,
  (VTBL_ENTRY)&_ZN6S509C53v50Ev,
  (VTBL_ENTRY)&_ZN6S509C53v51Ev,
  (VTBL_ENTRY)&_ZN6S509C53v52Ev,
  (VTBL_ENTRY)&_ZN6S509C53v53Ev,
  (VTBL_ENTRY)&_ZN6S509C53v54Ev,
  (VTBL_ENTRY)&_ZN6S509C53v55Ev,
  (VTBL_ENTRY)&_ZN6S509C53v56Ev,
  (VTBL_ENTRY)&_ZN6S509C53v57Ev,
  (VTBL_ENTRY)&_ZN6S509C53v58Ev,
  (VTBL_ENTRY)&_ZN6S509C53v59Ev,
  (VTBL_ENTRY)&_ZN6S509C53v60Ev,
  (VTBL_ENTRY)&_ZN6S509C53v61Ev,
  (VTBL_ENTRY)&_ZN6S509C53v62Ev,
  (VTBL_ENTRY)&_ZN6S509C53v63Ev,
  (VTBL_ENTRY)&_ZN6S509C53v64Ev,
  (VTBL_ENTRY)&_ZN6S509C53v65Ev,
  (VTBL_ENTRY)&_ZN6S509C53v66Ev,
  (VTBL_ENTRY)&_ZN6S509C53v67Ev,
  (VTBL_ENTRY)&_ZN6S509C53v68Ev,
  (VTBL_ENTRY)&_ZN6S509C53v69Ev,
  (VTBL_ENTRY)&_ZN6S509C53v70Ev,
  (VTBL_ENTRY)&_ZN6S509C53v71Ev,
  (VTBL_ENTRY)&_ZN6S509C53v72Ev,
  (VTBL_ENTRY)&_ZN6S509C53v73Ev,
  (VTBL_ENTRY)&_ZN6S509C53v74Ev,
  (VTBL_ENTRY)&_ZN6S509C53v75Ev,
  (VTBL_ENTRY)&_ZN6S509C53v76Ev,
  (VTBL_ENTRY)&_ZN6S509C53v77Ev,
  (VTBL_ENTRY)&_ZN6S509C53v78Ev,
  (VTBL_ENTRY)&_ZN6S509C53v79Ev,
  (VTBL_ENTRY)&_ZN6S509C53v80Ev,
  (VTBL_ENTRY)&_ZN6S509C53v81Ev,
  (VTBL_ENTRY)&_ZN6S509C53v82Ev,
  (VTBL_ENTRY)&_ZN6S509C53v83Ev,
  (VTBL_ENTRY)&_ZN6S509C53v84Ev,
  (VTBL_ENTRY)&_ZN6S509C53v85Ev,
  (VTBL_ENTRY)&_ZN6S509C53v86Ev,
  (VTBL_ENTRY)&_ZN6S509C43v87Ev,
  (VTBL_ENTRY)&_ZN6S509C43v88Ev,
};
extern VTBL_ENTRY _ZTI6S509C4[];
extern  VTBL_ENTRY _ZTV6S509C4[];
Class_Descriptor cd_S509C4 = {  "S509C4", // class name
  bases_S509C4, 1,
  &(vtc_S509C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S509C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S509C4),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  S509C3_nt  : S509C4 {
  char s509c3f0;
  ::S3214C22 s509c3f1;
  ::S23C10_nt s509c3f2;
  virtual  ~S509C3_nt(); // _ZN9S509C3_ntD1Ev
  virtual void  v89(); // _ZN9S509C3_nt3v89Ev
  virtual void  v90(); // _ZN9S509C3_nt3v90Ev
  virtual void  v91(); // _ZN9S509C3_nt3v91Ev
  virtual void  v92(); // _ZN9S509C3_nt3v92Ev
  virtual void  v93(); // _ZN9S509C3_nt3v93Ev
  virtual void  v94(); // _ZN9S509C3_nt3v94Ev
  virtual void  v95(); // _ZN9S509C3_nt3v95Ev
  virtual void  v96(); // _ZN9S509C3_nt3v96Ev
  virtual void  v97(); // _ZN9S509C3_nt3v97Ev
  virtual void  v98(); // _ZN9S509C3_nt3v98Ev
  virtual void  v99(); // _ZN9S509C3_nt3v99Ev
  virtual void  v100(); // _ZN9S509C3_nt4v100Ev
  S509C3_nt(); // tgen
};
//SIG(-1 S509C3_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}}


 S509C3_nt ::~S509C3_nt(){ note_dtor("S509C3_nt", this);}
void  S509C3_nt ::v89(){vfunc_called(this, "_ZN9S509C3_nt3v89Ev");}
void  S509C3_nt ::v90(){vfunc_called(this, "_ZN9S509C3_nt3v90Ev");}
void  S509C3_nt ::v91(){vfunc_called(this, "_ZN9S509C3_nt3v91Ev");}
void  S509C3_nt ::v92(){vfunc_called(this, "_ZN9S509C3_nt3v92Ev");}
void  S509C3_nt ::v93(){vfunc_called(this, "_ZN9S509C3_nt3v93Ev");}
void  S509C3_nt ::v94(){vfunc_called(this, "_ZN9S509C3_nt3v94Ev");}
void  S509C3_nt ::v95(){vfunc_called(this, "_ZN9S509C3_nt3v95Ev");}
void  S509C3_nt ::v96(){vfunc_called(this, "_ZN9S509C3_nt3v96Ev");}
void  S509C3_nt ::v97(){vfunc_called(this, "_ZN9S509C3_nt3v97Ev");}
void  S509C3_nt ::v98(){vfunc_called(this, "_ZN9S509C3_nt3v98Ev");}
void  S509C3_nt ::v99(){vfunc_called(this, "_ZN9S509C3_nt3v99Ev");}
void  S509C3_nt ::v100(){vfunc_called(this, "_ZN9S509C3_nt4v100Ev");}
S509C3_nt ::S509C3_nt(){ note_ctor("S509C3_nt", this);} // tgen

//skip512 S509C3_nt

#else // __cplusplus

extern void _ZN9S509C3_ntC1Ev();
extern void _ZN9S509C3_ntD1Ev();
Name_Map name_map_S509C3_nt[] = {
  NSPAIR(_ZN9S509C3_ntC1Ev),
  NSPAIR(_ZN9S509C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S509C5;
extern VTBL_ENTRY _ZTI6S509C5[];
extern  VTBL_ENTRY _ZTV6S509C5[];
extern Class_Descriptor cd_S509C4;
extern VTBL_ENTRY _ZTI6S509C4[];
extern  VTBL_ENTRY _ZTV6S509C4[];
static Base_Class bases_S509C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S509C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S509C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S509C3_nt[];
extern void _ZN9S509C3_ntD1Ev();
extern void _ZN9S509C3_ntD0Ev();
extern void _ZN6S509C53v23Ev();
extern void _ZN6S509C53v24Ev();
extern void _ZN6S509C53v25Ev();
extern void _ZN6S509C53v26Ev();
extern void _ZN6S509C53v27Ev();
extern void _ZN6S509C53v28Ev();
extern void _ZN6S509C53v29Ev();
extern void _ZN6S509C53v30Ev();
extern void _ZN6S509C53v31Ev();
extern void _ZN6S509C53v32Ev();
extern void _ZN6S509C53v33Ev();
extern void _ZN6S509C53v34Ev();
extern void _ZN6S509C53v35Ev();
extern void _ZN6S509C53v36Ev();
extern void _ZN6S509C53v37Ev();
extern void _ZN6S509C53v38Ev();
extern void _ZN6S509C53v39Ev();
extern void _ZN6S509C53v40Ev();
extern void _ZN6S509C53v41Ev();
extern void _ZN6S509C53v42Ev();
extern void _ZN6S509C53v43Ev();
extern void _ZN6S509C53v44Ev();
extern void _ZN6S509C53v45Ev();
extern void _ZN6S509C53v46Ev();
extern void _ZN6S509C53v47Ev();
extern void _ZN6S509C53v48Ev();
extern void _ZN6S509C53v49Ev();
extern void _ZN6S509C53v50Ev();
extern void _ZN6S509C53v51Ev();
extern void _ZN6S509C53v52Ev();
extern void _ZN6S509C53v53Ev();
extern void _ZN6S509C53v54Ev();
extern void _ZN6S509C53v55Ev();
extern void _ZN6S509C53v56Ev();
extern void _ZN6S509C53v57Ev();
extern void _ZN6S509C53v58Ev();
extern void _ZN6S509C53v59Ev();
extern void _ZN6S509C53v60Ev();
extern void _ZN6S509C53v61Ev();
extern void _ZN6S509C53v62Ev();
extern void _ZN6S509C53v63Ev();
extern void _ZN6S509C53v64Ev();
extern void _ZN6S509C53v65Ev();
extern void _ZN6S509C53v66Ev();
extern void _ZN6S509C53v67Ev();
extern void _ZN6S509C53v68Ev();
extern void _ZN6S509C53v69Ev();
extern void _ZN6S509C53v70Ev();
extern void _ZN6S509C53v71Ev();
extern void _ZN6S509C53v72Ev();
extern void _ZN6S509C53v73Ev();
extern void _ZN6S509C53v74Ev();
extern void _ZN6S509C53v75Ev();
extern void _ZN6S509C53v76Ev();
extern void _ZN6S509C53v77Ev();
extern void _ZN6S509C53v78Ev();
extern void _ZN6S509C53v79Ev();
extern void _ZN6S509C53v80Ev();
extern void _ZN6S509C53v81Ev();
extern void _ZN6S509C53v82Ev();
extern void _ZN6S509C53v83Ev();
extern void _ZN6S509C53v84Ev();
extern void _ZN6S509C53v85Ev();
extern void _ZN6S509C53v86Ev();
extern void _ZN6S509C43v87Ev();
extern void _ZN6S509C43v88Ev();
extern void _ZN9S509C3_nt3v89Ev();
extern void _ZN9S509C3_nt3v90Ev();
extern void _ZN9S509C3_nt3v91Ev();
extern void _ZN9S509C3_nt3v92Ev();
extern void _ZN9S509C3_nt3v93Ev();
extern void _ZN9S509C3_nt3v94Ev();
extern void _ZN9S509C3_nt3v95Ev();
extern void _ZN9S509C3_nt3v96Ev();
extern void _ZN9S509C3_nt3v97Ev();
extern void _ZN9S509C3_nt3v98Ev();
extern void _ZN9S509C3_nt3v99Ev();
extern void _ZN9S509C3_nt4v100Ev();
static  VTBL_ENTRY vtc_S509C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S509C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S509C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S509C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S509C53v23Ev,
  (VTBL_ENTRY)&_ZN6S509C53v24Ev,
  (VTBL_ENTRY)&_ZN6S509C53v25Ev,
  (VTBL_ENTRY)&_ZN6S509C53v26Ev,
  (VTBL_ENTRY)&_ZN6S509C53v27Ev,
  (VTBL_ENTRY)&_ZN6S509C53v28Ev,
  (VTBL_ENTRY)&_ZN6S509C53v29Ev,
  (VTBL_ENTRY)&_ZN6S509C53v30Ev,
  (VTBL_ENTRY)&_ZN6S509C53v31Ev,
  (VTBL_ENTRY)&_ZN6S509C53v32Ev,
  (VTBL_ENTRY)&_ZN6S509C53v33Ev,
  (VTBL_ENTRY)&_ZN6S509C53v34Ev,
  (VTBL_ENTRY)&_ZN6S509C53v35Ev,
  (VTBL_ENTRY)&_ZN6S509C53v36Ev,
  (VTBL_ENTRY)&_ZN6S509C53v37Ev,
  (VTBL_ENTRY)&_ZN6S509C53v38Ev,
  (VTBL_ENTRY)&_ZN6S509C53v39Ev,
  (VTBL_ENTRY)&_ZN6S509C53v40Ev,
  (VTBL_ENTRY)&_ZN6S509C53v41Ev,
  (VTBL_ENTRY)&_ZN6S509C53v42Ev,
  (VTBL_ENTRY)&_ZN6S509C53v43Ev,
  (VTBL_ENTRY)&_ZN6S509C53v44Ev,
  (VTBL_ENTRY)&_ZN6S509C53v45Ev,
  (VTBL_ENTRY)&_ZN6S509C53v46Ev,
  (VTBL_ENTRY)&_ZN6S509C53v47Ev,
  (VTBL_ENTRY)&_ZN6S509C53v48Ev,
  (VTBL_ENTRY)&_ZN6S509C53v49Ev,
  (VTBL_ENTRY)&_ZN6S509C53v50Ev,
  (VTBL_ENTRY)&_ZN6S509C53v51Ev,
  (VTBL_ENTRY)&_ZN6S509C53v52Ev,
  (VTBL_ENTRY)&_ZN6S509C53v53Ev,
  (VTBL_ENTRY)&_ZN6S509C53v54Ev,
  (VTBL_ENTRY)&_ZN6S509C53v55Ev,
  (VTBL_ENTRY)&_ZN6S509C53v56Ev,
  (VTBL_ENTRY)&_ZN6S509C53v57Ev,
  (VTBL_ENTRY)&_ZN6S509C53v58Ev,
  (VTBL_ENTRY)&_ZN6S509C53v59Ev,
  (VTBL_ENTRY)&_ZN6S509C53v60Ev,
  (VTBL_ENTRY)&_ZN6S509C53v61Ev,
  (VTBL_ENTRY)&_ZN6S509C53v62Ev,
  (VTBL_ENTRY)&_ZN6S509C53v63Ev,
  (VTBL_ENTRY)&_ZN6S509C53v64Ev,
  (VTBL_ENTRY)&_ZN6S509C53v65Ev,
  (VTBL_ENTRY)&_ZN6S509C53v66Ev,
  (VTBL_ENTRY)&_ZN6S509C53v67Ev,
  (VTBL_ENTRY)&_ZN6S509C53v68Ev,
  (VTBL_ENTRY)&_ZN6S509C53v69Ev,
  (VTBL_ENTRY)&_ZN6S509C53v70Ev,
  (VTBL_ENTRY)&_ZN6S509C53v71Ev,
  (VTBL_ENTRY)&_ZN6S509C53v72Ev,
  (VTBL_ENTRY)&_ZN6S509C53v73Ev,
  (VTBL_ENTRY)&_ZN6S509C53v74Ev,
  (VTBL_ENTRY)&_ZN6S509C53v75Ev,
  (VTBL_ENTRY)&_ZN6S509C53v76Ev,
  (VTBL_ENTRY)&_ZN6S509C53v77Ev,
  (VTBL_ENTRY)&_ZN6S509C53v78Ev,
  (VTBL_ENTRY)&_ZN6S509C53v79Ev,
  (VTBL_ENTRY)&_ZN6S509C53v80Ev,
  (VTBL_ENTRY)&_ZN6S509C53v81Ev,
  (VTBL_ENTRY)&_ZN6S509C53v82Ev,
  (VTBL_ENTRY)&_ZN6S509C53v83Ev,
  (VTBL_ENTRY)&_ZN6S509C53v84Ev,
  (VTBL_ENTRY)&_ZN6S509C53v85Ev,
  (VTBL_ENTRY)&_ZN6S509C53v86Ev,
  (VTBL_ENTRY)&_ZN6S509C43v87Ev,
  (VTBL_ENTRY)&_ZN6S509C43v88Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt4v100Ev,
};
extern VTBL_ENTRY _ZTI9S509C3_nt[];
VTBL_ENTRY *P__ZTI9S509C3_nt = _ZTI9S509C3_nt; 
extern  VTBL_ENTRY _ZTV9S509C3_nt[];
Class_Descriptor cd_S509C3_nt = {  "S509C3_nt", // class name
  bases_S509C3_nt, 2,
  &(vtc_S509C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI9S509C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S509C3_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  S509C2_nt  : S509C3_nt {
  ::S3214C4_nt s509c2f0;
  ::S3214C22 s509c2f1;
  ::S23C10_nt s509c2f2;
  virtual  ~S509C2_nt(); // _ZN9S509C2_ntD1Ev
  virtual void  v101(); // _ZN9S509C2_nt4v101Ev
  virtual void  v102(); // _ZN9S509C2_nt4v102Ev
  virtual void  v103(); // _ZN9S509C2_nt4v103Ev
  virtual void  v104(); // _ZN9S509C2_nt4v104Ev
  virtual void  v105(); // _ZN9S509C2_nt4v105Ev
  virtual void  v106(); // _ZN9S509C2_nt4v106Ev
  virtual void  v107(); // _ZN9S509C2_nt4v107Ev
  virtual void  v108(); // _ZN9S509C2_nt4v108Ev
  virtual void  v109(); // _ZN9S509C2_nt4v109Ev
  S509C2_nt(); // tgen
};
//SIG(-1 S509C2_nt) C1{ BC2{ BC3{ BC4{ vd 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 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v74 v75} vd v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 Fc FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC9{ m Fp FC5}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC5 FC6 FC9}


 S509C2_nt ::~S509C2_nt(){ note_dtor("S509C2_nt", this);}
void  S509C2_nt ::v101(){vfunc_called(this, "_ZN9S509C2_nt4v101Ev");}
void  S509C2_nt ::v102(){vfunc_called(this, "_ZN9S509C2_nt4v102Ev");}
void  S509C2_nt ::v103(){vfunc_called(this, "_ZN9S509C2_nt4v103Ev");}
void  S509C2_nt ::v104(){vfunc_called(this, "_ZN9S509C2_nt4v104Ev");}
void  S509C2_nt ::v105(){vfunc_called(this, "_ZN9S509C2_nt4v105Ev");}
void  S509C2_nt ::v106(){vfunc_called(this, "_ZN9S509C2_nt4v106Ev");}
void  S509C2_nt ::v107(){vfunc_called(this, "_ZN9S509C2_nt4v107Ev");}
void  S509C2_nt ::v108(){vfunc_called(this, "_ZN9S509C2_nt4v108Ev");}
void  S509C2_nt ::v109(){vfunc_called(this, "_ZN9S509C2_nt4v109Ev");}
S509C2_nt ::S509C2_nt(){ note_ctor("S509C2_nt", this);} // tgen

//skip512 S509C2_nt

#else // __cplusplus

extern void _ZN9S509C2_ntC1Ev();
extern void _ZN9S509C2_ntD1Ev();
Name_Map name_map_S509C2_nt[] = {
  NSPAIR(_ZN9S509C2_ntC1Ev),
  NSPAIR(_ZN9S509C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S509C5;
extern VTBL_ENTRY _ZTI6S509C5[];
extern  VTBL_ENTRY _ZTV6S509C5[];
extern Class_Descriptor cd_S509C4;
extern VTBL_ENTRY _ZTI6S509C4[];
extern  VTBL_ENTRY _ZTV6S509C4[];
extern Class_Descriptor cd_S509C3_nt;
extern VTBL_ENTRY _ZTI9S509C3_nt[];
extern  VTBL_ENTRY _ZTV9S509C3_nt[];
static Base_Class bases_S509C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S509C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S509C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S509C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S509C2_nt[];
extern void _ZN9S509C2_ntD1Ev();
extern void _ZN9S509C2_ntD0Ev();
extern void _ZN6S509C53v23Ev();
extern void _ZN6S509C53v24Ev();
extern void _ZN6S509C53v25Ev();
extern void _ZN6S509C53v26Ev();
extern void _ZN6S509C53v27Ev();
extern void _ZN6S509C53v28Ev();
extern void _ZN6S509C53v29Ev();
extern void _ZN6S509C53v30Ev();
extern void _ZN6S509C53v31Ev();
extern void _ZN6S509C53v32Ev();
extern void _ZN6S509C53v33Ev();
extern void _ZN6S509C53v34Ev();
extern void _ZN6S509C53v35Ev();
extern void _ZN6S509C53v36Ev();
extern void _ZN6S509C53v37Ev();
extern void _ZN6S509C53v38Ev();
extern void _ZN6S509C53v39Ev();
extern void _ZN6S509C53v40Ev();
extern void _ZN6S509C53v41Ev();
extern void _ZN6S509C53v42Ev();
extern void _ZN6S509C53v43Ev();
extern void _ZN6S509C53v44Ev();
extern void _ZN6S509C53v45Ev();
extern void _ZN6S509C53v46Ev();
extern void _ZN6S509C53v47Ev();
extern void _ZN6S509C53v48Ev();
extern void _ZN6S509C53v49Ev();
extern void _ZN6S509C53v50Ev();
extern void _ZN6S509C53v51Ev();
extern void _ZN6S509C53v52Ev();
extern void _ZN6S509C53v53Ev();
extern void _ZN6S509C53v54Ev();
extern void _ZN6S509C53v55Ev();
extern void _ZN6S509C53v56Ev();
extern void _ZN6S509C53v57Ev();
extern void _ZN6S509C53v58Ev();
extern void _ZN6S509C53v59Ev();
extern void _ZN6S509C53v60Ev();
extern void _ZN6S509C53v61Ev();
extern void _ZN6S509C53v62Ev();
extern void _ZN6S509C53v63Ev();
extern void _ZN6S509C53v64Ev();
extern void _ZN6S509C53v65Ev();
extern void _ZN6S509C53v66Ev();
extern void _ZN6S509C53v67Ev();
extern void _ZN6S509C53v68Ev();
extern void _ZN6S509C53v69Ev();
extern void _ZN6S509C53v70Ev();
extern void _ZN6S509C53v71Ev();
extern void _ZN6S509C53v72Ev();
extern void _ZN6S509C53v73Ev();
extern void _ZN6S509C53v74Ev();
extern void _ZN6S509C53v75Ev();
extern void _ZN6S509C53v76Ev();
extern void _ZN6S509C53v77Ev();
extern void _ZN6S509C53v78Ev();
extern void _ZN6S509C53v79Ev();
extern void _ZN6S509C53v80Ev();
extern void _ZN6S509C53v81Ev();
extern void _ZN6S509C53v82Ev();
extern void _ZN6S509C53v83Ev();
extern void _ZN6S509C53v84Ev();
extern void _ZN6S509C53v85Ev();
extern void _ZN6S509C53v86Ev();
extern void _ZN6S509C43v87Ev();
extern void _ZN6S509C43v88Ev();
extern void _ZN9S509C3_nt3v89Ev();
extern void _ZN9S509C3_nt3v90Ev();
extern void _ZN9S509C3_nt3v91Ev();
extern void _ZN9S509C3_nt3v92Ev();
extern void _ZN9S509C3_nt3v93Ev();
extern void _ZN9S509C3_nt3v94Ev();
extern void _ZN9S509C3_nt3v95Ev();
extern void _ZN9S509C3_nt3v96Ev();
extern void _ZN9S509C3_nt3v97Ev();
extern void _ZN9S509C3_nt3v98Ev();
extern void _ZN9S509C3_nt3v99Ev();
extern void _ZN9S509C3_nt4v100Ev();
extern void _ZN9S509C2_nt4v101Ev();
extern void _ZN9S509C2_nt4v102Ev();
extern void _ZN9S509C2_nt4v103Ev();
extern void _ZN9S509C2_nt4v104Ev();
extern void _ZN9S509C2_nt4v105Ev();
extern void _ZN9S509C2_nt4v106Ev();
extern void _ZN9S509C2_nt4v107Ev();
extern void _ZN9S509C2_nt4v108Ev();
extern void _ZN9S509C2_nt4v109Ev();
static  VTBL_ENTRY vtc_S509C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S509C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S509C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S509C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S509C53v23Ev,
  (VTBL_ENTRY)&_ZN6S509C53v24Ev,
  (VTBL_ENTRY)&_ZN6S509C53v25Ev,
  (VTBL_ENTRY)&_ZN6S509C53v26Ev,
  (VTBL_ENTRY)&_ZN6S509C53v27Ev,
  (VTBL_ENTRY)&_ZN6S509C53v28Ev,
  (VTBL_ENTRY)&_ZN6S509C53v29Ev,
  (VTBL_ENTRY)&_ZN6S509C53v30Ev,
  (VTBL_ENTRY)&_ZN6S509C53v31Ev,
  (VTBL_ENTRY)&_ZN6S509C53v32Ev,
  (VTBL_ENTRY)&_ZN6S509C53v33Ev,
  (VTBL_ENTRY)&_ZN6S509C53v34Ev,
  (VTBL_ENTRY)&_ZN6S509C53v35Ev,
  (VTBL_ENTRY)&_ZN6S509C53v36Ev,
  (VTBL_ENTRY)&_ZN6S509C53v37Ev,
  (VTBL_ENTRY)&_ZN6S509C53v38Ev,
  (VTBL_ENTRY)&_ZN6S509C53v39Ev,
  (VTBL_ENTRY)&_ZN6S509C53v40Ev,
  (VTBL_ENTRY)&_ZN6S509C53v41Ev,
  (VTBL_ENTRY)&_ZN6S509C53v42Ev,
  (VTBL_ENTRY)&_ZN6S509C53v43Ev,
  (VTBL_ENTRY)&_ZN6S509C53v44Ev,
  (VTBL_ENTRY)&_ZN6S509C53v45Ev,
  (VTBL_ENTRY)&_ZN6S509C53v46Ev,
  (VTBL_ENTRY)&_ZN6S509C53v47Ev,
  (VTBL_ENTRY)&_ZN6S509C53v48Ev,
  (VTBL_ENTRY)&_ZN6S509C53v49Ev,
  (VTBL_ENTRY)&_ZN6S509C53v50Ev,
  (VTBL_ENTRY)&_ZN6S509C53v51Ev,
  (VTBL_ENTRY)&_ZN6S509C53v52Ev,
  (VTBL_ENTRY)&_ZN6S509C53v53Ev,
  (VTBL_ENTRY)&_ZN6S509C53v54Ev,
  (VTBL_ENTRY)&_ZN6S509C53v55Ev,
  (VTBL_ENTRY)&_ZN6S509C53v56Ev,
  (VTBL_ENTRY)&_ZN6S509C53v57Ev,
  (VTBL_ENTRY)&_ZN6S509C53v58Ev,
  (VTBL_ENTRY)&_ZN6S509C53v59Ev,
  (VTBL_ENTRY)&_ZN6S509C53v60Ev,
  (VTBL_ENTRY)&_ZN6S509C53v61Ev,
  (VTBL_ENTRY)&_ZN6S509C53v62Ev,
  (VTBL_ENTRY)&_ZN6S509C53v63Ev,
  (VTBL_ENTRY)&_ZN6S509C53v64Ev,
  (VTBL_ENTRY)&_ZN6S509C53v65Ev,
  (VTBL_ENTRY)&_ZN6S509C53v66Ev,
  (VTBL_ENTRY)&_ZN6S509C53v67Ev,
  (VTBL_ENTRY)&_ZN6S509C53v68Ev,
  (VTBL_ENTRY)&_ZN6S509C53v69Ev,
  (VTBL_ENTRY)&_ZN6S509C53v70Ev,
  (VTBL_ENTRY)&_ZN6S509C53v71Ev,
  (VTBL_ENTRY)&_ZN6S509C53v72Ev,
  (VTBL_ENTRY)&_ZN6S509C53v73Ev,
  (VTBL_ENTRY)&_ZN6S509C53v74Ev,
  (VTBL_ENTRY)&_ZN6S509C53v75Ev,
  (VTBL_ENTRY)&_ZN6S509C53v76Ev,
  (VTBL_ENTRY)&_ZN6S509C53v77Ev,
  (VTBL_ENTRY)&_ZN6S509C53v78Ev,
  (VTBL_ENTRY)&_ZN6S509C53v79Ev,
  (VTBL_ENTRY)&_ZN6S509C53v80Ev,
  (VTBL_ENTRY)&_ZN6S509C53v81Ev,
  (VTBL_ENTRY)&_ZN6S509C53v82Ev,
  (VTBL_ENTRY)&_ZN6S509C53v83Ev,
  (VTBL_ENTRY)&_ZN6S509C53v84Ev,
  (VTBL_ENTRY)&_ZN6S509C53v85Ev,
  (VTBL_ENTRY)&_ZN6S509C53v86Ev,
  (VTBL_ENTRY)&_ZN6S509C43v87Ev,
  (VTBL_ENTRY)&_ZN6S509C43v88Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v109Ev,
};
extern VTBL_ENTRY _ZTI9S509C2_nt[];
VTBL_ENTRY *P__ZTI9S509C2_nt = _ZTI9S509C2_nt; 
extern  VTBL_ENTRY _ZTV9S509C2_nt[];
Class_Descriptor cd_S509C2_nt = {  "S509C2_nt", // class name
  bases_S509C2_nt, 3,
  &(vtc_S509C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,120), // object size
  NSPAIRA(_ZTI9S509C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S509C2_nt),91, //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  S509C11_nt  {
  virtual  ~S509C11_nt(); // _ZN10S509C11_ntD1Ev
  virtual void  v110(); // _ZN10S509C11_nt4v110Ev
  virtual void  v111(); // _ZN10S509C11_nt4v111Ev
  virtual void  v112(); // _ZN10S509C11_nt4v112Ev
  virtual void  v113(); // _ZN10S509C11_nt4v113Ev
  virtual void  v114(); // _ZN10S509C11_nt4v114Ev
  virtual void  v115(); // _ZN10S509C11_nt4v115Ev
  virtual void  v116(); // _ZN10S509C11_nt4v116Ev
  virtual void  v117(); // _ZN10S509C11_nt4v117Ev
  S509C11_nt(); // tgen
};
//SIG(-1 S509C11_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8}


 S509C11_nt ::~S509C11_nt(){ note_dtor("S509C11_nt", this);}
void  S509C11_nt ::v110(){vfunc_called(this, "_ZN10S509C11_nt4v110Ev");}
void  S509C11_nt ::v111(){vfunc_called(this, "_ZN10S509C11_nt4v111Ev");}
void  S509C11_nt ::v112(){vfunc_called(this, "_ZN10S509C11_nt4v112Ev");}
void  S509C11_nt ::v113(){vfunc_called(this, "_ZN10S509C11_nt4v113Ev");}
void  S509C11_nt ::v114(){vfunc_called(this, "_ZN10S509C11_nt4v114Ev");}
void  S509C11_nt ::v115(){vfunc_called(this, "_ZN10S509C11_nt4v115Ev");}
void  S509C11_nt ::v116(){vfunc_called(this, "_ZN10S509C11_nt4v116Ev");}
void  S509C11_nt ::v117(){vfunc_called(this, "_ZN10S509C11_nt4v117Ev");}
S509C11_nt ::S509C11_nt(){ note_ctor("S509C11_nt", this);} // tgen

//skip512 S509C11_nt

#else // __cplusplus

extern void _ZN10S509C11_ntC1Ev();
extern void _ZN10S509C11_ntD1Ev();
Name_Map name_map_S509C11_nt[] = {
  NSPAIR(_ZN10S509C11_ntC1Ev),
  NSPAIR(_ZN10S509C11_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S509C11_nt[];
extern void _ZN10S509C11_ntD1Ev();
extern void _ZN10S509C11_ntD0Ev();
extern void _ZN10S509C11_nt4v110Ev();
extern void _ZN10S509C11_nt4v111Ev();
extern void _ZN10S509C11_nt4v112Ev();
extern void _ZN10S509C11_nt4v113Ev();
extern void _ZN10S509C11_nt4v114Ev();
extern void _ZN10S509C11_nt4v115Ev();
extern void _ZN10S509C11_nt4v116Ev();
extern void _ZN10S509C11_nt4v117Ev();
static  VTBL_ENTRY vtc_S509C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S509C11_nt[0]),
  (VTBL_ENTRY)&_ZN10S509C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S509C11_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v117Ev,
};
extern VTBL_ENTRY _ZTI10S509C11_nt[];
VTBL_ENTRY *P__ZTI10S509C11_nt = _ZTI10S509C11_nt; 
extern  VTBL_ENTRY _ZTV10S509C11_nt[];
Class_Descriptor cd_S509C11_nt = {  "S509C11_nt", // class name
  0,0,//no base classes
  &(vtc_S509C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S509C11_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S509C11_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  S509C1  : S509C2_nt , S509C11_nt {
  ::S23C16_nt s509c1f0;
  ::S3214C17 s509c1f1;
  ::S3214C11 s509c1f2;
  ::S3214C21_nt s509c1f3;
  ::S3214C21_nt s509c1f4;
  ::S3214C21_nt s509c1f5;
  virtual  ~S509C1(); // _ZN6S509C1D1Ev
  virtual void  v1(); // _ZN6S509C12v1Ev
  virtual void  v2(); // _ZN6S509C12v2Ev
  virtual void  v3(); // _ZN6S509C12v3Ev
  virtual void  v4(); // _ZN6S509C12v4Ev
  virtual void  v5(); // _ZN6S509C12v5Ev
  virtual void  v6(); // _ZN6S509C12v6Ev
  virtual void  v7(); // _ZN6S509C12v7Ev
  virtual void  v8(); // _ZN6S509C12v8Ev
  virtual void  v9(); // _ZN6S509C12v9Ev
  virtual void  v10(); // _ZN6S509C13v10Ev
  virtual void  v11(); // _ZN6S509C13v11Ev
  virtual void  v12(); // _ZN6S509C13v12Ev
  virtual void  v13(); // _ZN6S509C13v13Ev
  virtual void  v14(); // _ZN6S509C13v14Ev
  virtual void  v15(); // _ZN6S509C13v15Ev
  virtual void  v16(); // _ZN6S509C13v16Ev
  virtual void  v17(); // _ZN6S509C13v17Ev
  virtual void  v18(); // _ZN6S509C13v18Ev
  virtual void  v19(); // _ZN6S509C13v19Ev
  virtual void  v20(); // _ZN6S509C13v20Ev
  virtual void  v21(); // _ZN6S509C13v21Ev
  virtual void  v22(); // _ZN6S509C13v22Ev
  S509C1(); // tgen
};
//SIG(1 S509C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v87 v88} vd v89 v90 v91 v92 v93 v94 v95 v96 v97 v98 v99 v100 Fc FC7{ BC8{ BC9{ m Fp Fi[2]}}} FC10{ m Fp FC6}} vd v101 v102 v103 v104 v105 v106 v107 v108 v109 FC6 FC7 FC10} BC11{ vd v110 v111 v112 v113 v114 v115 v116 v117} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 FC12{ BC13{ m FC8 Fp Fi}} FC14{ BC15{ BC9}} FC16{ BC17{ BC9}} FC18{ BC7} FC18 FC18}


 S509C1 ::~S509C1(){ note_dtor("S509C1", this);}
void  S509C1 ::v1(){vfunc_called(this, "_ZN6S509C12v1Ev");}
void  S509C1 ::v2(){vfunc_called(this, "_ZN6S509C12v2Ev");}
void  S509C1 ::v3(){vfunc_called(this, "_ZN6S509C12v3Ev");}
void  S509C1 ::v4(){vfunc_called(this, "_ZN6S509C12v4Ev");}
void  S509C1 ::v5(){vfunc_called(this, "_ZN6S509C12v5Ev");}
void  S509C1 ::v6(){vfunc_called(this, "_ZN6S509C12v6Ev");}
void  S509C1 ::v7(){vfunc_called(this, "_ZN6S509C12v7Ev");}
void  S509C1 ::v8(){vfunc_called(this, "_ZN6S509C12v8Ev");}
void  S509C1 ::v9(){vfunc_called(this, "_ZN6S509C12v9Ev");}
void  S509C1 ::v10(){vfunc_called(this, "_ZN6S509C13v10Ev");}
void  S509C1 ::v11(){vfunc_called(this, "_ZN6S509C13v11Ev");}
void  S509C1 ::v12(){vfunc_called(this, "_ZN6S509C13v12Ev");}
void  S509C1 ::v13(){vfunc_called(this, "_ZN6S509C13v13Ev");}
void  S509C1 ::v14(){vfunc_called(this, "_ZN6S509C13v14Ev");}
void  S509C1 ::v15(){vfunc_called(this, "_ZN6S509C13v15Ev");}
void  S509C1 ::v16(){vfunc_called(this, "_ZN6S509C13v16Ev");}
void  S509C1 ::v17(){vfunc_called(this, "_ZN6S509C13v17Ev");}
void  S509C1 ::v18(){vfunc_called(this, "_ZN6S509C13v18Ev");}
void  S509C1 ::v19(){vfunc_called(this, "_ZN6S509C13v19Ev");}
void  S509C1 ::v20(){vfunc_called(this, "_ZN6S509C13v20Ev");}
void  S509C1 ::v21(){vfunc_called(this, "_ZN6S509C13v21Ev");}
void  S509C1 ::v22(){vfunc_called(this, "_ZN6S509C13v22Ev");}
S509C1 ::S509C1(){ note_ctor("S509C1", this);} // tgen

static void Test_S509C1()
{
  extern Class_Descriptor cd_S509C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(38,52)];
    init_test(&cd_S509C1, buf);
    S509C1 *dp, &lv = *(dp=new (buf) S509C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(296,204), "sizeof(S509C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S509C1)");
    check_base_class_offset(lv, (S509C5*)(S509C4*)(S509C3_nt*)(S509C2_nt*), 0, "S509C1");
    check_base_class_offset(lv, (S509C4*)(S509C3_nt*)(S509C2_nt*), 0, "S509C1");
    check_base_class_offset(lv, (S509C3_nt*)(S509C2_nt*), 0, "S509C1");
    check_base_class_offset(lv, (S509C2_nt*), 0, "S509C1");
    check_base_class_offset(lv, (S509C11_nt*), ABISELECT(176,120), "S509C1");
    check_field_offset(lv, s509c1f0, ABISELECT(184,124), "S509C1.s509c1f0");
    check_field_offset(lv, s509c1f1, ABISELECT(216,144), "S509C1.s509c1f1");
    check_field_offset(lv, s509c1f2, ABISELECT(232,156), "S509C1.s509c1f2");
    check_field_offset(lv, s509c1f3, ABISELECT(248,168), "S509C1.s509c1f3");
    check_field_offset(lv, s509c1f4, ABISELECT(264,180), "S509C1.s509c1f4");
    check_field_offset(lv, s509c1f5, ABISELECT(280,192), "S509C1.s509c1f5");
    test_class_info(&lv, &cd_S509C1);
    dp->~S509C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS509C1(Test_S509C1, "S509C1", ABISELECT(296,204));

#else // __cplusplus

extern void _ZN6S509C1C1Ev();
extern void _ZN6S509C1D1Ev();
Name_Map name_map_S509C1[] = {
  NSPAIR(_ZN6S509C1C1Ev),
  NSPAIR(_ZN6S509C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S509C5;
extern VTBL_ENTRY _ZTI6S509C5[];
extern  VTBL_ENTRY _ZTV6S509C5[];
extern Class_Descriptor cd_S509C4;
extern VTBL_ENTRY _ZTI6S509C4[];
extern  VTBL_ENTRY _ZTV6S509C4[];
extern Class_Descriptor cd_S509C3_nt;
extern VTBL_ENTRY _ZTI9S509C3_nt[];
extern  VTBL_ENTRY _ZTV9S509C3_nt[];
extern Class_Descriptor cd_S509C2_nt;
extern VTBL_ENTRY _ZTI9S509C2_nt[];
extern  VTBL_ENTRY _ZTV9S509C2_nt[];
extern Class_Descriptor cd_S509C11_nt;
extern VTBL_ENTRY _ZTI10S509C11_nt[];
extern  VTBL_ENTRY _ZTV10S509C11_nt[];
static Base_Class bases_S509C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S509C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S509C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S509C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S509C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S509C11_nt,    ABISELECT(176,120), //bcp->offset
    113, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S509C1[];
extern void _ZN6S509C1D1Ev();
extern void _ZN6S509C1D0Ev();
extern void _ZN6S509C53v23Ev();
extern void _ZN6S509C53v24Ev();
extern void _ZN6S509C53v25Ev();
extern void _ZN6S509C53v26Ev();
extern void _ZN6S509C53v27Ev();
extern void _ZN6S509C53v28Ev();
extern void _ZN6S509C53v29Ev();
extern void _ZN6S509C53v30Ev();
extern void _ZN6S509C53v31Ev();
extern void _ZN6S509C53v32Ev();
extern void _ZN6S509C53v33Ev();
extern void _ZN6S509C53v34Ev();
extern void _ZN6S509C53v35Ev();
extern void _ZN6S509C53v36Ev();
extern void _ZN6S509C53v37Ev();
extern void _ZN6S509C53v38Ev();
extern void _ZN6S509C53v39Ev();
extern void _ZN6S509C53v40Ev();
extern void _ZN6S509C53v41Ev();
extern void _ZN6S509C53v42Ev();
extern void _ZN6S509C53v43Ev();
extern void _ZN6S509C53v44Ev();
extern void _ZN6S509C53v45Ev();
extern void _ZN6S509C53v46Ev();
extern void _ZN6S509C53v47Ev();
extern void _ZN6S509C53v48Ev();
extern void _ZN6S509C53v49Ev();
extern void _ZN6S509C53v50Ev();
extern void _ZN6S509C53v51Ev();
extern void _ZN6S509C53v52Ev();
extern void _ZN6S509C53v53Ev();
extern void _ZN6S509C53v54Ev();
extern void _ZN6S509C53v55Ev();
extern void _ZN6S509C53v56Ev();
extern void _ZN6S509C53v57Ev();
extern void _ZN6S509C53v58Ev();
extern void _ZN6S509C53v59Ev();
extern void _ZN6S509C53v60Ev();
extern void _ZN6S509C53v61Ev();
extern void _ZN6S509C53v62Ev();
extern void _ZN6S509C53v63Ev();
extern void _ZN6S509C53v64Ev();
extern void _ZN6S509C53v65Ev();
extern void _ZN6S509C53v66Ev();
extern void _ZN6S509C53v67Ev();
extern void _ZN6S509C53v68Ev();
extern void _ZN6S509C53v69Ev();
extern void _ZN6S509C53v70Ev();
extern void _ZN6S509C53v71Ev();
extern void _ZN6S509C53v72Ev();
extern void _ZN6S509C53v73Ev();
extern void _ZN6S509C53v74Ev();
extern void _ZN6S509C53v75Ev();
extern void _ZN6S509C53v76Ev();
extern void _ZN6S509C53v77Ev();
extern void _ZN6S509C53v78Ev();
extern void _ZN6S509C53v79Ev();
extern void _ZN6S509C53v80Ev();
extern void _ZN6S509C53v81Ev();
extern void _ZN6S509C53v82Ev();
extern void _ZN6S509C53v83Ev();
extern void _ZN6S509C53v84Ev();
extern void _ZN6S509C53v85Ev();
extern void _ZN6S509C53v86Ev();
extern void _ZN6S509C43v87Ev();
extern void _ZN6S509C43v88Ev();
extern void _ZN9S509C3_nt3v89Ev();
extern void _ZN9S509C3_nt3v90Ev();
extern void _ZN9S509C3_nt3v91Ev();
extern void _ZN9S509C3_nt3v92Ev();
extern void _ZN9S509C3_nt3v93Ev();
extern void _ZN9S509C3_nt3v94Ev();
extern void _ZN9S509C3_nt3v95Ev();
extern void _ZN9S509C3_nt3v96Ev();
extern void _ZN9S509C3_nt3v97Ev();
extern void _ZN9S509C3_nt3v98Ev();
extern void _ZN9S509C3_nt3v99Ev();
extern void _ZN9S509C3_nt4v100Ev();
extern void _ZN9S509C2_nt4v101Ev();
extern void _ZN9S509C2_nt4v102Ev();
extern void _ZN9S509C2_nt4v103Ev();
extern void _ZN9S509C2_nt4v104Ev();
extern void _ZN9S509C2_nt4v105Ev();
extern void _ZN9S509C2_nt4v106Ev();
extern void _ZN9S509C2_nt4v107Ev();
extern void _ZN9S509C2_nt4v108Ev();
extern void _ZN9S509C2_nt4v109Ev();
extern void _ZN6S509C12v1Ev();
extern void _ZN6S509C12v2Ev();
extern void _ZN6S509C12v3Ev();
extern void _ZN6S509C12v4Ev();
extern void _ZN6S509C12v5Ev();
extern void _ZN6S509C12v6Ev();
extern void _ZN6S509C12v7Ev();
extern void _ZN6S509C12v8Ev();
extern void _ZN6S509C12v9Ev();
extern void _ZN6S509C13v10Ev();
extern void _ZN6S509C13v11Ev();
extern void _ZN6S509C13v12Ev();
extern void _ZN6S509C13v13Ev();
extern void _ZN6S509C13v14Ev();
extern void _ZN6S509C13v15Ev();
extern void _ZN6S509C13v16Ev();
extern void _ZN6S509C13v17Ev();
extern void _ZN6S509C13v18Ev();
extern void _ZN6S509C13v19Ev();
extern void _ZN6S509C13v20Ev();
extern void _ZN6S509C13v21Ev();
extern void _ZN6S509C13v22Ev();
extern void ABISELECT(_ZThn176_N6S509C1D1Ev,_ZThn120_N6S509C1D1Ev)();
extern void ABISELECT(_ZThn176_N6S509C1D0Ev,_ZThn120_N6S509C1D0Ev)();
extern void _ZN10S509C11_nt4v110Ev();
extern void _ZN10S509C11_nt4v111Ev();
extern void _ZN10S509C11_nt4v112Ev();
extern void _ZN10S509C11_nt4v113Ev();
extern void _ZN10S509C11_nt4v114Ev();
extern void _ZN10S509C11_nt4v115Ev();
extern void _ZN10S509C11_nt4v116Ev();
extern void _ZN10S509C11_nt4v117Ev();
static  VTBL_ENTRY vtc_S509C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S509C1[0]),
  (VTBL_ENTRY)&_ZN6S509C1D1Ev,
  (VTBL_ENTRY)&_ZN6S509C1D0Ev,
  (VTBL_ENTRY)&_ZN6S509C53v23Ev,
  (VTBL_ENTRY)&_ZN6S509C53v24Ev,
  (VTBL_ENTRY)&_ZN6S509C53v25Ev,
  (VTBL_ENTRY)&_ZN6S509C53v26Ev,
  (VTBL_ENTRY)&_ZN6S509C53v27Ev,
  (VTBL_ENTRY)&_ZN6S509C53v28Ev,
  (VTBL_ENTRY)&_ZN6S509C53v29Ev,
  (VTBL_ENTRY)&_ZN6S509C53v30Ev,
  (VTBL_ENTRY)&_ZN6S509C53v31Ev,
  (VTBL_ENTRY)&_ZN6S509C53v32Ev,
  (VTBL_ENTRY)&_ZN6S509C53v33Ev,
  (VTBL_ENTRY)&_ZN6S509C53v34Ev,
  (VTBL_ENTRY)&_ZN6S509C53v35Ev,
  (VTBL_ENTRY)&_ZN6S509C53v36Ev,
  (VTBL_ENTRY)&_ZN6S509C53v37Ev,
  (VTBL_ENTRY)&_ZN6S509C53v38Ev,
  (VTBL_ENTRY)&_ZN6S509C53v39Ev,
  (VTBL_ENTRY)&_ZN6S509C53v40Ev,
  (VTBL_ENTRY)&_ZN6S509C53v41Ev,
  (VTBL_ENTRY)&_ZN6S509C53v42Ev,
  (VTBL_ENTRY)&_ZN6S509C53v43Ev,
  (VTBL_ENTRY)&_ZN6S509C53v44Ev,
  (VTBL_ENTRY)&_ZN6S509C53v45Ev,
  (VTBL_ENTRY)&_ZN6S509C53v46Ev,
  (VTBL_ENTRY)&_ZN6S509C53v47Ev,
  (VTBL_ENTRY)&_ZN6S509C53v48Ev,
  (VTBL_ENTRY)&_ZN6S509C53v49Ev,
  (VTBL_ENTRY)&_ZN6S509C53v50Ev,
  (VTBL_ENTRY)&_ZN6S509C53v51Ev,
  (VTBL_ENTRY)&_ZN6S509C53v52Ev,
  (VTBL_ENTRY)&_ZN6S509C53v53Ev,
  (VTBL_ENTRY)&_ZN6S509C53v54Ev,
  (VTBL_ENTRY)&_ZN6S509C53v55Ev,
  (VTBL_ENTRY)&_ZN6S509C53v56Ev,
  (VTBL_ENTRY)&_ZN6S509C53v57Ev,
  (VTBL_ENTRY)&_ZN6S509C53v58Ev,
  (VTBL_ENTRY)&_ZN6S509C53v59Ev,
  (VTBL_ENTRY)&_ZN6S509C53v60Ev,
  (VTBL_ENTRY)&_ZN6S509C53v61Ev,
  (VTBL_ENTRY)&_ZN6S509C53v62Ev,
  (VTBL_ENTRY)&_ZN6S509C53v63Ev,
  (VTBL_ENTRY)&_ZN6S509C53v64Ev,
  (VTBL_ENTRY)&_ZN6S509C53v65Ev,
  (VTBL_ENTRY)&_ZN6S509C53v66Ev,
  (VTBL_ENTRY)&_ZN6S509C53v67Ev,
  (VTBL_ENTRY)&_ZN6S509C53v68Ev,
  (VTBL_ENTRY)&_ZN6S509C53v69Ev,
  (VTBL_ENTRY)&_ZN6S509C53v70Ev,
  (VTBL_ENTRY)&_ZN6S509C53v71Ev,
  (VTBL_ENTRY)&_ZN6S509C53v72Ev,
  (VTBL_ENTRY)&_ZN6S509C53v73Ev,
  (VTBL_ENTRY)&_ZN6S509C53v74Ev,
  (VTBL_ENTRY)&_ZN6S509C53v75Ev,
  (VTBL_ENTRY)&_ZN6S509C53v76Ev,
  (VTBL_ENTRY)&_ZN6S509C53v77Ev,
  (VTBL_ENTRY)&_ZN6S509C53v78Ev,
  (VTBL_ENTRY)&_ZN6S509C53v79Ev,
  (VTBL_ENTRY)&_ZN6S509C53v80Ev,
  (VTBL_ENTRY)&_ZN6S509C53v81Ev,
  (VTBL_ENTRY)&_ZN6S509C53v82Ev,
  (VTBL_ENTRY)&_ZN6S509C53v83Ev,
  (VTBL_ENTRY)&_ZN6S509C53v84Ev,
  (VTBL_ENTRY)&_ZN6S509C53v85Ev,
  (VTBL_ENTRY)&_ZN6S509C53v86Ev,
  (VTBL_ENTRY)&_ZN6S509C43v87Ev,
  (VTBL_ENTRY)&_ZN6S509C43v88Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S509C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S509C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN6S509C12v1Ev,
  (VTBL_ENTRY)&_ZN6S509C12v2Ev,
  (VTBL_ENTRY)&_ZN6S509C12v3Ev,
  (VTBL_ENTRY)&_ZN6S509C12v4Ev,
  (VTBL_ENTRY)&_ZN6S509C12v5Ev,
  (VTBL_ENTRY)&_ZN6S509C12v6Ev,
  (VTBL_ENTRY)&_ZN6S509C12v7Ev,
  (VTBL_ENTRY)&_ZN6S509C12v8Ev,
  (VTBL_ENTRY)&_ZN6S509C12v9Ev,
  (VTBL_ENTRY)&_ZN6S509C13v10Ev,
  (VTBL_ENTRY)&_ZN6S509C13v11Ev,
  (VTBL_ENTRY)&_ZN6S509C13v12Ev,
  (VTBL_ENTRY)&_ZN6S509C13v13Ev,
  (VTBL_ENTRY)&_ZN6S509C13v14Ev,
  (VTBL_ENTRY)&_ZN6S509C13v15Ev,
  (VTBL_ENTRY)&_ZN6S509C13v16Ev,
  (VTBL_ENTRY)&_ZN6S509C13v17Ev,
  (VTBL_ENTRY)&_ZN6S509C13v18Ev,
  (VTBL_ENTRY)&_ZN6S509C13v19Ev,
  (VTBL_ENTRY)&_ZN6S509C13v20Ev,
  (VTBL_ENTRY)&_ZN6S509C13v21Ev,
  (VTBL_ENTRY)&_ZN6S509C13v22Ev,
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI6S509C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N6S509C1D1Ev,_ZThn120_N6S509C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N6S509C1D0Ev,_ZThn120_N6S509C1D0Ev),
  (VTBL_ENTRY)&_ZN10S509C11_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S509C11_nt4v117Ev,
};
extern VTBL_ENTRY _ZTI6S509C1[];
extern  VTBL_ENTRY _ZTV6S509C1[];
Class_Descriptor cd_S509C1 = {  "S509C1", // class name
  bases_S509C1, 5,
  &(vtc_S509C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(296,204), // object size
  NSPAIRA(_ZTI6S509C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV6S509C1),125, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  5, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S675C5  {
  int s675c5f0;
  __tsi64 s675c5f1;
  void *s675c5f2[4];
  int s675c5f3[2];
  void *s675c5f4;
  ::S3214C4_nt s675c5f5;
  void *s675c5f6[2];
  virtual  ~S675C5(); // _ZN6S675C5D1Ev
  virtual void  v6(); // _ZN6S675C52v6Ev
  virtual void  v7(); // _ZN6S675C52v7Ev
  virtual void  v8(); // _ZN6S675C52v8Ev
  virtual void  v9(); // _ZN6S675C52v9Ev
  virtual void  v10(); // _ZN6S675C53v10Ev
  virtual void  v11(); // _ZN6S675C53v11Ev
  virtual void  v12(); // _ZN6S675C53v12Ev
  virtual void  v13(); // _ZN6S675C53v13Ev
  virtual void  v14(); // _ZN6S675C53v14Ev
  virtual void  v15(); // _ZN6S675C53v15Ev
  virtual void  v16(); // _ZN6S675C53v16Ev
  virtual void  v17(); // _ZN6S675C53v17Ev
  virtual void  v18(); // _ZN6S675C53v18Ev
  virtual void  v19(); // _ZN6S675C53v19Ev
  virtual void  v20(); // _ZN6S675C53v20Ev
  virtual void  v21(); // _ZN6S675C53v21Ev
  virtual void  v22(); // _ZN6S675C53v22Ev
  virtual void  v23(); // _ZN6S675C53v23Ev
  virtual void  v24(); // _ZN6S675C53v24Ev
  virtual void  v25(); // _ZN6S675C53v25Ev
  virtual void  v26(); // _ZN6S675C53v26Ev
  virtual void  v27(); // _ZN6S675C53v27Ev
  virtual void  v28(); // _ZN6S675C53v28Ev
  virtual void  v29(); // _ZN6S675C53v29Ev
  virtual void  v30(); // _ZN6S675C53v30Ev
  virtual void  v31(); // _ZN6S675C53v31Ev
  virtual void  v32(); // _ZN6S675C53v32Ev
  virtual void  v33(); // _ZN6S675C53v33Ev
  virtual void  v34(); // _ZN6S675C53v34Ev
  virtual void  v35(); // _ZN6S675C53v35Ev
  virtual void  v36(); // _ZN6S675C53v36Ev
  virtual void  v37(); // _ZN6S675C53v37Ev
  virtual void  v38(); // _ZN6S675C53v38Ev
  virtual void  v39(); // _ZN6S675C53v39Ev
  virtual void  v40(); // _ZN6S675C53v40Ev
  virtual void  v41(); // _ZN6S675C53v41Ev
  virtual void  v42(); // _ZN6S675C53v42Ev
  virtual void  v43(); // _ZN6S675C53v43Ev
  virtual void  v44(); // _ZN6S675C53v44Ev
  virtual void  v45(); // _ZN6S675C53v45Ev
  virtual void  v46(); // _ZN6S675C53v46Ev
  virtual void  v47(); // _ZN6S675C53v47Ev
  virtual void  v48(); // _ZN6S675C53v48Ev
  virtual void  v49(); // _ZN6S675C53v49Ev
  virtual void  v50(); // _ZN6S675C53v50Ev
  virtual void  v51(); // _ZN6S675C53v51Ev
  virtual void  v52(); // _ZN6S675C53v52Ev
  virtual void  v53(); // _ZN6S675C53v53Ev
  virtual void  v54(); // _ZN6S675C53v54Ev
  virtual void  v55(); // _ZN6S675C53v55Ev
  virtual void  v56(); // _ZN6S675C53v56Ev
  virtual void  v57(); // _ZN6S675C53v57Ev
  virtual void  v58(); // _ZN6S675C53v58Ev
  virtual void  v59(); // _ZN6S675C53v59Ev
  virtual void  v60(); // _ZN6S675C53v60Ev
  virtual void  v61(); // _ZN6S675C53v61Ev
  virtual void  v62(); // _ZN6S675C53v62Ev
  virtual void  v63(); // _ZN6S675C53v63Ev
  virtual void  v64(); // _ZN6S675C53v64Ev
  virtual void  v65(); // _ZN6S675C53v65Ev
  virtual void  v66(); // _ZN6S675C53v66Ev
  virtual void  v67(); // _ZN6S675C53v67Ev
  virtual void  v68(); // _ZN6S675C53v68Ev
  virtual void  v69(); // _ZN6S675C53v69Ev
  S675C5(); // tgen
};
//SIG(-1 S675C5) 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]}


 S675C5 ::~S675C5(){ note_dtor("S675C5", this);}
void  S675C5 ::v6(){vfunc_called(this, "_ZN6S675C52v6Ev");}
void  S675C5 ::v7(){vfunc_called(this, "_ZN6S675C52v7Ev");}
void  S675C5 ::v8(){vfunc_called(this, "_ZN6S675C52v8Ev");}
void  S675C5 ::v9(){vfunc_called(this, "_ZN6S675C52v9Ev");}
void  S675C5 ::v10(){vfunc_called(this, "_ZN6S675C53v10Ev");}
void  S675C5 ::v11(){vfunc_called(this, "_ZN6S675C53v11Ev");}
void  S675C5 ::v12(){vfunc_called(this, "_ZN6S675C53v12Ev");}
void  S675C5 ::v13(){vfunc_called(this, "_ZN6S675C53v13Ev");}
void  S675C5 ::v14(){vfunc_called(this, "_ZN6S675C53v14Ev");}
void  S675C5 ::v15(){vfunc_called(this, "_ZN6S675C53v15Ev");}
void  S675C5 ::v16(){vfunc_called(this, "_ZN6S675C53v16Ev");}
void  S675C5 ::v17(){vfunc_called(this, "_ZN6S675C53v17Ev");}
void  S675C5 ::v18(){vfunc_called(this, "_ZN6S675C53v18Ev");}
void  S675C5 ::v19(){vfunc_called(this, "_ZN6S675C53v19Ev");}
void  S675C5 ::v20(){vfunc_called(this, "_ZN6S675C53v20Ev");}
void  S675C5 ::v21(){vfunc_called(this, "_ZN6S675C53v21Ev");}
void  S675C5 ::v22(){vfunc_called(this, "_ZN6S675C53v22Ev");}
void  S675C5 ::v23(){vfunc_called(this, "_ZN6S675C53v23Ev");}
void  S675C5 ::v24(){vfunc_called(this, "_ZN6S675C53v24Ev");}
void  S675C5 ::v25(){vfunc_called(this, "_ZN6S675C53v25Ev");}
void  S675C5 ::v26(){vfunc_called(this, "_ZN6S675C53v26Ev");}
void  S675C5 ::v27(){vfunc_called(this, "_ZN6S675C53v27Ev");}
void  S675C5 ::v28(){vfunc_called(this, "_ZN6S675C53v28Ev");}
void  S675C5 ::v29(){vfunc_called(this, "_ZN6S675C53v29Ev");}
void  S675C5 ::v30(){vfunc_called(this, "_ZN6S675C53v30Ev");}
void  S675C5 ::v31(){vfunc_called(this, "_ZN6S675C53v31Ev");}
void  S675C5 ::v32(){vfunc_called(this, "_ZN6S675C53v32Ev");}
void  S675C5 ::v33(){vfunc_called(this, "_ZN6S675C53v33Ev");}
void  S675C5 ::v34(){vfunc_called(this, "_ZN6S675C53v34Ev");}
void  S675C5 ::v35(){vfunc_called(this, "_ZN6S675C53v35Ev");}
void  S675C5 ::v36(){vfunc_called(this, "_ZN6S675C53v36Ev");}
void  S675C5 ::v37(){vfunc_called(this, "_ZN6S675C53v37Ev");}
void  S675C5 ::v38(){vfunc_called(this, "_ZN6S675C53v38Ev");}
void  S675C5 ::v39(){vfunc_called(this, "_ZN6S675C53v39Ev");}
void  S675C5 ::v40(){vfunc_called(this, "_ZN6S675C53v40Ev");}
void  S675C5 ::v41(){vfunc_called(this, "_ZN6S675C53v41Ev");}
void  S675C5 ::v42(){vfunc_called(this, "_ZN6S675C53v42Ev");}
void  S675C5 ::v43(){vfunc_called(this, "_ZN6S675C53v43Ev");}
void  S675C5 ::v44(){vfunc_called(this, "_ZN6S675C53v44Ev");}
void  S675C5 ::v45(){vfunc_called(this, "_ZN6S675C53v45Ev");}
void  S675C5 ::v46(){vfunc_called(this, "_ZN6S675C53v46Ev");}
void  S675C5 ::v47(){vfunc_called(this, "_ZN6S675C53v47Ev");}
void  S675C5 ::v48(){vfunc_called(this, "_ZN6S675C53v48Ev");}
void  S675C5 ::v49(){vfunc_called(this, "_ZN6S675C53v49Ev");}
void  S675C5 ::v50(){vfunc_called(this, "_ZN6S675C53v50Ev");}
void  S675C5 ::v51(){vfunc_called(this, "_ZN6S675C53v51Ev");}
void  S675C5 ::v52(){vfunc_called(this, "_ZN6S675C53v52Ev");}
void  S675C5 ::v53(){vfunc_called(this, "_ZN6S675C53v53Ev");}
void  S675C5 ::v54(){vfunc_called(this, "_ZN6S675C53v54Ev");}
void  S675C5 ::v55(){vfunc_called(this, "_ZN6S675C53v55Ev");}
void  S675C5 ::v56(){vfunc_called(this, "_ZN6S675C53v56Ev");}
void  S675C5 ::v57(){vfunc_called(this, "_ZN6S675C53v57Ev");}
void  S675C5 ::v58(){vfunc_called(this, "_ZN6S675C53v58Ev");}
void  S675C5 ::v59(){vfunc_called(this, "_ZN6S675C53v59Ev");}
void  S675C5 ::v60(){vfunc_called(this, "_ZN6S675C53v60Ev");}
void  S675C5 ::v61(){vfunc_called(this, "_ZN6S675C53v61Ev");}
void  S675C5 ::v62(){vfunc_called(this, "_ZN6S675C53v62Ev");}
void  S675C5 ::v63(){vfunc_called(this, "_ZN6S675C53v63Ev");}
void  S675C5 ::v64(){vfunc_called(this, "_ZN6S675C53v64Ev");}
void  S675C5 ::v65(){vfunc_called(this, "_ZN6S675C53v65Ev");}
void  S675C5 ::v66(){vfunc_called(this, "_ZN6S675C53v66Ev");}
void  S675C5 ::v67(){vfunc_called(this, "_ZN6S675C53v67Ev");}
void  S675C5 ::v68(){vfunc_called(this, "_ZN6S675C53v68Ev");}
void  S675C5 ::v69(){vfunc_called(this, "_ZN6S675C53v69Ev");}
S675C5 ::S675C5(){ note_ctor("S675C5", this);} // tgen

static void Test_S675C5()
{
  extern Class_Descriptor cd_S675C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S675C5, buf);
    S675C5 *dp, &lv = *(dp=new (buf) S675C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S675C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S675C5)");
    check_field_offset(lv, s675c5f0, ABISELECT(8,4), "S675C5.s675c5f0");
    check_field_offset(lv, s675c5f1, ABISELECT(16,8), "S675C5.s675c5f1");
    check_field_offset(lv, s675c5f2, ABISELECT(24,16), "S675C5.s675c5f2");
    check_field_offset(lv, s675c5f3, ABISELECT(56,32), "S675C5.s675c5f3");
    check_field_offset(lv, s675c5f4, ABISELECT(64,40), "S675C5.s675c5f4");
    check_field_offset(lv, s675c5f5, ABISELECT(72,44), "S675C5.s675c5f5");
    check_field_offset(lv, s675c5f6, ABISELECT(80,52), "S675C5.s675c5f6");
    test_class_info(&lv, &cd_S675C5);
    dp->~S675C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS675C5(Test_S675C5, "S675C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S675C5C1Ev();
extern void _ZN6S675C5D1Ev();
Name_Map name_map_S675C5[] = {
  NSPAIR(_ZN6S675C5C1Ev),
  NSPAIR(_ZN6S675C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S675C5[];
extern void _ZN6S675C5D1Ev();
extern void _ZN6S675C5D0Ev();
extern void _ZN6S675C52v6Ev();
extern void _ZN6S675C52v7Ev();
extern void _ZN6S675C52v8Ev();
extern void _ZN6S675C52v9Ev();
extern void _ZN6S675C53v10Ev();
extern void _ZN6S675C53v11Ev();
extern void _ZN6S675C53v12Ev();
extern void _ZN6S675C53v13Ev();
extern void _ZN6S675C53v14Ev();
extern void _ZN6S675C53v15Ev();
extern void _ZN6S675C53v16Ev();
extern void _ZN6S675C53v17Ev();
extern void _ZN6S675C53v18Ev();
extern void _ZN6S675C53v19Ev();
extern void _ZN6S675C53v20Ev();
extern void _ZN6S675C53v21Ev();
extern void _ZN6S675C53v22Ev();
extern void _ZN6S675C53v23Ev();
extern void _ZN6S675C53v24Ev();
extern void _ZN6S675C53v25Ev();
extern void _ZN6S675C53v26Ev();
extern void _ZN6S675C53v27Ev();
extern void _ZN6S675C53v28Ev();
extern void _ZN6S675C53v29Ev();
extern void _ZN6S675C53v30Ev();
extern void _ZN6S675C53v31Ev();
extern void _ZN6S675C53v32Ev();
extern void _ZN6S675C53v33Ev();
extern void _ZN6S675C53v34Ev();
extern void _ZN6S675C53v35Ev();
extern void _ZN6S675C53v36Ev();
extern void _ZN6S675C53v37Ev();
extern void _ZN6S675C53v38Ev();
extern void _ZN6S675C53v39Ev();
extern void _ZN6S675C53v40Ev();
extern void _ZN6S675C53v41Ev();
extern void _ZN6S675C53v42Ev();
extern void _ZN6S675C53v43Ev();
extern void _ZN6S675C53v44Ev();
extern void _ZN6S675C53v45Ev();
extern void _ZN6S675C53v46Ev();
extern void _ZN6S675C53v47Ev();
extern void _ZN6S675C53v48Ev();
extern void _ZN6S675C53v49Ev();
extern void _ZN6S675C53v50Ev();
extern void _ZN6S675C53v51Ev();
extern void _ZN6S675C53v52Ev();
extern void _ZN6S675C53v53Ev();
extern void _ZN6S675C53v54Ev();
extern void _ZN6S675C53v55Ev();
extern void _ZN6S675C53v56Ev();
extern void _ZN6S675C53v57Ev();
extern void _ZN6S675C53v58Ev();
extern void _ZN6S675C53v59Ev();
extern void _ZN6S675C53v60Ev();
extern void _ZN6S675C53v61Ev();
extern void _ZN6S675C53v62Ev();
extern void _ZN6S675C53v63Ev();
extern void _ZN6S675C53v64Ev();
extern void _ZN6S675C53v65Ev();
extern void _ZN6S675C53v66Ev();
extern void _ZN6S675C53v67Ev();
extern void _ZN6S675C53v68Ev();
extern void _ZN6S675C53v69Ev();
static  VTBL_ENTRY vtc_S675C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S675C5[0]),
  (VTBL_ENTRY)&_ZN6S675C5D1Ev,
  (VTBL_ENTRY)&_ZN6S675C5D0Ev,
  (VTBL_ENTRY)&_ZN6S675C52v6Ev,
  (VTBL_ENTRY)&_ZN6S675C52v7Ev,
  (VTBL_ENTRY)&_ZN6S675C52v8Ev,
  (VTBL_ENTRY)&_ZN6S675C52v9Ev,
  (VTBL_ENTRY)&_ZN6S675C53v10Ev,
  (VTBL_ENTRY)&_ZN6S675C53v11Ev,
  (VTBL_ENTRY)&_ZN6S675C53v12Ev,
  (VTBL_ENTRY)&_ZN6S675C53v13Ev,
  (VTBL_ENTRY)&_ZN6S675C53v14Ev,
  (VTBL_ENTRY)&_ZN6S675C53v15Ev,
  (VTBL_ENTRY)&_ZN6S675C53v16Ev,
  (VTBL_ENTRY)&_ZN6S675C53v17Ev,
  (VTBL_ENTRY)&_ZN6S675C53v18Ev,
  (VTBL_ENTRY)&_ZN6S675C53v19Ev,
  (VTBL_ENTRY)&_ZN6S675C53v20Ev,
  (VTBL_ENTRY)&_ZN6S675C53v21Ev,
  (VTBL_ENTRY)&_ZN6S675C53v22Ev,
  (VTBL_ENTRY)&_ZN6S675C53v23Ev,
  (VTBL_ENTRY)&_ZN6S675C53v24Ev,
  (VTBL_ENTRY)&_ZN6S675C53v25Ev,
  (VTBL_ENTRY)&_ZN6S675C53v26Ev,
  (VTBL_ENTRY)&_ZN6S675C53v27Ev,
  (VTBL_ENTRY)&_ZN6S675C53v28Ev,
  (VTBL_ENTRY)&_ZN6S675C53v29Ev,
  (VTBL_ENTRY)&_ZN6S675C53v30Ev,
  (VTBL_ENTRY)&_ZN6S675C53v31Ev,
  (VTBL_ENTRY)&_ZN6S675C53v32Ev,
  (VTBL_ENTRY)&_ZN6S675C53v33Ev,
  (VTBL_ENTRY)&_ZN6S675C53v34Ev,
  (VTBL_ENTRY)&_ZN6S675C53v35Ev,
  (VTBL_ENTRY)&_ZN6S675C53v36Ev,
  (VTBL_ENTRY)&_ZN6S675C53v37Ev,
  (VTBL_ENTRY)&_ZN6S675C53v38Ev,
  (VTBL_ENTRY)&_ZN6S675C53v39Ev,
  (VTBL_ENTRY)&_ZN6S675C53v40Ev,
  (VTBL_ENTRY)&_ZN6S675C53v41Ev,
  (VTBL_ENTRY)&_ZN6S675C53v42Ev,
  (VTBL_ENTRY)&_ZN6S675C53v43Ev,
  (VTBL_ENTRY)&_ZN6S675C53v44Ev,
  (VTBL_ENTRY)&_ZN6S675C53v45Ev,
  (VTBL_ENTRY)&_ZN6S675C53v46Ev,
  (VTBL_ENTRY)&_ZN6S675C53v47Ev,
  (VTBL_ENTRY)&_ZN6S675C53v48Ev,
  (VTBL_ENTRY)&_ZN6S675C53v49Ev,
  (VTBL_ENTRY)&_ZN6S675C53v50Ev,
  (VTBL_ENTRY)&_ZN6S675C53v51Ev,
  (VTBL_ENTRY)&_ZN6S675C53v52Ev,
  (VTBL_ENTRY)&_ZN6S675C53v53Ev,
  (VTBL_ENTRY)&_ZN6S675C53v54Ev,
  (VTBL_ENTRY)&_ZN6S675C53v55Ev,
  (VTBL_ENTRY)&_ZN6S675C53v56Ev,
  (VTBL_ENTRY)&_ZN6S675C53v57Ev,
  (VTBL_ENTRY)&_ZN6S675C53v58Ev,
  (VTBL_ENTRY)&_ZN6S675C53v59Ev,
  (VTBL_ENTRY)&_ZN6S675C53v60Ev,
  (VTBL_ENTRY)&_ZN6S675C53v61Ev,
  (VTBL_ENTRY)&_ZN6S675C53v62Ev,
  (VTBL_ENTRY)&_ZN6S675C53v63Ev,
  (VTBL_ENTRY)&_ZN6S675C53v64Ev,
  (VTBL_ENTRY)&_ZN6S675C53v65Ev,
  (VTBL_ENTRY)&_ZN6S675C53v66Ev,
  (VTBL_ENTRY)&_ZN6S675C53v67Ev,
  (VTBL_ENTRY)&_ZN6S675C53v68Ev,
  (VTBL_ENTRY)&_ZN6S675C53v69Ev,
};
extern VTBL_ENTRY _ZTI6S675C5[];
extern  VTBL_ENTRY _ZTV6S675C5[];
Class_Descriptor cd_S675C5 = {  "S675C5", // class name
  0,0,//no base classes
  &(vtc_S675C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S675C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S675C5),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  S675C4  : S675C5 {
  virtual  ~S675C4(); // _ZN6S675C4D1Ev
  virtual void  v70(); // _ZN6S675C43v70Ev
  virtual void  v71(); // _ZN6S675C43v71Ev
  S675C4(); // tgen
};
//SIG(-1 S675C4) 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}


 S675C4 ::~S675C4(){ note_dtor("S675C4", this);}
void  S675C4 ::v70(){vfunc_called(this, "_ZN6S675C43v70Ev");}
void  S675C4 ::v71(){vfunc_called(this, "_ZN6S675C43v71Ev");}
S675C4 ::S675C4(){ note_ctor("S675C4", this);} // tgen

static void Test_S675C4()
{
  extern Class_Descriptor cd_S675C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S675C4, buf);
    S675C4 *dp, &lv = *(dp=new (buf) S675C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S675C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S675C4)");
    check_base_class_offset(lv, (S675C5*), 0, "S675C4");
    test_class_info(&lv, &cd_S675C4);
    dp->~S675C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS675C4(Test_S675C4, "S675C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S675C4C1Ev();
extern void _ZN6S675C4D1Ev();
Name_Map name_map_S675C4[] = {
  NSPAIR(_ZN6S675C4C1Ev),
  NSPAIR(_ZN6S675C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S675C5;
extern VTBL_ENTRY _ZTI6S675C5[];
extern  VTBL_ENTRY _ZTV6S675C5[];
static Base_Class bases_S675C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S675C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S675C4[];
extern void _ZN6S675C4D1Ev();
extern void _ZN6S675C4D0Ev();
extern void _ZN6S675C52v6Ev();
extern void _ZN6S675C52v7Ev();
extern void _ZN6S675C52v8Ev();
extern void _ZN6S675C52v9Ev();
extern void _ZN6S675C53v10Ev();
extern void _ZN6S675C53v11Ev();
extern void _ZN6S675C53v12Ev();
extern void _ZN6S675C53v13Ev();
extern void _ZN6S675C53v14Ev();
extern void _ZN6S675C53v15Ev();
extern void _ZN6S675C53v16Ev();
extern void _ZN6S675C53v17Ev();
extern void _ZN6S675C53v18Ev();
extern void _ZN6S675C53v19Ev();
extern void _ZN6S675C53v20Ev();
extern void _ZN6S675C53v21Ev();
extern void _ZN6S675C53v22Ev();
extern void _ZN6S675C53v23Ev();
extern void _ZN6S675C53v24Ev();
extern void _ZN6S675C53v25Ev();
extern void _ZN6S675C53v26Ev();
extern void _ZN6S675C53v27Ev();
extern void _ZN6S675C53v28Ev();
extern void _ZN6S675C53v29Ev();
extern void _ZN6S675C53v30Ev();
extern void _ZN6S675C53v31Ev();
extern void _ZN6S675C53v32Ev();
extern void _ZN6S675C53v33Ev();
extern void _ZN6S675C53v34Ev();
extern void _ZN6S675C53v35Ev();
extern void _ZN6S675C53v36Ev();
extern void _ZN6S675C53v37Ev();
extern void _ZN6S675C53v38Ev();
extern void _ZN6S675C53v39Ev();
extern void _ZN6S675C53v40Ev();
extern void _ZN6S675C53v41Ev();
extern void _ZN6S675C53v42Ev();
extern void _ZN6S675C53v43Ev();
extern void _ZN6S675C53v44Ev();
extern void _ZN6S675C53v45Ev();
extern void _ZN6S675C53v46Ev();
extern void _ZN6S675C53v47Ev();
extern void _ZN6S675C53v48Ev();
extern void _ZN6S675C53v49Ev();
extern void _ZN6S675C53v50Ev();
extern void _ZN6S675C53v51Ev();
extern void _ZN6S675C53v52Ev();
extern void _ZN6S675C53v53Ev();
extern void _ZN6S675C53v54Ev();
extern void _ZN6S675C53v55Ev();
extern void _ZN6S675C53v56Ev();
extern void _ZN6S675C53v57Ev();
extern void _ZN6S675C53v58Ev();
extern void _ZN6S675C53v59Ev();
extern void _ZN6S675C53v60Ev();
extern void _ZN6S675C53v61Ev();
extern void _ZN6S675C53v62Ev();
extern void _ZN6S675C53v63Ev();
extern void _ZN6S675C53v64Ev();
extern void _ZN6S675C53v65Ev();
extern void _ZN6S675C53v66Ev();
extern void _ZN6S675C53v67Ev();
extern void _ZN6S675C53v68Ev();
extern void _ZN6S675C53v69Ev();
extern void _ZN6S675C43v70Ev();
extern void _ZN6S675C43v71Ev();
static  VTBL_ENTRY vtc_S675C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S675C4[0]),
  (VTBL_ENTRY)&_ZN6S675C4D1Ev,
  (VTBL_ENTRY)&_ZN6S675C4D0Ev,
  (VTBL_ENTRY)&_ZN6S675C52v6Ev,
  (VTBL_ENTRY)&_ZN6S675C52v7Ev,
  (VTBL_ENTRY)&_ZN6S675C52v8Ev,
  (VTBL_ENTRY)&_ZN6S675C52v9Ev,
  (VTBL_ENTRY)&_ZN6S675C53v10Ev,
  (VTBL_ENTRY)&_ZN6S675C53v11Ev,
  (VTBL_ENTRY)&_ZN6S675C53v12Ev,
  (VTBL_ENTRY)&_ZN6S675C53v13Ev,
  (VTBL_ENTRY)&_ZN6S675C53v14Ev,
  (VTBL_ENTRY)&_ZN6S675C53v15Ev,
  (VTBL_ENTRY)&_ZN6S675C53v16Ev,
  (VTBL_ENTRY)&_ZN6S675C53v17Ev,
  (VTBL_ENTRY)&_ZN6S675C53v18Ev,
  (VTBL_ENTRY)&_ZN6S675C53v19Ev,
  (VTBL_ENTRY)&_ZN6S675C53v20Ev,
  (VTBL_ENTRY)&_ZN6S675C53v21Ev,
  (VTBL_ENTRY)&_ZN6S675C53v22Ev,
  (VTBL_ENTRY)&_ZN6S675C53v23Ev,
  (VTBL_ENTRY)&_ZN6S675C53v24Ev,
  (VTBL_ENTRY)&_ZN6S675C53v25Ev,
  (VTBL_ENTRY)&_ZN6S675C53v26Ev,
  (VTBL_ENTRY)&_ZN6S675C53v27Ev,
  (VTBL_ENTRY)&_ZN6S675C53v28Ev,
  (VTBL_ENTRY)&_ZN6S675C53v29Ev,
  (VTBL_ENTRY)&_ZN6S675C53v30Ev,
  (VTBL_ENTRY)&_ZN6S675C53v31Ev,
  (VTBL_ENTRY)&_ZN6S675C53v32Ev,
  (VTBL_ENTRY)&_ZN6S675C53v33Ev,
  (VTBL_ENTRY)&_ZN6S675C53v34Ev,
  (VTBL_ENTRY)&_ZN6S675C53v35Ev,
  (VTBL_ENTRY)&_ZN6S675C53v36Ev,
  (VTBL_ENTRY)&_ZN6S675C53v37Ev,
  (VTBL_ENTRY)&_ZN6S675C53v38Ev,
  (VTBL_ENTRY)&_ZN6S675C53v39Ev,
  (VTBL_ENTRY)&_ZN6S675C53v40Ev,
  (VTBL_ENTRY)&_ZN6S675C53v41Ev,
  (VTBL_ENTRY)&_ZN6S675C53v42Ev,
  (VTBL_ENTRY)&_ZN6S675C53v43Ev,
  (VTBL_ENTRY)&_ZN6S675C53v44Ev,
  (VTBL_ENTRY)&_ZN6S675C53v45Ev,
  (VTBL_ENTRY)&_ZN6S675C53v46Ev,
  (VTBL_ENTRY)&_ZN6S675C53v47Ev,
  (VTBL_ENTRY)&_ZN6S675C53v48Ev,
  (VTBL_ENTRY)&_ZN6S675C53v49Ev,
  (VTBL_ENTRY)&_ZN6S675C53v50Ev,
  (VTBL_ENTRY)&_ZN6S675C53v51Ev,
  (VTBL_ENTRY)&_ZN6S675C53v52Ev,
  (VTBL_ENTRY)&_ZN6S675C53v53Ev,
  (VTBL_ENTRY)&_ZN6S675C53v54Ev,
  (VTBL_ENTRY)&_ZN6S675C53v55Ev,
  (VTBL_ENTRY)&_ZN6S675C53v56Ev,
  (VTBL_ENTRY)&_ZN6S675C53v57Ev,
  (VTBL_ENTRY)&_ZN6S675C53v58Ev,
  (VTBL_ENTRY)&_ZN6S675C53v59Ev,
  (VTBL_ENTRY)&_ZN6S675C53v60Ev,
  (VTBL_ENTRY)&_ZN6S675C53v61Ev,
  (VTBL_ENTRY)&_ZN6S675C53v62Ev,
  (VTBL_ENTRY)&_ZN6S675C53v63Ev,
  (VTBL_ENTRY)&_ZN6S675C53v64Ev,
  (VTBL_ENTRY)&_ZN6S675C53v65Ev,
  (VTBL_ENTRY)&_ZN6S675C53v66Ev,
  (VTBL_ENTRY)&_ZN6S675C53v67Ev,
  (VTBL_ENTRY)&_ZN6S675C53v68Ev,
  (VTBL_ENTRY)&_ZN6S675C53v69Ev,
  (VTBL_ENTRY)&_ZN6S675C43v70Ev,
  (VTBL_ENTRY)&_ZN6S675C43v71Ev,
};
extern VTBL_ENTRY _ZTI6S675C4[];
extern  VTBL_ENTRY _ZTV6S675C4[];
Class_Descriptor cd_S675C4 = {  "S675C4", // class name
  bases_S675C4, 1,
  &(vtc_S675C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S675C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S675C4),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  S675C3  : S675C4 {
  ::S23C10_nt s675c3f0;
  ::S23C10_nt s675c3f1;
  ::S23C10_nt s675c3f2;
  ::S23C10_nt s675c3f3;
  virtual  ~S675C3(); // _ZN6S675C3D1Ev
  virtual void  v72(); // _ZN6S675C33v72Ev
  virtual void  v73(); // _ZN6S675C33v73Ev
  virtual void  v74(); // _ZN6S675C33v74Ev
  virtual void  v75(); // _ZN6S675C33v75Ev
  virtual void  v76(); // _ZN6S675C33v76Ev
  virtual void  v77(); // _ZN6S675C33v77Ev
  virtual void  v78(); // _ZN6S675C33v78Ev
  S675C3(); // tgen
};
//SIG(-1 S675C3) C1{ BC2{ BC3{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v72 v73} vd v1 v2 v3 v4 v5 v6 v7 FC5{ m Fp FC4} FC5 FC5 FC5}


 S675C3 ::~S675C3(){ note_dtor("S675C3", this);}
void  S675C3 ::v72(){vfunc_called(this, "_ZN6S675C33v72Ev");}
void  S675C3 ::v73(){vfunc_called(this, "_ZN6S675C33v73Ev");}
void  S675C3 ::v74(){vfunc_called(this, "_ZN6S675C33v74Ev");}
void  S675C3 ::v75(){vfunc_called(this, "_ZN6S675C33v75Ev");}
void  S675C3 ::v76(){vfunc_called(this, "_ZN6S675C33v76Ev");}
void  S675C3 ::v77(){vfunc_called(this, "_ZN6S675C33v77Ev");}
void  S675C3 ::v78(){vfunc_called(this, "_ZN6S675C33v78Ev");}
S675C3 ::S675C3(){ note_ctor("S675C3", this);} // tgen

static void Test_S675C3()
{
  extern Class_Descriptor cd_S675C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,28)];
    init_test(&cd_S675C3, buf);
    S675C3 *dp, &lv = *(dp=new (buf) S675C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S675C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S675C3)");
    check_base_class_offset(lv, (S675C5*)(S675C4*), 0, "S675C3");
    check_base_class_offset(lv, (S675C4*), 0, "S675C3");
    check_field_offset(lv, s675c3f0, ABISELECT(96,60), "S675C3.s675c3f0");
    check_field_offset(lv, s675c3f1, ABISELECT(112,72), "S675C3.s675c3f1");
    check_field_offset(lv, s675c3f2, ABISELECT(128,84), "S675C3.s675c3f2");
    check_field_offset(lv, s675c3f3, ABISELECT(144,96), "S675C3.s675c3f3");
    test_class_info(&lv, &cd_S675C3);
    dp->~S675C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS675C3(Test_S675C3, "S675C3", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN6S675C3C1Ev();
extern void _ZN6S675C3D1Ev();
Name_Map name_map_S675C3[] = {
  NSPAIR(_ZN6S675C3C1Ev),
  NSPAIR(_ZN6S675C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S675C5;
extern VTBL_ENTRY _ZTI6S675C5[];
extern  VTBL_ENTRY _ZTV6S675C5[];
extern Class_Descriptor cd_S675C4;
extern VTBL_ENTRY _ZTI6S675C4[];
extern  VTBL_ENTRY _ZTV6S675C4[];
static Base_Class bases_S675C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S675C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S675C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S675C3[];
extern void _ZN6S675C3D1Ev();
extern void _ZN6S675C3D0Ev();
extern void _ZN6S675C52v6Ev();
extern void _ZN6S675C52v7Ev();
extern void _ZN6S675C52v8Ev();
extern void _ZN6S675C52v9Ev();
extern void _ZN6S675C53v10Ev();
extern void _ZN6S675C53v11Ev();
extern void _ZN6S675C53v12Ev();
extern void _ZN6S675C53v13Ev();
extern void _ZN6S675C53v14Ev();
extern void _ZN6S675C53v15Ev();
extern void _ZN6S675C53v16Ev();
extern void _ZN6S675C53v17Ev();
extern void _ZN6S675C53v18Ev();
extern void _ZN6S675C53v19Ev();
extern void _ZN6S675C53v20Ev();
extern void _ZN6S675C53v21Ev();
extern void _ZN6S675C53v22Ev();
extern void _ZN6S675C53v23Ev();
extern void _ZN6S675C53v24Ev();
extern void _ZN6S675C53v25Ev();
extern void _ZN6S675C53v26Ev();
extern void _ZN6S675C53v27Ev();
extern void _ZN6S675C53v28Ev();
extern void _ZN6S675C53v29Ev();
extern void _ZN6S675C53v30Ev();
extern void _ZN6S675C53v31Ev();
extern void _ZN6S675C53v32Ev();
extern void _ZN6S675C53v33Ev();
extern void _ZN6S675C53v34Ev();
extern void _ZN6S675C53v35Ev();
extern void _ZN6S675C53v36Ev();
extern void _ZN6S675C53v37Ev();
extern void _ZN6S675C53v38Ev();
extern void _ZN6S675C53v39Ev();
extern void _ZN6S675C53v40Ev();
extern void _ZN6S675C53v41Ev();
extern void _ZN6S675C53v42Ev();
extern void _ZN6S675C53v43Ev();
extern void _ZN6S675C53v44Ev();
extern void _ZN6S675C53v45Ev();
extern void _ZN6S675C53v46Ev();
extern void _ZN6S675C53v47Ev();
extern void _ZN6S675C53v48Ev();
extern void _ZN6S675C53v49Ev();
extern void _ZN6S675C53v50Ev();
extern void _ZN6S675C53v51Ev();
extern void _ZN6S675C53v52Ev();
extern void _ZN6S675C53v53Ev();
extern void _ZN6S675C53v54Ev();
extern void _ZN6S675C53v55Ev();
extern void _ZN6S675C53v56Ev();
extern void _ZN6S675C53v57Ev();
extern void _ZN6S675C53v58Ev();
extern void _ZN6S675C53v59Ev();
extern void _ZN6S675C53v60Ev();
extern void _ZN6S675C53v61Ev();
extern void _ZN6S675C53v62Ev();
extern void _ZN6S675C53v63Ev();
extern void _ZN6S675C53v64Ev();
extern void _ZN6S675C53v65Ev();
extern void _ZN6S675C53v66Ev();
extern void _ZN6S675C53v67Ev();
extern void _ZN6S675C53v68Ev();
extern void _ZN6S675C53v69Ev();
extern void _ZN6S675C43v70Ev();
extern void _ZN6S675C43v71Ev();
extern void _ZN6S675C33v72Ev();
extern void _ZN6S675C33v73Ev();
extern void _ZN6S675C33v74Ev();
extern void _ZN6S675C33v75Ev();
extern void _ZN6S675C33v76Ev();
extern void _ZN6S675C33v77Ev();
extern void _ZN6S675C33v78Ev();
static  VTBL_ENTRY vtc_S675C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S675C3[0]),
  (VTBL_ENTRY)&_ZN6S675C3D1Ev,
  (VTBL_ENTRY)&_ZN6S675C3D0Ev,
  (VTBL_ENTRY)&_ZN6S675C52v6Ev,
  (VTBL_ENTRY)&_ZN6S675C52v7Ev,
  (VTBL_ENTRY)&_ZN6S675C52v8Ev,
  (VTBL_ENTRY)&_ZN6S675C52v9Ev,
  (VTBL_ENTRY)&_ZN6S675C53v10Ev,
  (VTBL_ENTRY)&_ZN6S675C53v11Ev,
  (VTBL_ENTRY)&_ZN6S675C53v12Ev,
  (VTBL_ENTRY)&_ZN6S675C53v13Ev,
  (VTBL_ENTRY)&_ZN6S675C53v14Ev,
  (VTBL_ENTRY)&_ZN6S675C53v15Ev,
  (VTBL_ENTRY)&_ZN6S675C53v16Ev,
  (VTBL_ENTRY)&_ZN6S675C53v17Ev,
  (VTBL_ENTRY)&_ZN6S675C53v18Ev,
  (VTBL_ENTRY)&_ZN6S675C53v19Ev,
  (VTBL_ENTRY)&_ZN6S675C53v20Ev,
  (VTBL_ENTRY)&_ZN6S675C53v21Ev,
  (VTBL_ENTRY)&_ZN6S675C53v22Ev,
  (VTBL_ENTRY)&_ZN6S675C53v23Ev,
  (VTBL_ENTRY)&_ZN6S675C53v24Ev,
  (VTBL_ENTRY)&_ZN6S675C53v25Ev,
  (VTBL_ENTRY)&_ZN6S675C53v26Ev,
  (VTBL_ENTRY)&_ZN6S675C53v27Ev,
  (VTBL_ENTRY)&_ZN6S675C53v28Ev,
  (VTBL_ENTRY)&_ZN6S675C53v29Ev,
  (VTBL_ENTRY)&_ZN6S675C53v30Ev,
  (VTBL_ENTRY)&_ZN6S675C53v31Ev,
  (VTBL_ENTRY)&_ZN6S675C53v32Ev,
  (VTBL_ENTRY)&_ZN6S675C53v33Ev,
  (VTBL_ENTRY)&_ZN6S675C53v34Ev,
  (VTBL_ENTRY)&_ZN6S675C53v35Ev,
  (VTBL_ENTRY)&_ZN6S675C53v36Ev,
  (VTBL_ENTRY)&_ZN6S675C53v37Ev,
  (VTBL_ENTRY)&_ZN6S675C53v38Ev,
  (VTBL_ENTRY)&_ZN6S675C53v39Ev,
  (VTBL_ENTRY)&_ZN6S675C53v40Ev,
  (VTBL_ENTRY)&_ZN6S675C53v41Ev,
  (VTBL_ENTRY)&_ZN6S675C53v42Ev,
  (VTBL_ENTRY)&_ZN6S675C53v43Ev,
  (VTBL_ENTRY)&_ZN6S675C53v44Ev,
  (VTBL_ENTRY)&_ZN6S675C53v45Ev,
  (VTBL_ENTRY)&_ZN6S675C53v46Ev,
  (VTBL_ENTRY)&_ZN6S675C53v47Ev,
  (VTBL_ENTRY)&_ZN6S675C53v48Ev,
  (VTBL_ENTRY)&_ZN6S675C53v49Ev,
  (VTBL_ENTRY)&_ZN6S675C53v50Ev,
  (VTBL_ENTRY)&_ZN6S675C53v51Ev,
  (VTBL_ENTRY)&_ZN6S675C53v52Ev,
  (VTBL_ENTRY)&_ZN6S675C53v53Ev,
  (VTBL_ENTRY)&_ZN6S675C53v54Ev,
  (VTBL_ENTRY)&_ZN6S675C53v55Ev,
  (VTBL_ENTRY)&_ZN6S675C53v56Ev,
  (VTBL_ENTRY)&_ZN6S675C53v57Ev,
  (VTBL_ENTRY)&_ZN6S675C53v58Ev,
  (VTBL_ENTRY)&_ZN6S675C53v59Ev,
  (VTBL_ENTRY)&_ZN6S675C53v60Ev,
  (VTBL_ENTRY)&_ZN6S675C53v61Ev,
  (VTBL_ENTRY)&_ZN6S675C53v62Ev,
  (VTBL_ENTRY)&_ZN6S675C53v63Ev,
  (VTBL_ENTRY)&_ZN6S675C53v64Ev,
  (VTBL_ENTRY)&_ZN6S675C53v65Ev,
  (VTBL_ENTRY)&_ZN6S675C53v66Ev,
  (VTBL_ENTRY)&_ZN6S675C53v67Ev,
  (VTBL_ENTRY)&_ZN6S675C53v68Ev,
  (VTBL_ENTRY)&_ZN6S675C53v69Ev,
  (VTBL_ENTRY)&_ZN6S675C43v70Ev,
  (VTBL_ENTRY)&_ZN6S675C43v71Ev,
  (VTBL_ENTRY)&_ZN6S675C33v72Ev,
  (VTBL_ENTRY)&_ZN6S675C33v73Ev,
  (VTBL_ENTRY)&_ZN6S675C33v74Ev,
  (VTBL_ENTRY)&_ZN6S675C33v75Ev,
  (VTBL_ENTRY)&_ZN6S675C33v76Ev,
  (VTBL_ENTRY)&_ZN6S675C33v77Ev,
  (VTBL_ENTRY)&_ZN6S675C33v78Ev,
};
extern VTBL_ENTRY _ZTI6S675C3[];
extern  VTBL_ENTRY _ZTV6S675C3[];
Class_Descriptor cd_S675C3 = {  "S675C3", // class name
  bases_S675C3, 2,
  &(vtc_S675C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI6S675C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S675C3),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  S675C8_nt  {
  virtual void  v79(); // _ZN9S675C8_nt3v79Ev
  ~S675C8_nt(); // tgen
  S675C8_nt(); // tgen
};
//SIG(-1 S675C8_nt) C1{ v1}


void  S675C8_nt ::v79(){vfunc_called(this, "_ZN9S675C8_nt3v79Ev");}
S675C8_nt ::~S675C8_nt(){ note_dtor("S675C8_nt", this);} // tgen
S675C8_nt ::S675C8_nt(){ note_ctor("S675C8_nt", this);} // tgen

//skip512 S675C8_nt

#else // __cplusplus

extern void _ZN9S675C8_ntC1Ev();
extern void _ZN9S675C8_ntD1Ev();
Name_Map name_map_S675C8_nt[] = {
  NSPAIR(_ZN9S675C8_ntC1Ev),
  NSPAIR(_ZN9S675C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S675C8_nt[];
extern void _ZN9S675C8_nt3v79Ev();
static  VTBL_ENTRY vtc_S675C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S675C8_nt[0]),
  (VTBL_ENTRY)&_ZN9S675C8_nt3v79Ev,
};
extern VTBL_ENTRY _ZTI9S675C8_nt[];
VTBL_ENTRY *P__ZTI9S675C8_nt = _ZTI9S675C8_nt; 
extern  VTBL_ENTRY _ZTV9S675C8_nt[];
Class_Descriptor cd_S675C8_nt = {  "S675C8_nt", // class name
  0,0,//no base classes
  &(vtc_S675C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S675C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S675C8_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  S675C9_nt  {
  virtual  ~S675C9_nt(); // _ZN9S675C9_ntD1Ev
  virtual void  v80(); // _ZN9S675C9_nt3v80Ev
  S675C9_nt(); // tgen
};
//SIG(-1 S675C9_nt) C1{ vd v1}


 S675C9_nt ::~S675C9_nt(){ note_dtor("S675C9_nt", this);}
void  S675C9_nt ::v80(){vfunc_called(this, "_ZN9S675C9_nt3v80Ev");}
S675C9_nt ::S675C9_nt(){ note_ctor("S675C9_nt", this);} // tgen

//skip512 S675C9_nt

#else // __cplusplus

extern void _ZN9S675C9_ntC1Ev();
extern void _ZN9S675C9_ntD1Ev();
Name_Map name_map_S675C9_nt[] = {
  NSPAIR(_ZN9S675C9_ntC1Ev),
  NSPAIR(_ZN9S675C9_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S675C9_nt[];
extern void _ZN9S675C9_ntD1Ev();
extern void _ZN9S675C9_ntD0Ev();
extern void _ZN9S675C9_nt3v80Ev();
static  VTBL_ENTRY vtc_S675C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S675C9_nt[0]),
  (VTBL_ENTRY)&_ZN9S675C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S675C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S675C9_nt3v80Ev,
};
extern VTBL_ENTRY _ZTI9S675C9_nt[];
VTBL_ENTRY *P__ZTI9S675C9_nt = _ZTI9S675C9_nt; 
extern  VTBL_ENTRY _ZTV9S675C9_nt[];
Class_Descriptor cd_S675C9_nt = {  "S675C9_nt", // class name
  0,0,//no base classes
  &(vtc_S675C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S675C9_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S675C9_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  S675C19  {
  ::S3214C4_nt s675c19f0;
  __tsi64 s675c19f1;
  void  mf675c19(); // _ZN7S675C198mf675c19Ev
};
//SIG(-1 S675C19) C1{ m FC2{ m Fi[2]} FL}


void  S675C19 ::mf675c19(){}

static void Test_S675C19()
{
  {
    init_simple_test("S675C19");
    S675C19 lv;
    check2(sizeof(lv), 16, "sizeof(S675C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S675C19)");
    check_field_offset(lv, s675c19f0, 0, "S675C19.s675c19f0");
    check_field_offset(lv, s675c19f1, 8, "S675C19.s675c19f1");
  }
}
static Arrange_To_Call_Me vS675C19(Test_S675C19, "S675C19", 16);

#else // __cplusplus

Class_Descriptor cd_S675C19 = {  "S675C19", // 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  S675C20_nt  : S23C17_nt {
};
//SIG(-1 S675C20_nt) C1{ BC2{ m FC3{ BC4{ m Fp Fi[2]}} Fp Fi}}



//skip512 S675C20_nt

#else // __cplusplus

extern Class_Descriptor cd_S23C17_nt;
static Base_Class bases_S675C20_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S23C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S675C23  : S675C19 {
  unsigned int s675c23f0:1;
};
//SIG(1 S675C23) C1{ BC2{ m FC3{ m Fi[2]} FL} Fi:1}



static void Test_S675C23()
{
  extern Class_Descriptor cd_S675C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S675C23, buf);
    S675C23 &lv = *(new (buf) S675C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S675C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S675C23)");
    check_base_class_offset(lv, (S675C19*), 0, "S675C23");
    set_bf_and_test(lv, s675c23f0, 16, 0, 1, 1, "S675C23");
    test_class_info(&lv, &cd_S675C23);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS675C23(Test_S675C23, "S675C23", ABISELECT(24,20));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S675C2  : S675C3 , S675C8_nt , S675C9_nt {
  void *s675c2f0[2];
  ::S3214C21_nt s675c2f1;
  ::S3214C22 s675c2f2;
  ::S3214C22 s675c2f3;
  void *s675c2f4[2];
  ::S23C16_nt s675c2f5;
  unsigned int s675c2f6:1;
  unsigned int s675c2f7:1;
  unsigned int s675c2f8:1;
  unsigned int s675c2f9:1;
  int s675c2f10[8];
  unsigned int s675c2f11:1;
  ::S675C19 s675c2f12;
  ::S675C20_nt s675c2f13;
  ::S675C23 s675c2f14[4];
  void *s675c2f15;
  unsigned int s675c2f16:1;
  virtual  ~S675C2(); // _ZN6S675C2D1Ev
  virtual void  v81(); // _ZN6S675C23v81Ev
  virtual void  v82(); // _ZN6S675C23v82Ev
  virtual void  v83(); // _ZN6S675C23v83Ev
  virtual void  v84(); // _ZN6S675C23v84Ev
  virtual void  v85(); // _ZN6S675C23v85Ev
  virtual void  v86(); // _ZN6S675C23v86Ev
  virtual void  v87(); // _ZN6S675C23v87Ev
  virtual void  v88(); // _ZN6S675C23v88Ev
  virtual void  v89(); // _ZN6S675C23v89Ev
  virtual void  v90(); // _ZN6S675C23v90Ev
  virtual void  v91(); // _ZN6S675C23v91Ev
  virtual void  v92(); // _ZN6S675C23v92Ev
  virtual void  v93(); // _ZN6S675C23v93Ev
  virtual void  v94(); // _ZN6S675C23v94Ev
  virtual void  v95(); // _ZN6S675C23v95Ev
  virtual void  v96(); // _ZN6S675C23v96Ev
  virtual void  v97(); // _ZN6S675C23v97Ev
  S675C2(); // tgen
};
//SIG(-1 S675C2) C1{ BC2{ BC3{ BC4{ vd 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 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v82 v83} vd v84 v85 v86 v87 v88 v89 v90 FC6{ m Fp FC5} FC6 FC6 FC6} BC7{ v91} BC8{ vd v92} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 Fp[2] FC9{ BC10{ BC11{ BC12{ m Fp Fi[2]}}}} FC10 FC10 Fp[2] FC13{ BC14{ m FC11 Fp Fi}} Fi:1 Fi:1 Fi:1 Fi:1 Fi[8] Fi:1 FC15{ m FC5 FL} FC16{ BC14} FC17{ BC15 Fi:1}[4] Fp Fi:1}


 S675C2 ::~S675C2(){ note_dtor("S675C2", this);}
void  S675C2 ::v81(){vfunc_called(this, "_ZN6S675C23v81Ev");}
void  S675C2 ::v82(){vfunc_called(this, "_ZN6S675C23v82Ev");}
void  S675C2 ::v83(){vfunc_called(this, "_ZN6S675C23v83Ev");}
void  S675C2 ::v84(){vfunc_called(this, "_ZN6S675C23v84Ev");}
void  S675C2 ::v85(){vfunc_called(this, "_ZN6S675C23v85Ev");}
void  S675C2 ::v86(){vfunc_called(this, "_ZN6S675C23v86Ev");}
void  S675C2 ::v87(){vfunc_called(this, "_ZN6S675C23v87Ev");}
void  S675C2 ::v88(){vfunc_called(this, "_ZN6S675C23v88Ev");}
void  S675C2 ::v89(){vfunc_called(this, "_ZN6S675C23v89Ev");}
void  S675C2 ::v90(){vfunc_called(this, "_ZN6S675C23v90Ev");}
void  S675C2 ::v91(){vfunc_called(this, "_ZN6S675C23v91Ev");}
void  S675C2 ::v92(){vfunc_called(this, "_ZN6S675C23v92Ev");}
void  S675C2 ::v93(){vfunc_called(this, "_ZN6S675C23v93Ev");}
void  S675C2 ::v94(){vfunc_called(this, "_ZN6S675C23v94Ev");}
void  S675C2 ::v95(){vfunc_called(this, "_ZN6S675C23v95Ev");}
void  S675C2 ::v96(){vfunc_called(this, "_ZN6S675C23v96Ev");}
void  S675C2 ::v97(){vfunc_called(this, "_ZN6S675C23v97Ev");}
S675C2 ::S675C2(){ note_ctor("S675C2", this);} // tgen

static void Test_S675C2()
{
  extern Class_Descriptor cd_S675C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(62,89)];
    init_test(&cd_S675C2, buf);
    S675C2 *dp, &lv = *(dp=new (buf) S675C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(488,352), "sizeof(S675C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S675C2)");
    check_base_class_offset(lv, (S675C5*)(S675C4*)(S675C3*), 0, "S675C2");
    check_base_class_offset(lv, (S675C4*)(S675C3*), 0, "S675C2");
    check_base_class_offset(lv, (S675C3*), 0, "S675C2");
    check_base_class_offset(lv, (S675C8_nt*), ABISELECT(160,108), "S675C2");
    check_base_class_offset(lv, (S675C9_nt*), ABISELECT(168,112), "S675C2");
    check_field_offset(lv, s675c2f0, ABISELECT(176,116), "S675C2.s675c2f0");
    check_field_offset(lv, s675c2f1, ABISELECT(192,124), "S675C2.s675c2f1");
    check_field_offset(lv, s675c2f2, ABISELECT(208,136), "S675C2.s675c2f2");
    check_field_offset(lv, s675c2f3, ABISELECT(224,148), "S675C2.s675c2f3");
    check_field_offset(lv, s675c2f4, ABISELECT(240,160), "S675C2.s675c2f4");
    check_field_offset(lv, s675c2f5, ABISELECT(256,168), "S675C2.s675c2f5");
    set_bf_and_test(lv, s675c2f6, ABISELECT(288,188), 0, 1, 1, "S675C2");
    set_bf_and_test(lv, s675c2f7, ABISELECT(288,188), 1, 1, 1, "S675C2");
    set_bf_and_test(lv, s675c2f8, ABISELECT(288,188), 2, 1, 1, "S675C2");
    set_bf_and_test(lv, s675c2f9, ABISELECT(288,188), 3, 1, 1, "S675C2");
    check_field_offset(lv, s675c2f10, ABISELECT(292,192), "S675C2.s675c2f10");
    set_bf_and_test(lv, s675c2f11, ABISELECT(324,224), 0, 1, 1, "S675C2");
    check_field_offset(lv, s675c2f12, ABISELECT(328,228), "S675C2.s675c2f12");
    check_field_offset(lv, s675c2f13, ABISELECT(344,244), "S675C2.s675c2f13");
    check_field_offset(lv, s675c2f14, ABISELECT(376,264), "S675C2.s675c2f14");
    check_field_offset(lv, s675c2f15, ABISELECT(472,344), "S675C2.s675c2f15");
    set_bf_and_test(lv, s675c2f16, ABISELECT(480,348), 0, 1, 1, "S675C2");
    test_class_info(&lv, &cd_S675C2);
    dp->~S675C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS675C2(Test_S675C2, "S675C2", ABISELECT(488,352));

#else // __cplusplus

extern void _ZN6S675C2C1Ev();
extern void _ZN6S675C2D1Ev();
Name_Map name_map_S675C2[] = {
  NSPAIR(_ZN6S675C2C1Ev),
  NSPAIR(_ZN6S675C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S675C5;
extern VTBL_ENTRY _ZTI6S675C5[];
extern  VTBL_ENTRY _ZTV6S675C5[];
extern Class_Descriptor cd_S675C4;
extern VTBL_ENTRY _ZTI6S675C4[];
extern  VTBL_ENTRY _ZTV6S675C4[];
extern Class_Descriptor cd_S675C3;
extern VTBL_ENTRY _ZTI6S675C3[];
extern  VTBL_ENTRY _ZTV6S675C3[];
extern Class_Descriptor cd_S675C8_nt;
extern VTBL_ENTRY _ZTI9S675C8_nt[];
extern  VTBL_ENTRY _ZTV9S675C8_nt[];
extern Class_Descriptor cd_S675C9_nt;
extern VTBL_ENTRY _ZTI9S675C9_nt[];
extern  VTBL_ENTRY _ZTV9S675C9_nt[];
static Base_Class bases_S675C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S675C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S675C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S675C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S675C8_nt,    ABISELECT(160,108), //bcp->offset
    94, //bcp->virtual_function_table_offset
    2, //num_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_S675C9_nt,    ABISELECT(168,112), //bcp->offset
    97, //bcp->virtual_function_table_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 _ZTI6S675C2[];
extern void _ZN6S675C2D1Ev();
extern void _ZN6S675C2D0Ev();
extern void _ZN6S675C52v6Ev();
extern void _ZN6S675C52v7Ev();
extern void _ZN6S675C52v8Ev();
extern void _ZN6S675C52v9Ev();
extern void _ZN6S675C53v10Ev();
extern void _ZN6S675C53v11Ev();
extern void _ZN6S675C53v12Ev();
extern void _ZN6S675C53v13Ev();
extern void _ZN6S675C53v14Ev();
extern void _ZN6S675C53v15Ev();
extern void _ZN6S675C53v16Ev();
extern void _ZN6S675C53v17Ev();
extern void _ZN6S675C53v18Ev();
extern void _ZN6S675C53v19Ev();
extern void _ZN6S675C53v20Ev();
extern void _ZN6S675C53v21Ev();
extern void _ZN6S675C53v22Ev();
extern void _ZN6S675C53v23Ev();
extern void _ZN6S675C53v24Ev();
extern void _ZN6S675C53v25Ev();
extern void _ZN6S675C53v26Ev();
extern void _ZN6S675C53v27Ev();
extern void _ZN6S675C53v28Ev();
extern void _ZN6S675C53v29Ev();
extern void _ZN6S675C53v30Ev();
extern void _ZN6S675C53v31Ev();
extern void _ZN6S675C53v32Ev();
extern void _ZN6S675C53v33Ev();
extern void _ZN6S675C53v34Ev();
extern void _ZN6S675C53v35Ev();
extern void _ZN6S675C53v36Ev();
extern void _ZN6S675C53v37Ev();
extern void _ZN6S675C53v38Ev();
extern void _ZN6S675C53v39Ev();
extern void _ZN6S675C53v40Ev();
extern void _ZN6S675C53v41Ev();
extern void _ZN6S675C53v42Ev();
extern void _ZN6S675C53v43Ev();
extern void _ZN6S675C53v44Ev();
extern void _ZN6S675C53v45Ev();
extern void _ZN6S675C53v46Ev();
extern void _ZN6S675C53v47Ev();
extern void _ZN6S675C53v48Ev();
extern void _ZN6S675C53v49Ev();
extern void _ZN6S675C53v50Ev();
extern void _ZN6S675C53v51Ev();
extern void _ZN6S675C53v52Ev();
extern void _ZN6S675C53v53Ev();
extern void _ZN6S675C53v54Ev();
extern void _ZN6S675C53v55Ev();
extern void _ZN6S675C53v56Ev();
extern void _ZN6S675C53v57Ev();
extern void _ZN6S675C53v58Ev();
extern void _ZN6S675C53v59Ev();
extern void _ZN6S675C53v60Ev();
extern void _ZN6S675C53v61Ev();
extern void _ZN6S675C53v62Ev();
extern void _ZN6S675C53v63Ev();
extern void _ZN6S675C53v64Ev();
extern void _ZN6S675C53v65Ev();
extern void _ZN6S675C53v66Ev();
extern void _ZN6S675C53v67Ev();
extern void _ZN6S675C53v68Ev();
extern void _ZN6S675C53v69Ev();
extern void _ZN6S675C43v70Ev();
extern void _ZN6S675C43v71Ev();
extern void _ZN6S675C33v72Ev();
extern void _ZN6S675C33v73Ev();
extern void _ZN6S675C33v74Ev();
extern void _ZN6S675C33v75Ev();
extern void _ZN6S675C33v76Ev();
extern void _ZN6S675C33v77Ev();
extern void _ZN6S675C33v78Ev();
extern void _ZN6S675C23v81Ev();
extern void _ZN6S675C23v82Ev();
extern void _ZN6S675C23v83Ev();
extern void _ZN6S675C23v84Ev();
extern void _ZN6S675C23v85Ev();
extern void _ZN6S675C23v86Ev();
extern void _ZN6S675C23v87Ev();
extern void _ZN6S675C23v88Ev();
extern void _ZN6S675C23v89Ev();
extern void _ZN6S675C23v90Ev();
extern void _ZN6S675C23v91Ev();
extern void _ZN6S675C23v92Ev();
extern void _ZN6S675C23v93Ev();
extern void _ZN6S675C23v94Ev();
extern void _ZN6S675C23v95Ev();
extern void _ZN6S675C23v96Ev();
extern void _ZN6S675C23v97Ev();
extern void _ZN9S675C8_nt3v79Ev();
extern void ABISELECT(_ZThn168_N6S675C2D1Ev,_ZThn112_N6S675C2D1Ev)();
extern void ABISELECT(_ZThn168_N6S675C2D0Ev,_ZThn112_N6S675C2D0Ev)();
extern void _ZN9S675C9_nt3v80Ev();
static  VTBL_ENTRY vtc_S675C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S675C2[0]),
  (VTBL_ENTRY)&_ZN6S675C2D1Ev,
  (VTBL_ENTRY)&_ZN6S675C2D0Ev,
  (VTBL_ENTRY)&_ZN6S675C52v6Ev,
  (VTBL_ENTRY)&_ZN6S675C52v7Ev,
  (VTBL_ENTRY)&_ZN6S675C52v8Ev,
  (VTBL_ENTRY)&_ZN6S675C52v9Ev,
  (VTBL_ENTRY)&_ZN6S675C53v10Ev,
  (VTBL_ENTRY)&_ZN6S675C53v11Ev,
  (VTBL_ENTRY)&_ZN6S675C53v12Ev,
  (VTBL_ENTRY)&_ZN6S675C53v13Ev,
  (VTBL_ENTRY)&_ZN6S675C53v14Ev,
  (VTBL_ENTRY)&_ZN6S675C53v15Ev,
  (VTBL_ENTRY)&_ZN6S675C53v16Ev,
  (VTBL_ENTRY)&_ZN6S675C53v17Ev,
  (VTBL_ENTRY)&_ZN6S675C53v18Ev,
  (VTBL_ENTRY)&_ZN6S675C53v19Ev,
  (VTBL_ENTRY)&_ZN6S675C53v20Ev,
  (VTBL_ENTRY)&_ZN6S675C53v21Ev,
  (VTBL_ENTRY)&_ZN6S675C53v22Ev,
  (VTBL_ENTRY)&_ZN6S675C53v23Ev,
  (VTBL_ENTRY)&_ZN6S675C53v24Ev,
  (VTBL_ENTRY)&_ZN6S675C53v25Ev,
  (VTBL_ENTRY)&_ZN6S675C53v26Ev,
  (VTBL_ENTRY)&_ZN6S675C53v27Ev,
  (VTBL_ENTRY)&_ZN6S675C53v28Ev,
  (VTBL_ENTRY)&_ZN6S675C53v29Ev,
  (VTBL_ENTRY)&_ZN6S675C53v30Ev,
  (VTBL_ENTRY)&_ZN6S675C53v31Ev,
  (VTBL_ENTRY)&_ZN6S675C53v32Ev,
  (VTBL_ENTRY)&_ZN6S675C53v33Ev,
  (VTBL_ENTRY)&_ZN6S675C53v34Ev,
  (VTBL_ENTRY)&_ZN6S675C53v35Ev,
  (VTBL_ENTRY)&_ZN6S675C53v36Ev,
  (VTBL_ENTRY)&_ZN6S675C53v37Ev,
  (VTBL_ENTRY)&_ZN6S675C53v38Ev,
  (VTBL_ENTRY)&_ZN6S675C53v39Ev,
  (VTBL_ENTRY)&_ZN6S675C53v40Ev,
  (VTBL_ENTRY)&_ZN6S675C53v41Ev,
  (VTBL_ENTRY)&_ZN6S675C53v42Ev,
  (VTBL_ENTRY)&_ZN6S675C53v43Ev,
  (VTBL_ENTRY)&_ZN6S675C53v44Ev,
  (VTBL_ENTRY)&_ZN6S675C53v45Ev,
  (VTBL_ENTRY)&_ZN6S675C53v46Ev,
  (VTBL_ENTRY)&_ZN6S675C53v47Ev,
  (VTBL_ENTRY)&_ZN6S675C53v48Ev,
  (VTBL_ENTRY)&_ZN6S675C53v49Ev,
  (VTBL_ENTRY)&_ZN6S675C53v50Ev,
  (VTBL_ENTRY)&_ZN6S675C53v51Ev,
  (VTBL_ENTRY)&_ZN6S675C53v52Ev,
  (VTBL_ENTRY)&_ZN6S675C53v53Ev,
  (VTBL_ENTRY)&_ZN6S675C53v54Ev,
  (VTBL_ENTRY)&_ZN6S675C53v55Ev,
  (VTBL_ENTRY)&_ZN6S675C53v56Ev,
  (VTBL_ENTRY)&_ZN6S675C53v57Ev,
  (VTBL_ENTRY)&_ZN6S675C53v58Ev,
  (VTBL_ENTRY)&_ZN6S675C53v59Ev,
  (VTBL_ENTRY)&_ZN6S675C53v60Ev,
  (VTBL_ENTRY)&_ZN6S675C53v61Ev,
  (VTBL_ENTRY)&_ZN6S675C53v62Ev,
  (VTBL_ENTRY)&_ZN6S675C53v63Ev,
  (VTBL_ENTRY)&_ZN6S675C53v64Ev,
  (VTBL_ENTRY)&_ZN6S675C53v65Ev,
  (VTBL_ENTRY)&_ZN6S675C53v66Ev,
  (VTBL_ENTRY)&_ZN6S675C53v67Ev,
  (VTBL_ENTRY)&_ZN6S675C53v68Ev,
  (VTBL_ENTRY)&_ZN6S675C53v69Ev,
  (VTBL_ENTRY)&_ZN6S675C43v70Ev,
  (VTBL_ENTRY)&_ZN6S675C43v71Ev,
  (VTBL_ENTRY)&_ZN6S675C33v72Ev,
  (VTBL_ENTRY)&_ZN6S675C33v73Ev,
  (VTBL_ENTRY)&_ZN6S675C33v74Ev,
  (VTBL_ENTRY)&_ZN6S675C33v75Ev,
  (VTBL_ENTRY)&_ZN6S675C33v76Ev,
  (VTBL_ENTRY)&_ZN6S675C33v77Ev,
  (VTBL_ENTRY)&_ZN6S675C33v78Ev,
  (VTBL_ENTRY)&_ZN6S675C23v81Ev,
  (VTBL_ENTRY)&_ZN6S675C23v82Ev,
  (VTBL_ENTRY)&_ZN6S675C23v83Ev,
  (VTBL_ENTRY)&_ZN6S675C23v84Ev,
  (VTBL_ENTRY)&_ZN6S675C23v85Ev,
  (VTBL_ENTRY)&_ZN6S675C23v86Ev,
  (VTBL_ENTRY)&_ZN6S675C23v87Ev,
  (VTBL_ENTRY)&_ZN6S675C23v88Ev,
  (VTBL_ENTRY)&_ZN6S675C23v89Ev,
  (VTBL_ENTRY)&_ZN6S675C23v90Ev,
  (VTBL_ENTRY)&_ZN6S675C23v91Ev,
  (VTBL_ENTRY)&_ZN6S675C23v92Ev,
  (VTBL_ENTRY)&_ZN6S675C23v93Ev,
  (VTBL_ENTRY)&_ZN6S675C23v94Ev,
  (VTBL_ENTRY)&_ZN6S675C23v95Ev,
  (VTBL_ENTRY)&_ZN6S675C23v96Ev,
  (VTBL_ENTRY)&_ZN6S675C23v97Ev,
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI6S675C2[0]),
  (VTBL_ENTRY)&_ZN9S675C8_nt3v79Ev,
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI6S675C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N6S675C2D1Ev,_ZThn112_N6S675C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N6S675C2D0Ev,_ZThn112_N6S675C2D0Ev),
  (VTBL_ENTRY)&_ZN9S675C9_nt3v80Ev,
};
extern VTBL_ENTRY _ZTI6S675C2[];
extern  VTBL_ENTRY _ZTV6S675C2[];
Class_Descriptor cd_S675C2 = {  "S675C2", // class name
  bases_S675C2, 5,
  &(vtc_S675C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(488,352), // object size
  NSPAIRA(_ZTI6S675C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV6S675C2),102, //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  S675C1  : S675C2 {
  int s675c1f0;
  virtual  ~S675C1(); // _ZN6S675C1D1Ev
  virtual void  v1(); // _ZN6S675C12v1Ev
  virtual void  v2(); // _ZN6S675C12v2Ev
  virtual void  v3(); // _ZN6S675C12v3Ev
  virtual void  v4(); // _ZN6S675C12v4Ev
  virtual void  v5(); // _ZN6S675C12v5Ev
  S675C1(); // tgen
};
//SIG(1 S675C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v70 v71} vd v72 v73 v74 v75 v76 v77 v78 FC7{ m Fp FC6} FC7 FC7 FC7} BC8{ v79} BC9{ vd v80} vd v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 v97 Fp[2] FC10{ BC11{ BC12{ BC13{ m Fp Fi[2]}}}} FC11 FC11 Fp[2] FC14{ BC15{ m FC12 Fp Fi}} Fi:1 Fi:1 Fi:1 Fi:1 Fi[8] Fi:1 FC16{ m FC6 FL} FC17{ BC15} FC18{ BC16 Fi:1}[4] Fp Fi:1} vd v1 v2 v3 v4 v5 Fi}


 S675C1 ::~S675C1(){ note_dtor("S675C1", this);}
void  S675C1 ::v1(){vfunc_called(this, "_ZN6S675C12v1Ev");}
void  S675C1 ::v2(){vfunc_called(this, "_ZN6S675C12v2Ev");}
void  S675C1 ::v3(){vfunc_called(this, "_ZN6S675C12v3Ev");}
void  S675C1 ::v4(){vfunc_called(this, "_ZN6S675C12v4Ev");}
void  S675C1 ::v5(){vfunc_called(this, "_ZN6S675C12v5Ev");}
S675C1 ::S675C1(){ note_ctor("S675C1", this);} // tgen

static void Test_S675C1()
{
  extern Class_Descriptor cd_S675C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(62,90)];
    init_test(&cd_S675C1, buf);
    S675C1 *dp, &lv = *(dp=new (buf) S675C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(488,356), "sizeof(S675C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S675C1)");
    check_base_class_offset(lv, (S675C5*)(S675C4*)(S675C3*)(S675C2*), 0, "S675C1");
    check_base_class_offset(lv, (S675C4*)(S675C3*)(S675C2*), 0, "S675C1");
    check_base_class_offset(lv, (S675C3*)(S675C2*), 0, "S675C1");
    check_base_class_offset(lv, (S675C8_nt*)(S675C2*), ABISELECT(160,108), "S675C1");
    check_base_class_offset(lv, (S675C9_nt*)(S675C2*), ABISELECT(168,112), "S675C1");
    check_base_class_offset(lv, (S675C2*), 0, "S675C1");
    check_field_offset(lv, s675c1f0, ABISELECT(484,352), "S675C1.s675c1f0");
    test_class_info(&lv, &cd_S675C1);
    dp->~S675C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS675C1(Test_S675C1, "S675C1", ABISELECT(488,356));

#else // __cplusplus

extern void _ZN6S675C1C1Ev();
extern void _ZN6S675C1D1Ev();
Name_Map name_map_S675C1[] = {
  NSPAIR(_ZN6S675C1C1Ev),
  NSPAIR(_ZN6S675C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S675C5;
extern VTBL_ENTRY _ZTI6S675C5[];
extern  VTBL_ENTRY _ZTV6S675C5[];
extern Class_Descriptor cd_S675C4;
extern VTBL_ENTRY _ZTI6S675C4[];
extern  VTBL_ENTRY _ZTV6S675C4[];
extern Class_Descriptor cd_S675C3;
extern VTBL_ENTRY _ZTI6S675C3[];
extern  VTBL_ENTRY _ZTV6S675C3[];
extern Class_Descriptor cd_S675C8_nt;
extern VTBL_ENTRY _ZTI9S675C8_nt[];
extern  VTBL_ENTRY _ZTV9S675C8_nt[];
extern Class_Descriptor cd_S675C9_nt;
extern VTBL_ENTRY _ZTI9S675C9_nt[];
extern  VTBL_ENTRY _ZTV9S675C9_nt[];
extern Class_Descriptor cd_S675C2;
extern VTBL_ENTRY _ZTI6S675C2[];
extern  VTBL_ENTRY _ZTV6S675C2[];
static Base_Class bases_S675C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S675C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S675C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S675C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S675C8_nt,    ABISELECT(160,108), //bcp->offset
    99, //bcp->virtual_function_table_offset
    2, //num_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_S675C9_nt,    ABISELECT(168,112), //bcp->offset
    102, //bcp->virtual_function_table_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_S675C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S675C1[];
extern void _ZN6S675C1D1Ev();
extern void _ZN6S675C1D0Ev();
extern void _ZN6S675C52v6Ev();
extern void _ZN6S675C52v7Ev();
extern void _ZN6S675C52v8Ev();
extern void _ZN6S675C52v9Ev();
extern void _ZN6S675C53v10Ev();
extern void _ZN6S675C53v11Ev();
extern void _ZN6S675C53v12Ev();
extern void _ZN6S675C53v13Ev();
extern void _ZN6S675C53v14Ev();
extern void _ZN6S675C53v15Ev();
extern void _ZN6S675C53v16Ev();
extern void _ZN6S675C53v17Ev();
extern void _ZN6S675C53v18Ev();
extern void _ZN6S675C53v19Ev();
extern void _ZN6S675C53v20Ev();
extern void _ZN6S675C53v21Ev();
extern void _ZN6S675C53v22Ev();
extern void _ZN6S675C53v23Ev();
extern void _ZN6S675C53v24Ev();
extern void _ZN6S675C53v25Ev();
extern void _ZN6S675C53v26Ev();
extern void _ZN6S675C53v27Ev();
extern void _ZN6S675C53v28Ev();
extern void _ZN6S675C53v29Ev();
extern void _ZN6S675C53v30Ev();
extern void _ZN6S675C53v31Ev();
extern void _ZN6S675C53v32Ev();
extern void _ZN6S675C53v33Ev();
extern void _ZN6S675C53v34Ev();
extern void _ZN6S675C53v35Ev();
extern void _ZN6S675C53v36Ev();
extern void _ZN6S675C53v37Ev();
extern void _ZN6S675C53v38Ev();
extern void _ZN6S675C53v39Ev();
extern void _ZN6S675C53v40Ev();
extern void _ZN6S675C53v41Ev();
extern void _ZN6S675C53v42Ev();
extern void _ZN6S675C53v43Ev();
extern void _ZN6S675C53v44Ev();
extern void _ZN6S675C53v45Ev();
extern void _ZN6S675C53v46Ev();
extern void _ZN6S675C53v47Ev();
extern void _ZN6S675C53v48Ev();
extern void _ZN6S675C53v49Ev();
extern void _ZN6S675C53v50Ev();
extern void _ZN6S675C53v51Ev();
extern void _ZN6S675C53v52Ev();
extern void _ZN6S675C53v53Ev();
extern void _ZN6S675C53v54Ev();
extern void _ZN6S675C53v55Ev();
extern void _ZN6S675C53v56Ev();
extern void _ZN6S675C53v57Ev();
extern void _ZN6S675C53v58Ev();
extern void _ZN6S675C53v59Ev();
extern void _ZN6S675C53v60Ev();
extern void _ZN6S675C53v61Ev();
extern void _ZN6S675C53v62Ev();
extern void _ZN6S675C53v63Ev();
extern void _ZN6S675C53v64Ev();
extern void _ZN6S675C53v65Ev();
extern void _ZN6S675C53v66Ev();
extern void _ZN6S675C53v67Ev();
extern void _ZN6S675C53v68Ev();
extern void _ZN6S675C53v69Ev();
extern void _ZN6S675C43v70Ev();
extern void _ZN6S675C43v71Ev();
extern void _ZN6S675C33v72Ev();
extern void _ZN6S675C33v73Ev();
extern void _ZN6S675C33v74Ev();
extern void _ZN6S675C33v75Ev();
extern void _ZN6S675C33v76Ev();
extern void _ZN6S675C33v77Ev();
extern void _ZN6S675C33v78Ev();
extern void _ZN6S675C23v81Ev();
extern void _ZN6S675C23v82Ev();
extern void _ZN6S675C23v83Ev();
extern void _ZN6S675C23v84Ev();
extern void _ZN6S675C23v85Ev();
extern void _ZN6S675C23v86Ev();
extern void _ZN6S675C23v87Ev();
extern void _ZN6S675C23v88Ev();
extern void _ZN6S675C23v89Ev();
extern void _ZN6S675C23v90Ev();
extern void _ZN6S675C23v91Ev();
extern void _ZN6S675C23v92Ev();
extern void _ZN6S675C23v93Ev();
extern void _ZN6S675C23v94Ev();
extern void _ZN6S675C23v95Ev();
extern void _ZN6S675C23v96Ev();
extern void _ZN6S675C23v97Ev();
extern void _ZN6S675C12v1Ev();
extern void _ZN6S675C12v2Ev();
extern void _ZN6S675C12v3Ev();
extern void _ZN6S675C12v4Ev();
extern void _ZN6S675C12v5Ev();
extern void _ZN9S675C8_nt3v79Ev();
extern void ABISELECT(_ZThn168_N6S675C1D1Ev,_ZThn112_N6S675C1D1Ev)();
extern void ABISELECT(_ZThn168_N6S675C1D0Ev,_ZThn112_N6S675C1D0Ev)();
extern void _ZN9S675C9_nt3v80Ev();
static  VTBL_ENTRY vtc_S675C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S675C1[0]),
  (VTBL_ENTRY)&_ZN6S675C1D1Ev,
  (VTBL_ENTRY)&_ZN6S675C1D0Ev,
  (VTBL_ENTRY)&_ZN6S675C52v6Ev,
  (VTBL_ENTRY)&_ZN6S675C52v7Ev,
  (VTBL_ENTRY)&_ZN6S675C52v8Ev,
  (VTBL_ENTRY)&_ZN6S675C52v9Ev,
  (VTBL_ENTRY)&_ZN6S675C53v10Ev,
  (VTBL_ENTRY)&_ZN6S675C53v11Ev,
  (VTBL_ENTRY)&_ZN6S675C53v12Ev,
  (VTBL_ENTRY)&_ZN6S675C53v13Ev,
  (VTBL_ENTRY)&_ZN6S675C53v14Ev,
  (VTBL_ENTRY)&_ZN6S675C53v15Ev,
  (VTBL_ENTRY)&_ZN6S675C53v16Ev,
  (VTBL_ENTRY)&_ZN6S675C53v17Ev,
  (VTBL_ENTRY)&_ZN6S675C53v18Ev,
  (VTBL_ENTRY)&_ZN6S675C53v19Ev,
  (VTBL_ENTRY)&_ZN6S675C53v20Ev,
  (VTBL_ENTRY)&_ZN6S675C53v21Ev,
  (VTBL_ENTRY)&_ZN6S675C53v22Ev,
  (VTBL_ENTRY)&_ZN6S675C53v23Ev,
  (VTBL_ENTRY)&_ZN6S675C53v24Ev,
  (VTBL_ENTRY)&_ZN6S675C53v25Ev,
  (VTBL_ENTRY)&_ZN6S675C53v26Ev,
  (VTBL_ENTRY)&_ZN6S675C53v27Ev,
  (VTBL_ENTRY)&_ZN6S675C53v28Ev,
  (VTBL_ENTRY)&_ZN6S675C53v29Ev,
  (VTBL_ENTRY)&_ZN6S675C53v30Ev,
  (VTBL_ENTRY)&_ZN6S675C53v31Ev,
  (VTBL_ENTRY)&_ZN6S675C53v32Ev,
  (VTBL_ENTRY)&_ZN6S675C53v33Ev,
  (VTBL_ENTRY)&_ZN6S675C53v34Ev,
  (VTBL_ENTRY)&_ZN6S675C53v35Ev,
  (VTBL_ENTRY)&_ZN6S675C53v36Ev,
  (VTBL_ENTRY)&_ZN6S675C53v37Ev,
  (VTBL_ENTRY)&_ZN6S675C53v38Ev,
  (VTBL_ENTRY)&_ZN6S675C53v39Ev,
  (VTBL_ENTRY)&_ZN6S675C53v40Ev,
  (VTBL_ENTRY)&_ZN6S675C53v41Ev,
  (VTBL_ENTRY)&_ZN6S675C53v42Ev,
  (VTBL_ENTRY)&_ZN6S675C53v43Ev,
  (VTBL_ENTRY)&_ZN6S675C53v44Ev,
  (VTBL_ENTRY)&_ZN6S675C53v45Ev,
  (VTBL_ENTRY)&_ZN6S675C53v46Ev,
  (VTBL_ENTRY)&_ZN6S675C53v47Ev,
  (VTBL_ENTRY)&_ZN6S675C53v48Ev,
  (VTBL_ENTRY)&_ZN6S675C53v49Ev,
  (VTBL_ENTRY)&_ZN6S675C53v50Ev,
  (VTBL_ENTRY)&_ZN6S675C53v51Ev,
  (VTBL_ENTRY)&_ZN6S675C53v52Ev,
  (VTBL_ENTRY)&_ZN6S675C53v53Ev,
  (VTBL_ENTRY)&_ZN6S675C53v54Ev,
  (VTBL_ENTRY)&_ZN6S675C53v55Ev,
  (VTBL_ENTRY)&_ZN6S675C53v56Ev,
  (VTBL_ENTRY)&_ZN6S675C53v57Ev,
  (VTBL_ENTRY)&_ZN6S675C53v58Ev,
  (VTBL_ENTRY)&_ZN6S675C53v59Ev,
  (VTBL_ENTRY)&_ZN6S675C53v60Ev,
  (VTBL_ENTRY)&_ZN6S675C53v61Ev,
  (VTBL_ENTRY)&_ZN6S675C53v62Ev,
  (VTBL_ENTRY)&_ZN6S675C53v63Ev,
  (VTBL_ENTRY)&_ZN6S675C53v64Ev,
  (VTBL_ENTRY)&_ZN6S675C53v65Ev,
  (VTBL_ENTRY)&_ZN6S675C53v66Ev,
  (VTBL_ENTRY)&_ZN6S675C53v67Ev,
  (VTBL_ENTRY)&_ZN6S675C53v68Ev,
  (VTBL_ENTRY)&_ZN6S675C53v69Ev,
  (VTBL_ENTRY)&_ZN6S675C43v70Ev,
  (VTBL_ENTRY)&_ZN6S675C43v71Ev,
  (VTBL_ENTRY)&_ZN6S675C33v72Ev,
  (VTBL_ENTRY)&_ZN6S675C33v73Ev,
  (VTBL_ENTRY)&_ZN6S675C33v74Ev,
  (VTBL_ENTRY)&_ZN6S675C33v75Ev,
  (VTBL_ENTRY)&_ZN6S675C33v76Ev,
  (VTBL_ENTRY)&_ZN6S675C33v77Ev,
  (VTBL_ENTRY)&_ZN6S675C33v78Ev,
  (VTBL_ENTRY)&_ZN6S675C23v81Ev,
  (VTBL_ENTRY)&_ZN6S675C23v82Ev,
  (VTBL_ENTRY)&_ZN6S675C23v83Ev,
  (VTBL_ENTRY)&_ZN6S675C23v84Ev,
  (VTBL_ENTRY)&_ZN6S675C23v85Ev,
  (VTBL_ENTRY)&_ZN6S675C23v86Ev,
  (VTBL_ENTRY)&_ZN6S675C23v87Ev,
  (VTBL_ENTRY)&_ZN6S675C23v88Ev,
  (VTBL_ENTRY)&_ZN6S675C23v89Ev,
  (VTBL_ENTRY)&_ZN6S675C23v90Ev,
  (VTBL_ENTRY)&_ZN6S675C23v91Ev,
  (VTBL_ENTRY)&_ZN6S675C23v92Ev,
  (VTBL_ENTRY)&_ZN6S675C23v93Ev,
  (VTBL_ENTRY)&_ZN6S675C23v94Ev,
  (VTBL_ENTRY)&_ZN6S675C23v95Ev,
  (VTBL_ENTRY)&_ZN6S675C23v96Ev,
  (VTBL_ENTRY)&_ZN6S675C23v97Ev,
  (VTBL_ENTRY)&_ZN6S675C12v1Ev,
  (VTBL_ENTRY)&_ZN6S675C12v2Ev,
  (VTBL_ENTRY)&_ZN6S675C12v3Ev,
  (VTBL_ENTRY)&_ZN6S675C12v4Ev,
  (VTBL_ENTRY)&_ZN6S675C12v5Ev,
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI6S675C1[0]),
  (VTBL_ENTRY)&_ZN9S675C8_nt3v79Ev,
  ABISELECT(-168,-112),
  (VTBL_ENTRY)&(_ZTI6S675C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N6S675C1D1Ev,_ZThn112_N6S675C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn168_N6S675C1D0Ev,_ZThn112_N6S675C1D0Ev),
  (VTBL_ENTRY)&_ZN9S675C9_nt3v80Ev,
};
extern VTBL_ENTRY _ZTI6S675C1[];
extern  VTBL_ENTRY _ZTV6S675C1[];
Class_Descriptor cd_S675C1 = {  "S675C1", // class name
  bases_S675C1, 6,
  &(vtc_S675C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(488,356), // object size
  NSPAIRA(_ZTI6S675C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S675C1),107, //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  S20997C6  {
  __tsi64 s20997c6f0[5];
  void  mf20997c6(); // _ZN8S20997C69mf20997c6Ev
};
//SIG(-1 S20997C6) C1{ m FL[5]}


void  S20997C6 ::mf20997c6(){}

static void Test_S20997C6()
{
  {
    init_simple_test("S20997C6");
    S20997C6 lv;
    check2(sizeof(lv), 40, "sizeof(S20997C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C6)");
    check_field_offset(lv, s20997c6f0, 0, "S20997C6.s20997c6f0");
  }
}
static Arrange_To_Call_Me vS20997C6(Test_S20997C6, "S20997C6", 40);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S20997C6[];
VTBL_ENTRY *P__ZTI8S20997C6 = _ZTI8S20997C6; 
Class_Descriptor cd_S20997C6 = {  "S20997C6", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI8S20997C6),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  S20997C7  {
  virtual void  v2(); // _ZN8S20997C72v2Ev
  ~S20997C7(); // tgen
  S20997C7(); // tgen
};
//SIG(-1 S20997C7) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20997C7C1Ev();
extern void _ZN8S20997C7D1Ev();
Name_Map name_map_S20997C7[] = {
  NSPAIR(_ZN8S20997C7C1Ev),
  NSPAIR(_ZN8S20997C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20997C7[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C7[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
Class_Descriptor cd_S20997C7 = {  "S20997C7", // class name
  0,0,//no base classes
  &(vtc_S20997C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20997C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20997C7),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  S20997C5  : virtual S20997C6 , virtual S20997C7 , S4227C37 {
  virtual  ~S20997C5(); // _ZN8S20997C5D2Ev
  S20997C5(); // tgen
};
//SIG(-1 S20997C5) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S20997C5()
{
  extern Class_Descriptor cd_S20997C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20997C5, buf);
    S20997C5 *dp, &lv = *(dp=new (buf) S20997C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20997C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C5)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20997C5");
    check_base_class_offset(lv, (S20997C7*), 0, "S20997C5");
    check_base_class_offset(lv, (S4227C37*), 0, "S20997C5");
    test_class_info(&lv, &cd_S20997C5);
    dp->~S20997C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C5(Test_S20997C5, "S20997C5", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S20997C5C1Ev();
extern void _ZN8S20997C5D2Ev();
Name_Map name_map_S20997C5[] = {
  NSPAIR(_ZN8S20997C5C1Ev),
  NSPAIR(_ZN8S20997C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S20997C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C7,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20997C5[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY vtc_S20997C5[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern VTBL_ENTRY _ZTV8S20997C5[];
static  VTT_ENTRY vtt_S20997C5[] = {
  {&(_ZTV8S20997C5[5]),  5,8},
  {&(_ZTV8S20997C5[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
Class_Descriptor cd_S20997C5 = {  "S20997C5", // class name
  bases_S20997C5, 3,
  &(vtc_S20997C5[0]), // expected_vtbl_contents
  &(vtt_S20997C5[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S20997C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20997C5),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20997C5),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  S20997C3  : virtual S10258C6_nt , virtual S20997C5 {
  virtual  ~S20997C3(); // _ZN8S20997C3D2Ev
  S20997C3(); // tgen
};
//SIG(-1 S20997C3) C1{ VBC2{ m FL[4]} VBC3{ VBC4{ m FL[5]} VBC5{ v1} BC6{ m} vd} vd}


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

static void Test_S20997C3()
{
  extern Class_Descriptor cd_S20997C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,20)];
    init_test(&cd_S20997C3, buf);
    S20997C3 *dp, &lv = *(dp=new (buf) S20997C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,76), "sizeof(S20997C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C3)");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(8,4), "S20997C3");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(40,36), "S20997C3");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*), 0, "S20997C3");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*), 0, "S20997C3");
    check_base_class_offset(lv, (S20997C5*), 0, "S20997C3");
    test_class_info(&lv, &cd_S20997C3);
    dp->~S20997C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C3(Test_S20997C3, "S20997C3", ABISELECT(80,76));

#else // __cplusplus

extern void _ZN8S20997C3C1Ev();
extern void _ZN8S20997C3D2Ev();
Name_Map name_map_S20997C3[] = {
  NSPAIR(_ZN8S20997C3C1Ev),
  NSPAIR(_ZN8S20997C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
static Base_Class bases_S20997C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20997C7,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20997C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20997C3[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C3D1Ev();
extern void _ZN8S20997C3D0Ev();
static  VTBL_ENTRY vtc_S20997C3[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C3[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C3D0Ev,
};
extern VTBL_ENTRY _ZTV8S20997C3[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__8S20997C3[] = {
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
static  VTT_ENTRY vtt_S20997C3[] = {
  {&(_ZTV8S20997C3[8]),  8,11},
  {&(_ZTV8S20997C3[8]),  8,11},
  {&(_ZTV8S20997C3[8]),  8,11},
  {&(_tg__ZTV8S20997C5__8S20997C3[5]),  5,8},
  {&(_tg__ZTV8S20997C5__8S20997C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20997C3[];
extern  VTBL_ENTRY _ZTV8S20997C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C3[];
Class_Descriptor cd_S20997C3 = {  "S20997C3", // class name
  bases_S20997C3, 5,
  &(vtc_S20997C3[0]), // expected_vtbl_contents
  &(vtt_S20997C3[0]), // expected_vtt_contents
  ABISELECT(80,76), // object size
  NSPAIRA(_ZTI8S20997C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20997C3),11, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20997C3),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C10  : S20997C7 , virtual S20997C6 , S4227C37 {
  void *s20997c10f0[10];
  ~S20997C10(); // tgen
  S20997C10(); // tgen
};
//SIG(-1 S20997C10) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S20997C10()
{
  extern Class_Descriptor cd_S20997C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S20997C10, buf);
    S20997C10 *dp, &lv = *(dp=new (buf) S20997C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S20997C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C10)");
    check_base_class_offset(lv, (S20997C7*), 0, "S20997C10");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S20997C10");
    check_base_class_offset(lv, (S4227C37*), 0, "S20997C10");
    check_field_offset(lv, s20997c10f0, ABISELECT(8,4), "S20997C10.s20997c10f0");
    test_class_info(&lv, &cd_S20997C10);
    dp->~S20997C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C10(Test_S20997C10, "S20997C10", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN9S20997C10C1Ev();
extern void _ZN9S20997C10D1Ev();
Name_Map name_map_S20997C10[] = {
  NSPAIR(_ZN9S20997C10C1Ev),
  NSPAIR(_ZN9S20997C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S20997C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C10[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C10[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C10[];
static  VTT_ENTRY vtt_S20997C10[] = {
  {&(_ZTV9S20997C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
Class_Descriptor cd_S20997C10 = {  "S20997C10", // class name
  bases_S20997C10, 3,
  &(vtc_S20997C10[0]), // expected_vtbl_contents
  &(vtt_S20997C10[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI9S20997C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20997C10),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C10),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  S20997C12  : virtual S20997C7 {
  ::S20997C10 s20997c12f0[9];
  ~S20997C12(); // tgen
  S20997C12(); // tgen
};
//SIG(-1 S20997C12) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S20997C12()
{
  extern Class_Descriptor cd_S20997C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S20997C12, buf);
    S20997C12 *dp, &lv = *(dp=new (buf) S20997C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S20997C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C12)");
    check_base_class_offset(lv, (S20997C7*), 0, "S20997C12");
    check_field_offset(lv, s20997c12f0, ABISELECT(8,4), "S20997C12.s20997c12f0");
    test_class_info(&lv, &cd_S20997C12);
    dp->~S20997C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C12(Test_S20997C12, "S20997C12", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN9S20997C12C1Ev();
extern void _ZN9S20997C12D1Ev();
Name_Map name_map_S20997C12[] = {
  NSPAIR(_ZN9S20997C12C1Ev),
  NSPAIR(_ZN9S20997C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
static Base_Class bases_S20997C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    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 _ZTI9S20997C12[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C12[];
static  VTT_ENTRY vtt_S20997C12[] = {
  {&(_ZTV9S20997C12[4]),  4,5},
  {&(_ZTV9S20997C12[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
Class_Descriptor cd_S20997C12 = {  "S20997C12", // class name
  bases_S20997C12, 1,
  &(vtc_S20997C12[0]), // expected_vtbl_contents
  &(vtt_S20997C12[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI9S20997C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20997C12),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C12),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  S20997C13  : S20997C5 {
  virtual  ~S20997C13(); // _ZN9S20997C13D2Ev
  S20997C13(); // tgen
};
//SIG(-1 S20997C13) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S20997C13()
{
  extern Class_Descriptor cd_S20997C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20997C13, buf);
    S20997C13 *dp, &lv = *(dp=new (buf) S20997C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20997C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C13)");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(8,4), "S20997C13");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*), 0, "S20997C13");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*), 0, "S20997C13");
    check_base_class_offset(lv, (S20997C5*), 0, "S20997C13");
    test_class_info(&lv, &cd_S20997C13);
    dp->~S20997C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C13(Test_S20997C13, "S20997C13", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S20997C13C1Ev();
extern void _ZN9S20997C13D2Ev();
Name_Map name_map_S20997C13[] = {
  NSPAIR(_ZN9S20997C13C1Ev),
  NSPAIR(_ZN9S20997C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
static Base_Class bases_S20997C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C13[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY vtc_S20997C13[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern VTBL_ENTRY _ZTV9S20997C13[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C13[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
static  VTT_ENTRY vtt_S20997C13[] = {
  {&(_ZTV9S20997C13[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C13[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C13[5]),  5,8},
  {&(_ZTV9S20997C13[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
Class_Descriptor cd_S20997C13 = {  "S20997C13", // class name
  bases_S20997C13, 4,
  &(vtc_S20997C13[0]), // expected_vtbl_contents
  &(vtt_S20997C13[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S20997C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20997C13),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C13),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  S20997C11  : virtual S4227C37 , S20997C12 , S20997C5 , S20997C13 {
  ~S20997C11(); // tgen
  S20997C11(); // tgen
};
//SIG(-1 S20997C11) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S20997C11()
{
  extern Class_Descriptor cd_S20997C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S20997C11, buf);
    S20997C11 *dp, &lv = *(dp=new (buf) S20997C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S20997C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C11)");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S20997C11");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*), 0, "S20997C11");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*), 0, "S20997C11");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*), 0, "S20997C11");
    check_base_class_offset(lv, (S20997C12*), 0, "S20997C11");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(1176,768), "S20997C11");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*), ABISELECT(1176,768), "S20997C11");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*), ABISELECT(1160,760), "S20997C11");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*), ABISELECT(1160,760), "S20997C11");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*), ABISELECT(1168,764), "S20997C11");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*), ABISELECT(1168,764), "S20997C11");
    check_base_class_offset(lv, (S20997C13*), ABISELECT(1168,764), "S20997C11");
    test_class_info(&lv, &cd_S20997C11);
    dp->~S20997C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C11(Test_S20997C11, "S20997C11", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN9S20997C11C1Ev();
extern void _ZN9S20997C11D1Ev();
Name_Map name_map_S20997C11[] = {
  NSPAIR(_ZN9S20997C11C1Ev),
  NSPAIR(_ZN9S20997C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
static Base_Class bases_S20997C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20997C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C11[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY vtc_S20997C11[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S20997C11[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C11[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C5__9S20997C11[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C13__A1__9S20997C11[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C13__A1__9S20997C11[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C13__9S20997C11[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C11[] = {
  {&(_ZTV9S20997C11[6]),  6,25},
  {&(_tg__ZTV9S20997C12__9S20997C11[4]),  4,5},
  {&(_tg__ZTV9S20997C12__9S20997C11[4]),  4,5},
  {&(_tg__ZTV8S20997C5__9S20997C11[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C5__9S20997C11[3]),  3,4},
  {&(_tg__ZTV9S20997C13__9S20997C11[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C13__A1__9S20997C11[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C13__A1__9S20997C11[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C13__9S20997C11[3]),  3,4},
  {&(_ZTV9S20997C11[6]),  6,25},
  {&(_ZTV9S20997C11[14]),  14,25},
  {&(_ZTV9S20997C11[22]),  22,25},
};
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
Class_Descriptor cd_S20997C11 = {  "S20997C11", // class name
  bases_S20997C11, 9,
  &(vtc_S20997C11[0]), // expected_vtbl_contents
  &(vtt_S20997C11[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI9S20997C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20997C11),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C11),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  S20997C9  : virtual S20997C7 , S20997C10 , virtual S20997C11 {
  virtual  ~S20997C9(); // _ZN8S20997C9D2Ev
  S20997C9(); // tgen
};
//SIG(-1 S20997C9) C1{ VBC2{ v1} BC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC5 BC7{ VBC2 FC3[9]} BC8{ VBC4 VBC2 BC5 vd} BC9{ BC8 vd}} vd}


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

static void Test_S20997C9()
{
  extern Class_Descriptor cd_S20997C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(165,215)];
    init_test(&cd_S20997C9, buf);
    S20997C9 *dp, &lv = *(dp=new (buf) S20997C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1312,856), "sizeof(S20997C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C9)");
    /*is_ambiguous_... S20997C9::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*), ABISELECT(128,84), "S20997C9");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), ABISELECT(128,84), "S20997C9");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), ABISELECT(128,84), "S20997C9");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(128,84), "S20997C9");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*), 0, "S20997C9");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*), ABISELECT(88,44), "S20997C9");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(88,44), "S20997C9");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(88,44), "S20997C9");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*), 0, "S20997C9");
    check_base_class_offset(lv, (S20997C10*), 0, "S20997C9");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), ABISELECT(1304,852), "S20997C9");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(128,84), "S20997C9");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(1288,844), "S20997C9");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(1288,844), "S20997C9");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1296,848), "S20997C9");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1296,848), "S20997C9");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(1296,848), "S20997C9");
    check_base_class_offset(lv, (S20997C11*), ABISELECT(128,84), "S20997C9");
    test_class_info(&lv, &cd_S20997C9);
    dp->~S20997C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C9(Test_S20997C9, "S20997C9", ABISELECT(1312,856));

#else // __cplusplus

extern void _ZN8S20997C9C1Ev();
extern void _ZN8S20997C9D2Ev();
Name_Map name_map_S20997C9[] = {
  NSPAIR(_ZN8S20997C9C1Ev),
  NSPAIR(_ZN8S20997C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
static Base_Class bases_S20997C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20997C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C12,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1288,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1288,844), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1296,848), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1296,848), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(128,84), //bcp->offset
    9, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20997C9[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S20997C9D1Ev,_ZThn84_N8S20997C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S20997C9D0Ev,_ZThn84_N8S20997C9D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY vtc_S20997C9[] = {
  ABISELECT(1304,852),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
  ABISELECT(-128,-84),
  -40,
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S20997C9[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__8S20997C9[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C9[] = {
  -40,
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__8S20997C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C9[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__8S20997C9[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A1__8S20997C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__8S20997C9[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__8S20997C9[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__8S20997C9[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__8S20997C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
static  VTT_ENTRY vtt_S20997C9[] = {
  {&(_ZTV8S20997C9[6]),  6,35},
  {&(_tg__ZTV9S20997C10__8S20997C9[3]),  3,4},
  {&(_ZTV8S20997C9[16]),  16,35},
  {&(_ZTV8S20997C9[16]),  16,35},
  {&(_ZTV8S20997C9[24]),  24,35},
  {&(_ZTV8S20997C9[32]),  32,35},
  {&(_tg__ZTV9S20997C11__8S20997C9[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__8S20997C9[4]),  4,5},
  {&(_tg__ZTV9S20997C129S20997C11__8S20997C9[4]),  4,5},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C9[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__8S20997C9[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C9[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A1__8S20997C9[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__8S20997C9[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__8S20997C9[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C9[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C11__8S20997C9[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__8S20997C9[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C9D0Ev,_ZThn84_N8S20997C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C9D1Ev,_ZThn84_N8S20997C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C9 = {  "S20997C9", // class name
  bases_S20997C9, 13,
  &(vtc_S20997C9[0]), // expected_vtbl_contents
  &(vtt_S20997C9[0]), // expected_vtt_contents
  ABISELECT(1312,856), // object size
  NSPAIRA(_ZTI8S20997C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20997C9),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20997C9),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C2  : virtual S20997C3 , S20997C9 , S20997C6 , virtual S20997C13 {
  ~S20997C2(); // tgen
  S20997C2(); // tgen
};
//SIG(-1 S20997C2) C1{ VBC2{ VBC3{ m FL[4]} VBC4{ VBC5{ m FL[5]} VBC6{ v1} BC7{ m} vd} vd} BC8{ VBC6 BC9{ BC6 VBC5 BC7 Fp[10]} VBC10{ VBC7 BC11{ VBC6 FC9[9]} BC4 BC12{ BC4 vd}} vd} BC5 VBC12}


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

static void Test_S20997C2()
{
  extern Class_Descriptor cd_S20997C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(176,235)];
    init_test(&cd_S20997C2, buf);
    S20997C2 *dp, &lv = *(dp=new (buf) S20997C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1400,936), "sizeof(S20997C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C2)");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C3*), ABISELECT(136,88), "S20997C2");
    /*is_ambiguous_... S20997C2::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(168,120), "S20997C2");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C9*), ABISELECT(168,120), "S20997C2");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(168,120), "S20997C2");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(168,120), "S20997C2");
    /*is_ambiguous_... S20997C2::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*), ABISELECT(168,120), "S20997C2");
    /*is_ambiguous_... S20997C2::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*), ABISELECT(128,84), "S20997C2");
    /*is_ambiguous_... S20997C9::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C9*), ABISELECT(128,84), "S20997C2");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), ABISELECT(128,84), "S20997C2");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), ABISELECT(128,84), "S20997C2");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(128,84), "S20997C2");
    /*is_ambiguous_... S20997C2::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*), ABISELECT(128,84), "S20997C2");
    /*is_ambiguous_... S20997C2::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*), ABISELECT(128,84), "S20997C2");
    check_base_class_offset(lv, (S20997C5*)(S20997C3*), ABISELECT(128,84), "S20997C2");
    check_base_class_offset(lv, (S20997C3*), ABISELECT(128,84), "S20997C2");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C9*), 0, "S20997C2");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C9*), 0, "S20997C2");
    check_base_class_offset(lv, (S20997C10*)(S20997C9*), 0, "S20997C2");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), ABISELECT(1384,928), "S20997C2");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(208,160), "S20997C2");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(1368,920), "S20997C2");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(1368,920), "S20997C2");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1376,924), "S20997C2");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1376,924), "S20997C2");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(1376,924), "S20997C2");
    check_base_class_offset(lv, (S20997C11*)(S20997C9*), ABISELECT(208,160), "S20997C2");
    check_base_class_offset(lv, (S20997C9*), 0, "S20997C2");
    /*is_ambiguous_... S20997C2::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S20997C2");
    /*is_ambiguous_... S20997C2::S20997C13 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*), ABISELECT(1392,932), "S20997C2");
    /*is_ambiguous_... S20997C2::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C13*), ABISELECT(1392,932), "S20997C2");
    /*is_ambiguous_... S20997C2::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C13*), ABISELECT(1392,932), "S20997C2");
    test_class_info(&lv, &cd_S20997C2);
    dp->~S20997C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C2(Test_S20997C2, "S20997C2", ABISELECT(1400,936));

#else // __cplusplus

extern void _ZN8S20997C2C1Ev();
extern void _ZN8S20997C2D1Ev();
Name_Map name_map_S20997C2[] = {
  NSPAIR(_ZN8S20997C2C1Ev),
  NSPAIR(_ZN8S20997C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C3;
extern VTBL_ENTRY _ZTI8S20997C3[];
extern  VTBL_ENTRY _ZTV8S20997C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C3[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
extern Class_Descriptor cd_S20997C9;
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
static Base_Class bases_S20997C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C6_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
    5, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(128,84), //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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C3,    ABISELECT(128,84), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1384,928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(208,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1368,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(1368,920), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1376,924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(1376,924), //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
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1376,924), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(208,160), //bcp->offset
    24, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20997C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1392,932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1392,932), //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
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1392,932), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20997C2[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C2D1Ev();
extern void _ZN8S20997C2D0Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20997C2D1Ev,_ZThn84_N8S20997C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20997C2D0Ev,_ZThn84_N8S20997C2D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C2D1Ev,_ZTv0_n28_N8S20997C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S20997C2D1Ev,_ZThn160_N8S20997C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C2D0Ev,_ZTv0_n28_N8S20997C2D0Ev)();
extern void ABISELECT(_ZThn208_N8S20997C2D0Ev,_ZThn160_N8S20997C2D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C2D1Ev,_ZTvn760_n28_N8S20997C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C2D0Ev,_ZTvn760_n28_N8S20997C2D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C2D1Ev,_ZTvn764_n28_N8S20997C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C2D0Ev,_ZTvn764_n28_N8S20997C2D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev)();
extern void ABISELECT(_ZThn1392_N8S20997C2D1Ev,_ZThn932_N8S20997C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev)();
extern void ABISELECT(_ZThn1392_N8S20997C2D0Ev,_ZThn932_N8S20997C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20997C2[] = {
  ABISELECT(1392,932),
  ABISELECT(128,84),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(1384,928),
  ABISELECT(208,160),
  ABISELECT(128,84),
  ABISELECT(168,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C2D0Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-128,-84),
  0,
  ABISELECT(40,36),
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev),
  ABISELECT(-208,-160),
  -40,
  ABISELECT(1176,768),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C2D1Ev,_ZTv0_n28_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C2D0Ev,_ZTv0_n28_N8S20997C2D0Ev),
  ABISELECT(-1240,-836),
  ABISELECT(-1200,-800),
  ABISELECT(-1240,-836),
  ABISELECT(-1368,-920),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C2D1Ev,_ZTvn760_n28_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C2D0Ev,_ZTvn760_n28_N8S20997C2D0Ev),
  ABISELECT(-1248,-840),
  ABISELECT(-1208,-804),
  ABISELECT(-1248,-840),
  ABISELECT(-1376,-924),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C2D1Ev,_ZTvn764_n28_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C2D0Ev,_ZTvn764_n28_N8S20997C2D0Ev),
  ABISELECT(-1392,-932),
  ABISELECT(-1264,-848),
  ABISELECT(-1224,-812),
  ABISELECT(-1264,-848),
  ABISELECT(-1392,-932),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20997C2[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C9__8S20997C2[] = {
  ABISELECT(1384,928),
  ABISELECT(208,160),
  ABISELECT(128,84),
  ABISELECT(168,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C108S20997C9__8S20997C2[] = {
  ABISELECT(168,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C9__8S20997C2[] = {
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZThn208_N8S20997C9D1Ev,_ZThn160_N8S20997C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
extern void ABISELECT(_ZThn208_N8S20997C9D0Ev,_ZThn160_N8S20997C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C9__8S20997C2[] = {
  ABISELECT(-208,-160),
  -40,
  ABISELECT(1176,768),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C9__8S20997C2[] = {
  ABISELECT(-1240,-836),
  ABISELECT(-1200,-800),
  ABISELECT(-1240,-836),
  ABISELECT(-1368,-920),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C9__8S20997C2[] = {
  ABISELECT(-1248,-840),
  ABISELECT(-1208,-804),
  ABISELECT(-1248,-840),
  ABISELECT(-1376,-924),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev)();
extern void _ZN8S20997C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev)();
extern void _ZN8S20997C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__8S20997C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C3[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__8S20997C2[] = {
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C2[] = {
  -40,
  ABISELECT(1176,768),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__8S20997C2[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C129S20997C11__8S20997C2[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__A1__8S20997C2[] = {
  ABISELECT(-1240,-836),
  ABISELECT(-1200,-800),
  ABISELECT(-1240,-836),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__A1__8S20997C2[] = {
  0,
  ABISELECT(1240,836),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C2[] = {
  ABISELECT(-1248,-840),
  ABISELECT(-1208,-804),
  ABISELECT(-1248,-840),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A2__8S20997C2[] = {
  ABISELECT(-1248,-840),
  ABISELECT(-1208,-804),
  ABISELECT(-1248,-840),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A2__8S20997C2[] = {
  0,
  ABISELECT(1248,840),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__8S20997C2[] = {
  0,
  ABISELECT(1248,840),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C11__8S20997C2[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__8S20997C2[] = {
  ABISELECT(-1240,-836),
  ABISELECT(-1200,-800),
  ABISELECT(-1240,-836),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__8S20997C2[] = {
  ABISELECT(-1248,-840),
  ABISELECT(-1208,-804),
  ABISELECT(-1248,-840),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C13__A1__8S20997C2[] = {
  ABISELECT(-1264,-848),
  ABISELECT(-1224,-812),
  ABISELECT(-1264,-848),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C13__A3__8S20997C2[] = {
  ABISELECT(-1264,-848),
  ABISELECT(-1224,-812),
  ABISELECT(-1264,-848),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C13__A3__8S20997C2[] = {
  0,
  ABISELECT(1264,848),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C13__A1__8S20997C2[] = {
  0,
  ABISELECT(1264,848),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C2[] = {
  {&(_ZTV8S20997C2[10]),  10,59},
  {&(_tg__ZTV8S20997C9__8S20997C2[6]),  6,9},
  {&(_tg__ZTV9S20997C108S20997C9__8S20997C2[3]),  3,4},
  {&(_tg__ZTV8S20997C7__8S20997C9__8S20997C2[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C9__8S20997C2[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C9__8S20997C2[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C9__8S20997C2[5]),  5,8},
  {&(_ZTV8S20997C2[21]),  21,59},
  {&(_ZTV8S20997C2[21]),  21,59},
  {&(_ZTV8S20997C2[21]),  21,59},
  {&(_ZTV8S20997C2[31]),  31,59},
  {&(_ZTV8S20997C2[39]),  39,59},
  {&(_ZTV8S20997C2[47]),  47,59},
  {&(_ZTV8S20997C2[56]),  56,59},
  {&(_tg__ZTV8S20997C3__8S20997C2[8]),  8,11},
  {&(_tg__ZTV8S20997C3__8S20997C2[8]),  8,11},
  {&(_tg__ZTV8S20997C3__8S20997C2[8]),  8,11},
  {&(_tg__ZTV8S20997C5__8S20997C2[5]),  5,8},
  {&(_tg__ZTV8S20997C5__8S20997C2[5]),  5,8},
  {&(_tg__ZTV9S20997C11__8S20997C2[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__8S20997C2[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C129S20997C11__8S20997C2[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__A1__8S20997C2[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__A1__8S20997C2[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C2[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A2__8S20997C2[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A2__8S20997C2[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__8S20997C2[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C11__8S20997C2[3]),  3,4},
  {&(_tg__ZTV8S20997C5__9S20997C11__8S20997C2[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__8S20997C2[5]),  5,8},
  {&(_tg__ZTV9S20997C13__A1__8S20997C2[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C13__A3__8S20997C2[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C13__A3__8S20997C2[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C13__A1__8S20997C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20997C2[];
extern  VTBL_ENTRY _ZTV8S20997C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C2[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20997C9D0Ev,_ZThn160_N8S20997C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20997C9D1Ev,_ZThn160_N8S20997C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C2D0Ev,_ZTv0_n28_N8S20997C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20997C2D0Ev,_ZThn160_N8S20997C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C2D1Ev,_ZTv0_n28_N8S20997C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20997C2D1Ev,_ZThn160_N8S20997C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S20997C2D0Ev,_ZThn932_N8S20997C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C2D0Ev,_ZThn84_N8S20997C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S20997C2D1Ev,_ZThn932_N8S20997C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C2D1Ev,_ZThn84_N8S20997C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C2 = {  "S20997C2", // class name
  bases_S20997C2, 22,
  &(vtc_S20997C2[0]), // expected_vtbl_contents
  &(vtt_S20997C2[0]), // expected_vtt_contents
  ABISELECT(1400,936), // object size
  NSPAIRA(_ZTI8S20997C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20997C2),59, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20997C2),35, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C17  : virtual S20997C10 {
  ~S20997C17(); // tgen
  S20997C17(); // tgen
};
//SIG(-1 S20997C17) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]}}


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

static void Test_S20997C17()
{
  extern Class_Descriptor cd_S20997C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S20997C17, buf);
    S20997C17 *dp, &lv = *(dp=new (buf) S20997C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S20997C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C17)");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*), ABISELECT(8,4), "S20997C17");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*), ABISELECT(96,48), "S20997C17");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*), ABISELECT(8,4), "S20997C17");
    check_base_class_offset(lv, (S20997C10*), ABISELECT(8,4), "S20997C17");
    test_class_info(&lv, &cd_S20997C17);
    dp->~S20997C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C17(Test_S20997C17, "S20997C17", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN9S20997C17C1Ev();
extern void _ZN9S20997C17D1Ev();
Name_Map name_map_S20997C17[] = {
  NSPAIR(_ZN9S20997C17C1Ev),
  NSPAIR(_ZN9S20997C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
static Base_Class bases_S20997C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    ABISELECT(8,4), //bcp->offset
    4, //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 _ZTI9S20997C17[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C17[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C17[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C17[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C17[] = {
  {&(_ZTV9S20997C17[4]),  4,9},
  {&(_ZTV9S20997C17[8]),  8,9},
  {&(_tg__ZTV9S20997C10__9S20997C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C17[];
extern  VTBL_ENTRY _ZTV9S20997C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C17[];
Class_Descriptor cd_S20997C17 = {  "S20997C17", // class name
  bases_S20997C17, 4,
  &(vtc_S20997C17[0]), // expected_vtbl_contents
  &(vtt_S20997C17[0]), // expected_vtt_contents
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI9S20997C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20997C17),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C17),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C19  : virtual S4227C37 , virtual S20997C5 {
  virtual void  v3(); // _ZN9S20997C192v3Ev
  ~S20997C19(); // tgen
  S20997C19(); // tgen
};
//SIG(-1 S20997C19) C1{ VBC2{ m} VBC3{ VBC4{ m FL[5]} VBC5{ v2} BC2 vd} v1}


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

static void Test_S20997C19()
{
  extern Class_Descriptor cd_S20997C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20997C19, buf);
    S20997C19 *dp, &lv = *(dp=new (buf) S20997C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20997C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C19)");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), ABISELECT(8,4), "S20997C19");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(8,4), "S20997C19");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*), 0, "S20997C19");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*), 0, "S20997C19");
    check_base_class_offset(lv, (S20997C5*), 0, "S20997C19");
    test_class_info(&lv, &cd_S20997C19);
    dp->~S20997C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C19(Test_S20997C19, "S20997C19", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S20997C19C1Ev();
extern void _ZN9S20997C19D1Ev();
Name_Map name_map_S20997C19[] = {
  NSPAIR(_ZN9S20997C19C1Ev),
  NSPAIR(_ZN9S20997C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
static Base_Class bases_S20997C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20997C7,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20997C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C19[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C19D1Ev();
extern void _ZN9S20997C19D0Ev();
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY vtc_S20997C19[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern VTBL_ENTRY _ZTV9S20997C19[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C19[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
static  VTT_ENTRY vtt_S20997C19[] = {
  {&(_ZTV9S20997C19[8]),  8,12},
  {&(_ZTV9S20997C19[8]),  8,12},
  {&(_ZTV9S20997C19[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C19[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C19[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
Class_Descriptor cd_S20997C19 = {  "S20997C19", // class name
  bases_S20997C19, 5,
  &(vtc_S20997C19[0]), // expected_vtbl_contents
  &(vtt_S20997C19[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S20997C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20997C19),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C19),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C18  : virtual S20997C7 , virtual S20997C5 , virtual S10258C6_nt , virtual S20997C19 , virtual S20997C12 {
  virtual  ~S20997C18(); // _ZN9S20997C18D2Ev
  S20997C18(); // tgen
};
//SIG(-1 S20997C18) C1{ VBC2{ v1} VBC3{ VBC4{ m FL[5]} VBC2 BC5{ m} vd} VBC6{ m FL[4]} VBC7{ VBC5 VBC3 v2} VBC8{ VBC2 FC9{ BC2 VBC4 BC5 Fp[10]}[9]} vd}


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

static void Test_S20997C18()
{
  extern Class_Descriptor cd_S20997C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(156,210)];
    init_test(&cd_S20997C18, buf);
    S20997C18 *dp, &lv = *(dp=new (buf) S20997C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1240,836), "sizeof(S20997C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C18)");
    check_base_class_offset(lv, (S20997C7*), 0, "S20997C18");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*), 0, "S20997C18");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*), 0, "S20997C18");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(8,4), "S20997C18");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*), 0, "S20997C18");
    check_base_class_offset(lv, (S20997C5*), 0, "S20997C18");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*), 0, "S20997C18");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(48,44), "S20997C18");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*), ABISELECT(80,76), "S20997C18");
    check_base_class_offset(lv, (S20997C19*), 0, "S20997C18");
    check_base_class_offset(lv, (S20997C12*), ABISELECT(80,76), "S20997C18");
    test_class_info(&lv, &cd_S20997C18);
    dp->~S20997C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C18(Test_S20997C18, "S20997C18", ABISELECT(1240,836));

#else // __cplusplus

extern void _ZN9S20997C18C1Ev();
extern void _ZN9S20997C18D2Ev();
Name_Map name_map_S20997C18[] = {
  NSPAIR(_ZN9S20997C18C1Ev),
  NSPAIR(_ZN9S20997C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
static Base_Class bases_S20997C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(80,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20997C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C12,    ABISELECT(80,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C18[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C18D1Ev();
extern void _ZN9S20997C18D0Ev();
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C18[] = {
  ABISELECT(80,76),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C18[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C18[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__9S20997C18[] = {
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C18[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C12__9S20997C18[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C18[] = {
  {&(_ZTV9S20997C18[12]),  12,21},
  {&(_ZTV9S20997C18[12]),  12,21},
  {&(_ZTV9S20997C18[12]),  12,21},
  {&(_ZTV9S20997C18[12]),  12,21},
  {&(_ZTV9S20997C18[20]),  20,21},
  {&(_tg__ZTV8S20997C5__9S20997C18[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C18[5]),  5,8},
  {&(_tg__ZTV9S20997C19__9S20997C18[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C18[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C18[8]),  8,12},
  {&(_tg__ZTV9S20997C12__9S20997C18[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C12__9S20997C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C18[];
extern  VTBL_ENTRY _ZTV9S20997C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C18[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C18 = {  "S20997C18", // class name
  bases_S20997C18, 8,
  &(vtc_S20997C18[0]), // expected_vtbl_contents
  &(vtt_S20997C18[0]), // expected_vtt_contents
  ABISELECT(1240,836), // object size
  NSPAIRA(_ZTI9S20997C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20997C18),21, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C18),12, //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  S20997C21  : S20997C6 , S20997C7 {
  ~S20997C21(); // tgen
  S20997C21(); // tgen
};
//SIG(-1 S20997C21) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S20997C21()
{
  extern Class_Descriptor cd_S20997C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20997C21, buf);
    S20997C21 *dp, &lv = *(dp=new (buf) S20997C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20997C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C21)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20997C21");
    check_base_class_offset(lv, (S20997C7*), 0, "S20997C21");
    test_class_info(&lv, &cd_S20997C21);
    dp->~S20997C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C21(Test_S20997C21, "S20997C21", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S20997C21C1Ev();
extern void _ZN9S20997C21D1Ev();
Name_Map name_map_S20997C21[] = {
  NSPAIR(_ZN9S20997C21C1Ev),
  NSPAIR(_ZN9S20997C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
static Base_Class bases_S20997C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C7,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C21[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C21[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
Class_Descriptor cd_S20997C21 = {  "S20997C21", // class name
  bases_S20997C21, 2,
  &(vtc_S20997C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S20997C21),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20997C21),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C20  : S20997C21 , S20997C10 {
  ~S20997C20(); // tgen
  S20997C20(); // tgen
};
//SIG(-1 S20997C20) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} BC5{ BC4 VBC3 BC6{ m} Fp[10]}}


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

static void Test_S20997C20()
{
  extern Class_Descriptor cd_S20997C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S20997C20, buf);
    S20997C20 *dp, &lv = *(dp=new (buf) S20997C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S20997C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C20)");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*), ABISELECT(8,4), "S20997C20");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*), 0, "S20997C20");
    check_base_class_offset(lv, (S20997C21*), 0, "S20997C20");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*), ABISELECT(48,44), "S20997C20");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*), ABISELECT(136,88), "S20997C20");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*), ABISELECT(48,44), "S20997C20");
    check_base_class_offset(lv, (S20997C10*), ABISELECT(48,44), "S20997C20");
    test_class_info(&lv, &cd_S20997C20);
    dp->~S20997C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C20(Test_S20997C20, "S20997C20", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN9S20997C20C1Ev();
extern void _ZN9S20997C20D1Ev();
Name_Map name_map_S20997C20[] = {
  NSPAIR(_ZN9S20997C20C1Ev),
  NSPAIR(_ZN9S20997C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
static Base_Class bases_S20997C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20997C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20997C7,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    6, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(48,44), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C20[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C20[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(88,44),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C20[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C20[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C20[] = {
  {&(_ZTV9S20997C20[3]),  3,8},
  {&(_tg__ZTV9S20997C10__9S20997C20[3]),  3,4},
  {&(_ZTV9S20997C20[7]),  7,8},
};
extern VTBL_ENTRY _ZTI9S20997C20[];
extern  VTBL_ENTRY _ZTV9S20997C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C20[];
Class_Descriptor cd_S20997C20 = {  "S20997C20", // class name
  bases_S20997C20, 7,
  &(vtc_S20997C20[0]), // expected_vtbl_contents
  &(vtt_S20997C20[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI9S20997C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20997C20),8, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C20),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  S20997C16  : virtual S20997C17 , S20997C7 , virtual S10258C6_nt , virtual S20997C18 , S20997C20 {
  ~S20997C16(); // tgen
  S20997C16(); // tgen
};
//SIG(-1 S20997C16) C1{ VBC2{ VBC3{ BC4{ v1} VBC5{ m FL[5]} BC6{ m} Fp[10]}} BC4 VBC7{ m FL[4]} VBC8{ VBC4 VBC9{ VBC5 VBC4 BC6 vd} VBC7 VBC10{ VBC6 VBC9 v2} VBC11{ VBC4 FC3[9]} vd} BC12{ BC13{ BC5 BC4} BC3}}


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

static void Test_S20997C16()
{
  extern Class_Descriptor cd_S20997C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(186,245)];
    init_test(&cd_S20997C16, buf);
    S20997C16 *dp, &lv = *(dp=new (buf) S20997C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1480,976), "sizeof(S20997C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C16)");
    /*is_ambiguous_... S20997C16::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*), ABISELECT(152,96), "S20997C16");
    /*is_ambiguous_... S20997C16::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*), ABISELECT(240,140), "S20997C16");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(240,140), "S20997C16");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C20*), ABISELECT(240,140), "S20997C16");
    /*is_ambiguous_... S20997C16::S20997C10 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*), ABISELECT(152,96), "S20997C16");
    check_base_class_offset(lv, (S20997C10*)(S20997C17*), ABISELECT(152,96), "S20997C16");
    check_base_class_offset(lv, (S20997C17*), ABISELECT(144,92), "S20997C16");
    /*is_ambiguous_... S20997C16::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*), 0, "S20997C16");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(280,180), "S20997C16");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C18*), ABISELECT(280,180), "S20997C16");
    check_base_class_offset(lv, (S20997C7*)(S20997C18*), ABISELECT(312,212), "S20997C16");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*), ABISELECT(312,212), "S20997C16");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*), ABISELECT(312,212), "S20997C16");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*), ABISELECT(312,212), "S20997C16");
    check_base_class_offset(lv, (S20997C5*)(S20997C18*), ABISELECT(312,212), "S20997C16");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*), ABISELECT(312,212), "S20997C16");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*), 0, "S20997C16");
    check_base_class_offset(lv, (S20997C19*)(S20997C18*), ABISELECT(312,212), "S20997C16");
    check_base_class_offset(lv, (S20997C12*)(S20997C18*), ABISELECT(320,216), "S20997C16");
    check_base_class_offset(lv, (S20997C18*), ABISELECT(312,212), "S20997C16");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C20*), ABISELECT(16,8), "S20997C16");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C20*), ABISELECT(8,4), "S20997C16");
    check_base_class_offset(lv, (S20997C21*)(S20997C20*), ABISELECT(8,4), "S20997C16");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C20*), ABISELECT(56,48), "S20997C16");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C20*), ABISELECT(56,48), "S20997C16");
    check_base_class_offset(lv, (S20997C10*)(S20997C20*), ABISELECT(56,48), "S20997C16");
    check_base_class_offset(lv, (S20997C20*), ABISELECT(8,4), "S20997C16");
    test_class_info(&lv, &cd_S20997C16);
    dp->~S20997C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C16(Test_S20997C16, "S20997C16", ABISELECT(1480,976));

#else // __cplusplus

extern void _ZN9S20997C16C1Ev();
extern void _ZN9S20997C16D1Ev();
Name_Map name_map_S20997C16[] = {
  NSPAIR(_ZN9S20997C16C1Ev),
  NSPAIR(_ZN9S20997C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C17;
extern VTBL_ENTRY _ZTI9S20997C17[];
extern  VTBL_ENTRY _ZTV9S20997C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C17[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S20997C18;
extern VTBL_ENTRY _ZTI9S20997C18[];
extern  VTBL_ENTRY _ZTV9S20997C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C18[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C20;
extern VTBL_ENTRY _ZTI9S20997C20[];
extern  VTBL_ENTRY _ZTV9S20997C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C20[];
static Base_Class bases_S20997C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(152,96), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20997C17,    ABISELECT(144,92), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10258C6_nt,    ABISELECT(280,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C7,    ABISELECT(312,212), //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
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(312,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
    9, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(312,212), //bcp->offset
    -1, //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
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C19,    ABISELECT(312,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(320,216), //bcp->offset
    48, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20997C18,    ABISELECT(312,212), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20997C21,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(56,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20997C20,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //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 _ZTI9S20997C16[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C16D1Ev();
extern void _ZN9S20997C16D0Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev)();
extern void ABISELECT(_ZThn312_N9S20997C16D1Ev,_ZThn212_N9S20997C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev)();
extern void ABISELECT(_ZThn312_N9S20997C16D0Ev,_ZThn212_N9S20997C16D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C16[] = {
  ABISELECT(320,216),
  0,
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(280,180),
  ABISELECT(240,140),
  ABISELECT(152,96),
  ABISELECT(144,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D0Ev,
  ABISELECT(232,136),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(184,92),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(96,48),
  ABISELECT(8,4),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-312,-212),
  ABISELECT(-312,-212),
  0,
  -72,
  0,
  ABISELECT(-312,-212),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C16[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C16[] = {
  ABISELECT(232,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A1__9S20997C16[] = {
  ABISELECT(184,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C20__9S20997C16[] = {
  ABISELECT(184,92),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C16[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C17__9S20997C16[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C16[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void _ZN9S20997C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void _ZN9S20997C18D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C16[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-312,-212),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C18__9S20997C16[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C16[] = {
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__9S20997C16[] = {
  0,
  ABISELECT(-312,-212),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C16[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C12__9S20997C16[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C16[] = {
  {&(_ZTV9S20997C16[12]),  12,53},
  {&(_tg__ZTV9S20997C20__9S20997C16[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C20__A1__9S20997C16[3]),  3,4},
  {&(_tg__ZTV9S20997C10__9S20997C20__9S20997C16[3]),  3,4},
  {&(_ZTV9S20997C16[27]),  27,53},
  {&(_ZTV9S20997C16[31]),  31,53},
  {&(_ZTV9S20997C16[44]),  44,53},
  {&(_ZTV9S20997C16[44]),  44,53},
  {&(_ZTV9S20997C16[44]),  44,53},
  {&(_ZTV9S20997C16[44]),  44,53},
  {&(_ZTV9S20997C16[52]),  52,53},
  {&(_ZTV9S20997C16[18]),  18,53},
  {&(_ZTV9S20997C16[22]),  22,53},
  {&(_tg__ZTV9S20997C17__9S20997C16[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C17__9S20997C16[4]),  4,5},
  {&(_tg__ZTV9S20997C10__9S20997C16[3]),  3,4},
  {&(_tg__ZTV9S20997C18__9S20997C16[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C16[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C16[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C16[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C18__9S20997C16[4]),  4,5},
  {&(_tg__ZTV8S20997C5__9S20997C16[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C16[5]),  5,8},
  {&(_tg__ZTV9S20997C19__9S20997C16[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C16[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C16[8]),  8,12},
  {&(_tg__ZTV9S20997C12__9S20997C16[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C12__9S20997C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C16[];
extern  VTBL_ENTRY _ZTV9S20997C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C16[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S20997C16D0Ev,_ZThn212_N9S20997C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S20997C16D1Ev,_ZThn212_N9S20997C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C16 = {  "S20997C16", // class name
  bases_S20997C16, 21,
  &(vtc_S20997C16[0]), // expected_vtbl_contents
  &(vtt_S20997C16[0]), // expected_vtt_contents
  ABISELECT(1480,976), // object size
  NSPAIRA(_ZTI9S20997C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20997C16),53, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C16),28, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C15  : S20997C16 {
  short s20997c15f0;
  virtual  ~S20997C15(); // _ZN9S20997C15D2Ev
  S20997C15(); // tgen
};
//SIG(-1 S20997C15) C1{ BC2{ VBC3{ VBC4{ BC5{ v1} VBC6{ m FL[5]} BC7{ m} Fp[10]}} BC5 VBC8{ m FL[4]} VBC9{ VBC5 VBC10{ VBC6 VBC5 BC7 vd} VBC8 VBC11{ VBC7 VBC10 v2} VBC12{ VBC5 FC4[9]} vd} BC13{ BC14{ BC6 BC5} BC4}} vd Fs}


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

static void Test_S20997C15()
{
  extern Class_Descriptor cd_S20997C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(187,246)];
    init_test(&cd_S20997C15, buf);
    S20997C15 *dp, &lv = *(dp=new (buf) S20997C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1488,980), "sizeof(S20997C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C15)");
    /*is_ambiguous_... S20997C15::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*), ABISELECT(160,100), "S20997C15");
    /*is_ambiguous_... S20997C15::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*), ABISELECT(248,144), "S20997C15");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(248,144), "S20997C15");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(248,144), "S20997C15");
    /*is_ambiguous_... S20997C15::S20997C10 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*), ABISELECT(160,100), "S20997C15");
    check_base_class_offset(lv, (S20997C10*)(S20997C17*), ABISELECT(160,100), "S20997C15");
    check_base_class_offset(lv, (S20997C17*)(S20997C16*), ABISELECT(152,96), "S20997C15");
    /*is_ambiguous_... S20997C16::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C16*), 0, "S20997C15");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C16*), ABISELECT(288,184), "S20997C15");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C18*), ABISELECT(288,184), "S20997C15");
    check_base_class_offset(lv, (S20997C7*)(S20997C18*), ABISELECT(320,216), "S20997C15");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*), ABISELECT(320,216), "S20997C15");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*), ABISELECT(320,216), "S20997C15");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*), ABISELECT(320,216), "S20997C15");
    check_base_class_offset(lv, (S20997C5*)(S20997C18*), ABISELECT(320,216), "S20997C15");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*), ABISELECT(320,216), "S20997C15");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*), 0, "S20997C15");
    check_base_class_offset(lv, (S20997C19*)(S20997C18*), ABISELECT(320,216), "S20997C15");
    check_base_class_offset(lv, (S20997C12*)(S20997C18*), ABISELECT(328,220), "S20997C15");
    check_base_class_offset(lv, (S20997C18*)(S20997C16*), ABISELECT(320,216), "S20997C15");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C20*)(S20997C16*), ABISELECT(16,8), "S20997C15");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C20*)(S20997C16*), ABISELECT(8,4), "S20997C15");
    check_base_class_offset(lv, (S20997C21*)(S20997C20*)(S20997C16*), ABISELECT(8,4), "S20997C15");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(56,48), "S20997C15");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(56,48), "S20997C15");
    check_base_class_offset(lv, (S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(56,48), "S20997C15");
    check_base_class_offset(lv, (S20997C20*)(S20997C16*), ABISELECT(8,4), "S20997C15");
    check_base_class_offset(lv, (S20997C16*), 0, "S20997C15");
    check_field_offset(lv, s20997c15f0, ABISELECT(144,92), "S20997C15.s20997c15f0");
    test_class_info(&lv, &cd_S20997C15);
    dp->~S20997C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C15(Test_S20997C15, "S20997C15", ABISELECT(1488,980));

#else // __cplusplus

extern void _ZN9S20997C15C1Ev();
extern void _ZN9S20997C15D2Ev();
Name_Map name_map_S20997C15[] = {
  NSPAIR(_ZN9S20997C15C1Ev),
  NSPAIR(_ZN9S20997C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C17;
extern VTBL_ENTRY _ZTI9S20997C17[];
extern  VTBL_ENTRY _ZTV9S20997C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C17[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S20997C18;
extern VTBL_ENTRY _ZTI9S20997C18[];
extern  VTBL_ENTRY _ZTV9S20997C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C18[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C20;
extern VTBL_ENTRY _ZTI9S20997C20[];
extern  VTBL_ENTRY _ZTV9S20997C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C20[];
extern Class_Descriptor cd_S20997C16;
extern VTBL_ENTRY _ZTI9S20997C16[];
extern  VTBL_ENTRY _ZTV9S20997C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C16[];
static Base_Class bases_S20997C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(160,100), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20997C17,    ABISELECT(152,96), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S10258C6_nt,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C19,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //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
    13, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(328,220), //bcp->offset
    48, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20997C18,    ABISELECT(320,216), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //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
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20997C21,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(56,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20997C20,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20997C16,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C15[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C15D1Ev();
extern void _ZN9S20997C15D0Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C15D1Ev,_ZTv0_n24_N9S20997C15D1Ev)();
extern void ABISELECT(_ZThn320_N9S20997C15D1Ev,_ZThn216_N9S20997C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C15D0Ev,_ZTv0_n24_N9S20997C15D0Ev)();
extern void ABISELECT(_ZThn320_N9S20997C15D0Ev,_ZThn216_N9S20997C15D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C15[] = {
  ABISELECT(328,220),
  0,
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(288,184),
  ABISELECT(248,144),
  ABISELECT(160,100),
  ABISELECT(152,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C15D0Ev,
  ABISELECT(240,140),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(192,96),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(96,48),
  ABISELECT(8,4),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-320,-216),
  ABISELECT(-320,-216),
  0,
  -72,
  0,
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C15D1Ev,_ZTv0_n24_N9S20997C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C15D0Ev,_ZTv0_n24_N9S20997C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-328,-220),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C15[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C16D1Ev();
extern void _ZN9S20997C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C16__9S20997C15[] = {
  ABISELECT(328,220),
  0,
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(288,184),
  ABISELECT(248,144),
  ABISELECT(160,100),
  ABISELECT(152,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C209S20997C16__9S20997C15[] = {
  ABISELECT(240,140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C209S20997C16__A1__9S20997C15[] = {
  ABISELECT(192,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C209S20997C16__9S20997C15[] = {
  ABISELECT(192,96),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C16__9S20997C15[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C16__9S20997C15[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev)();
extern void ABISELECT(_ZThn320_N9S20997C16D1Ev,_ZThn216_N9S20997C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev)();
extern void ABISELECT(_ZThn320_N9S20997C16D0Ev,_ZThn216_N9S20997C16D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C16__9S20997C15[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-320,-216),
  ABISELECT(-320,-216),
  0,
  -72,
  0,
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C16__9S20997C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-328,-220),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C16__9S20997C15[] = {
  ABISELECT(240,140),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A1__9S20997C16__9S20997C15[] = {
  ABISELECT(192,96),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C15[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C17__9S20997C15[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C15[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void _ZN9S20997C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void _ZN9S20997C18D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C15[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-320,-216),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C18__9S20997C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C15[] = {
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__9S20997C15[] = {
  0,
  ABISELECT(-320,-216),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C12__9S20997C15[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C15[] = {
  {&(_ZTV9S20997C15[12]),  12,53},
  {&(_tg__ZTV9S20997C16__9S20997C15[12]),  12,15},
  {&(_tg__ZTV9S20997C209S20997C16__9S20997C15[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C209S20997C16__A1__9S20997C15[3]),  3,4},
  {&(_tg__ZTV9S20997C10__9S20997C209S20997C16__9S20997C15[3]),  3,4},
  {&(_tg__ZTV9S20997C17__9S20997C16__9S20997C15[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C16__9S20997C15[4]),  4,5},
  {&(_tg__ZTV9S20997C18__9S20997C16__9S20997C15[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C16__9S20997C15[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C16__9S20997C15[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C16__9S20997C15[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C16__9S20997C15[4]),  4,5},
  {&(_tg__ZTV9S20997C20__9S20997C16__9S20997C15[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C20__A1__9S20997C16__9S20997C15[3]),  3,4},
  {&(_ZTV9S20997C15[27]),  27,53},
  {&(_ZTV9S20997C15[31]),  31,53},
  {&(_ZTV9S20997C15[44]),  44,53},
  {&(_ZTV9S20997C15[44]),  44,53},
  {&(_ZTV9S20997C15[44]),  44,53},
  {&(_ZTV9S20997C15[44]),  44,53},
  {&(_ZTV9S20997C15[52]),  52,53},
  {&(_ZTV9S20997C15[18]),  18,53},
  {&(_ZTV9S20997C15[22]),  22,53},
  {&(_tg__ZTV9S20997C17__9S20997C15[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C17__9S20997C15[4]),  4,5},
  {&(_tg__ZTV9S20997C10__9S20997C15[3]),  3,4},
  {&(_tg__ZTV9S20997C18__9S20997C15[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C15[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C15[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C15[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C18__9S20997C15[4]),  4,5},
  {&(_tg__ZTV8S20997C5__9S20997C15[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C15[5]),  5,8},
  {&(_tg__ZTV9S20997C19__9S20997C15[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C15[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C15[8]),  8,12},
  {&(_tg__ZTV9S20997C12__9S20997C15[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C12__9S20997C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C15[];
extern  VTBL_ENTRY _ZTV9S20997C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C15[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20997C16D0Ev,_ZThn216_N9S20997C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20997C16D1Ev,_ZThn216_N9S20997C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C15D0Ev,_ZTv0_n24_N9S20997C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20997C15D0Ev,_ZThn216_N9S20997C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C15D1Ev,_ZTv0_n24_N9S20997C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20997C15D1Ev,_ZThn216_N9S20997C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C15 = {  "S20997C15", // class name
  bases_S20997C15, 22,
  &(vtc_S20997C15[0]), // expected_vtbl_contents
  &(vtt_S20997C15[0]), // expected_vtt_contents
  ABISELECT(1488,980), // object size
  NSPAIRA(_ZTI9S20997C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20997C15),53, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C15),38, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C26  : S20997C21 {
  long double s20997c26f0;
  ~S20997C26(); // tgen
  S20997C26(); // tgen
};
//SIG(-1 S20997C26) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} FD}


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

static void Test_S20997C26()
{
  extern Class_Descriptor cd_S20997C26;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,15)];
    init_test(&cd_S20997C26, buf);
    S20997C26 *dp, &lv = *(dp=new (buf) S20997C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S20997C26)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20997C26)");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*), ABISELECT(8,4), "S20997C26");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*), 0, "S20997C26");
    check_base_class_offset(lv, (S20997C21*), 0, "S20997C26");
    check_field_offset(lv, s20997c26f0, ABISELECT(48,44), "S20997C26.s20997c26f0");
    test_class_info(&lv, &cd_S20997C26);
    dp->~S20997C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C26(Test_S20997C26, "S20997C26", ABISELECT(64,56));

#else // __cplusplus

extern void _ZN9S20997C26C1Ev();
extern void _ZN9S20997C26D1Ev();
Name_Map name_map_S20997C26[] = {
  NSPAIR(_ZN9S20997C26C1Ev),
  NSPAIR(_ZN9S20997C26D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
static Base_Class bases_S20997C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20997C7,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20997C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20997C26[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C26[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C26[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTI9S20997C26[];
extern  VTBL_ENTRY _ZTV9S20997C26[];
Class_Descriptor cd_S20997C26 = {  "S20997C26", // class name
  bases_S20997C26, 3,
  &(vtc_S20997C26[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,56), // object size
  NSPAIRA(_ZTI9S20997C26),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20997C26),3, //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  S20997C25  : virtual S20997C9 , S20997C26 {
  ~S20997C25(); // tgen
  S20997C25(); // tgen
};
//SIG(-1 S20997C25) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} BC11{ BC12{ BC5 BC3} FD}}


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

static void Test_S20997C25()
{
  extern Class_Descriptor cd_S20997C25;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S20997C25, buf);
    S20997C25 *dp, &lv = *(dp=new (buf) S20997C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S20997C25)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20997C25)");
    /*is_ambiguous_... S20997C9::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C9*), ABISELECT(192,140), "S20997C25");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), ABISELECT(192,140), "S20997C25");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), ABISELECT(192,140), "S20997C25");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(192,140), "S20997C25");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C9*), ABISELECT(64,56), "S20997C25");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C9*), ABISELECT(152,100), "S20997C25");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(152,100), "S20997C25");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(152,100), "S20997C25");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C9*), ABISELECT(64,56), "S20997C25");
    check_base_class_offset(lv, (S20997C10*)(S20997C9*), ABISELECT(64,56), "S20997C25");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), 0, "S20997C25");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(192,140), "S20997C25");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(1352,900), "S20997C25");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(1352,900), "S20997C25");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1360,904), "S20997C25");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1360,904), "S20997C25");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(1360,904), "S20997C25");
    check_base_class_offset(lv, (S20997C11*)(S20997C9*), ABISELECT(192,140), "S20997C25");
    check_base_class_offset(lv, (S20997C9*), ABISELECT(64,56), "S20997C25");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C26*), ABISELECT(8,4), "S20997C25");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C26*), 0, "S20997C25");
    check_base_class_offset(lv, (S20997C21*)(S20997C26*), 0, "S20997C25");
    check_base_class_offset(lv, (S20997C26*), 0, "S20997C25");
    test_class_info(&lv, &cd_S20997C25);
    dp->~S20997C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C25(Test_S20997C25, "S20997C25", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN9S20997C25C1Ev();
extern void _ZN9S20997C25D1Ev();
Name_Map name_map_S20997C25[] = {
  NSPAIR(_ZN9S20997C25C1Ev),
  NSPAIR(_ZN9S20997C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
extern Class_Descriptor cd_S20997C9;
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C26;
extern VTBL_ENTRY _ZTI9S20997C26[];
extern  VTBL_ENTRY _ZTV9S20997C26[];
static Base_Class bases_S20997C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C12,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(1352,900), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1360,904), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(192,140), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20997C9,    ABISELECT(64,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20997C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20997C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C25[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C25D1Ev();
extern void _ZN9S20997C25D0Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn192_N9S20997C25D1Ev,_ZThn140_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn192_N9S20997C25D0Ev,_ZThn140_N9S20997C25D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY vtc_S20997C25[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D0Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev),
};
extern VTBL_ENTRY _ZTV9S20997C25[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C25[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C108S20997C9__9S20997C25[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S20997C9D1Ev,_ZThn84_N8S20997C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S20997C9D0Ev,_ZThn84_N8S20997C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C9__9S20997C25[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C25[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C25[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C25[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__9S20997C25[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C25[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C25[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C25[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C25[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C25[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C25[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__9S20997C25[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__9S20997C25[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
static  VTT_ENTRY vtt_S20997C25[] = {
  {&(_ZTV9S20997C25[7]),  7,47},
  {&(_ZTV9S20997C25[18]),  18,47},
  {&(_ZTV9S20997C25[28]),  28,47},
  {&(_ZTV9S20997C25[28]),  28,47},
  {&(_ZTV9S20997C25[36]),  36,47},
  {&(_ZTV9S20997C25[44]),  44,47},
  {&(_tg__ZTV8S20997C9__9S20997C25[6]),  6,9},
  {&(_tg__ZTV9S20997C108S20997C9__9S20997C25[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C9__9S20997C25[7]),  7,10},
  {&(_tg__ZTV9S20997C11__8S20997C9__9S20997C25[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C25[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C25[5]),  5,8},
  {&(_tg__ZTV9S20997C11__9S20997C25[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C25[4]),  4,5},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C25[4]),  4,5},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C25[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C25[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C25[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C25[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C25[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C25[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C25[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C11__9S20997C25[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__9S20997C25[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20997C25[];
extern  VTBL_ENTRY _ZTV9S20997C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C25[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C9D0Ev,_ZThn84_N8S20997C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C9D1Ev,_ZThn84_N8S20997C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C25D0Ev,_ZThn140_N9S20997C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C25D1Ev,_ZThn140_N9S20997C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C25 = {  "S20997C25", // class name
  bases_S20997C25, 18,
  &(vtc_S20997C25[0]), // expected_vtbl_contents
  &(vtt_S20997C25[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI9S20997C25),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20997C25),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C25),24, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C24  : virtual S20997C6 , virtual S20997C11 , virtual S20997C25 {
  void *s20997c24f0;
  virtual  ~S20997C24(); // _ZN9S20997C24D2Ev
  S20997C24(); // tgen
};
//SIG(-1 S20997C24) C1{ VBC2{ m FL[5]} VBC3{ VBC4{ m} BC5{ VBC6{ v1} FC7{ BC6 VBC2 BC4 Fp[10]}[9]} BC8{ VBC2 VBC6 BC4 vd} BC9{ BC8 vd}} VBC10{ VBC11{ VBC6 BC7 VBC3 vd} BC12{ BC13{ BC2 BC6} FD}} vd Fp}


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

static void Test_S20997C24()
{
  extern Class_Descriptor cd_S20997C24;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,230)];
    init_test(&cd_S20997C24, buf);
    S20997C24 *dp, &lv = *(dp=new (buf) S20997C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,916), "sizeof(S20997C24)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20997C24)");
    /*is_ambiguous_... S20997C24::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(16,8), "S20997C24");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(16,8), "S20997C24");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(16,8), "S20997C24");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C9*), ABISELECT(16,8), "S20997C24");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), 0, "S20997C24");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), 0, "S20997C24");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), 0, "S20997C24");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), 0, "S20997C24");
    /*is_ambiguous_... S20997C9::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C9*), 0, "S20997C24");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(56,48), "S20997C24");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(1216,808), "S20997C24");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(1216,808), "S20997C24");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1224,812), "S20997C24");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1224,812), "S20997C24");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(1224,812), "S20997C24");
    check_base_class_offset(lv, (S20997C11*), ABISELECT(56,48), "S20997C24");
    check_base_class_offset(lv, (S20997C11*)(S20997C9*), ABISELECT(56,48), "S20997C24");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C9*), ABISELECT(1296,872), "S20997C24");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C9*), ABISELECT(1296,872), "S20997C24");
    check_base_class_offset(lv, (S20997C10*)(S20997C9*), ABISELECT(1296,872), "S20997C24");
    check_base_class_offset(lv, (S20997C9*)(S20997C25*), ABISELECT(1296,872), "S20997C24");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(1240,820), "S20997C24");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(1232,816), "S20997C24");
    check_base_class_offset(lv, (S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(1232,816), "S20997C24");
    check_base_class_offset(lv, (S20997C26*)(S20997C25*), ABISELECT(1232,816), "S20997C24");
    check_base_class_offset(lv, (S20997C25*), ABISELECT(1232,816), "S20997C24");
    check_field_offset(lv, s20997c24f0, ABISELECT(8,4), "S20997C24.s20997c24f0");
    test_class_info(&lv, &cd_S20997C24);
    dp->~S20997C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C24(Test_S20997C24, "S20997C24", ABISELECT(1392,916));

#else // __cplusplus

extern void _ZN9S20997C24C1Ev();
extern void _ZN9S20997C24D2Ev();
Name_Map name_map_S20997C24[] = {
  NSPAIR(_ZN9S20997C24C1Ev),
  NSPAIR(_ZN9S20997C24D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C9;
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C26;
extern VTBL_ENTRY _ZTI9S20997C26[];
extern  VTBL_ENTRY _ZTV9S20997C26[];
extern Class_Descriptor cd_S20997C25;
extern VTBL_ENTRY _ZTI9S20997C25[];
extern  VTBL_ENTRY _ZTV9S20997C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C25[];
static Base_Class bases_S20997C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1216,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(1216,808), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1224,812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1224,812), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1224,812), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(56,48), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C7,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_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_S4227C37,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    ABISELECT(1296,872), //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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20997C9,    ABISELECT(1296,872), //bcp->offset
    50, //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
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1240,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20997C21,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20997C26,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20997C25,    ABISELECT(1232,816), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C24[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C24D1Ev();
extern void _ZN9S20997C24D0Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn56_N9S20997C24D1Ev,_ZThn48_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn56_N9S20997C24D0Ev,_ZThn48_N9S20997C24D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C24D1Ev,_ZTvn760_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C24D0Ev,_ZTvn760_n28_N9S20997C24D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C24D1Ev,_ZTvn764_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C24D0Ev,_ZTvn764_n28_N9S20997C24D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn1232_N9S20997C24D1Ev,_ZThn816_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn1232_N9S20997C24D0Ev,_ZThn816_N9S20997C24D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn1296_N9S20997C24D1Ev,_ZThn872_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn1296_N9S20997C24D0Ev,_ZThn872_N9S20997C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20997C24[] = {
  ABISELECT(1296,872),
  ABISELECT(1232,816),
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C24D0Ev,
  ABISELECT(-56,-48),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev),
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(-1216,-808),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C24D1Ev,_ZTvn760_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C24D0Ev,_ZTvn760_n28_N9S20997C24D0Ev),
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(-1224,-812),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C24D1Ev,_ZTvn764_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C24D0Ev,_ZTvn764_n28_N9S20997C24D0Ev),
  ABISELECT(-1232,-816),
  0,
  ABISELECT(-1232,-816),
  ABISELECT(-1176,-768),
  ABISELECT(-1216,-808),
  ABISELECT(-1232,-816),
  ABISELECT(64,56),
  ABISELECT(-1232,-816),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev),
  ABISELECT(-1296,-872),
  0,
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  ABISELECT(-1296,-872),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev),
};
extern VTBL_ENTRY _ZTV9S20997C24[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C24[] = {
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__9S20997C24[] = {
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C129S20997C11__9S20997C24[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C24[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C24[] = {
  0,
  ABISELECT(1216,808),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C24[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C24[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C24[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C24[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C11__9S20997C24[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__9S20997C24[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__9S20997C24[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C25D1Ev();
extern void _ZN9S20997C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C24[] = {
  ABISELECT(-1232,-816),
  ABISELECT(-1176,-768),
  ABISELECT(-1216,-808),
  ABISELECT(-1232,-816),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C25__9S20997C24[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C25__9S20997C24[] = {
  0,
  ABISELECT(1232,816),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C25__9S20997C24[] = {
  ABISELECT(1176,768),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C25__9S20997C24[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C25__9S20997C24[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C24[] = {
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C108S20997C9__9S20997C24[] = {
  ABISELECT(-1280,-864),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C9__9S20997C24[] = {
  0,
  ABISELECT(1296,872),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C9__9S20997C24[] = {
  ABISELECT(1240,824),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C24[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C24[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
static  VTT_ENTRY vtt_S20997C24[] = {
  {&(_ZTV9S20997C24[9]),  9,61},
  {&(_ZTV9S20997C24[19]),  19,61},
  {&(_ZTV9S20997C24[9]),  9,61},
  {&(_ZTV9S20997C24[27]),  27,61},
  {&(_ZTV9S20997C24[35]),  35,61},
  {&(_ZTV9S20997C24[47]),  47,61},
  {&(_ZTV9S20997C24[58]),  58,61},
  {&(_tg__ZTV9S20997C11__9S20997C24[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C24[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C129S20997C11__9S20997C24[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C24[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C24[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C24[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C24[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C24[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C24[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C11__9S20997C24[3]),  3,4},
  {&(_tg__ZTV8S20997C5__9S20997C11__9S20997C24[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__9S20997C24[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C24[7]),  7,10},
  {&(_tg__ZTV8S20997C9__9S20997C25__9S20997C24[8]),  8,11},
  {&(_tg__ZTV8S20997C7__9S20997C25__9S20997C24[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C25__9S20997C24[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C25__9S20997C24[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C25__9S20997C24[5]),  5,8},
  {&(_tg__ZTV8S20997C9__9S20997C24[6]),  6,9},
  {&(_tg__ZTV9S20997C108S20997C9__9S20997C24[3]),  3,4},
  {&(_tg__ZTV8S20997C7__8S20997C9__9S20997C24[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C9__9S20997C24[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C24[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C24[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20997C24[];
extern  VTBL_ENTRY _ZTV9S20997C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C24[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N9S20997C24D0Ev,_ZThn872_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N9S20997C24D1Ev,_ZThn872_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N9S20997C24D0Ev,_ZThn816_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N9S20997C24D1Ev,_ZThn816_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20997C24D0Ev,_ZThn48_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S20997C24D1Ev,_ZThn48_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C24 = {  "S20997C24", // class name
  bases_S20997C24, 19,
  &(vtc_S20997C24[0]), // expected_vtbl_contents
  &(vtt_S20997C24[0]), // expected_vtt_contents
  ABISELECT(1392,916), // object size
  NSPAIRA(_ZTI9S20997C24),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20997C24),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C24),31, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C23  : virtual S20997C10 , virtual S20997C24 {
  ~S20997C23(); // tgen
  S20997C23(); // tgen
};
//SIG(-1 S20997C23) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC4 VBC7{ VBC5 BC8{ VBC3 FC2[9]} BC9{ VBC4 VBC3 BC5 vd} BC10{ BC9 vd}} VBC11{ VBC12{ VBC3 BC2 VBC7 vd} BC13{ BC14{ BC4 BC3} FD}} vd Fp}}


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

static void Test_S20997C23()
{
  extern Class_Descriptor cd_S20997C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(94,242)];
    init_test(&cd_S20997C23, buf);
    S20997C23 *dp, &lv = *(dp=new (buf) S20997C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1488,964), "sizeof(S20997C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20997C23)");
    /*is_ambiguous_... S20997C23::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*), ABISELECT(8,4), "S20997C23");
    /*is_ambiguous_... S20997C23::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*), ABISELECT(96,48), "S20997C23");
    /*is_ambiguous_... S20997C24::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C24*), ABISELECT(96,48), "S20997C23");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(96,48), "S20997C23");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(96,48), "S20997C23");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C9*), ABISELECT(96,48), "S20997C23");
    /*is_ambiguous_... S20997C23::S20997C10 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*), ABISELECT(8,4), "S20997C23");
    /*is_ambiguous_... S20997C23::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C10*), ABISELECT(8,4), "S20997C23");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), 0, "S20997C23");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), 0, "S20997C23");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), 0, "S20997C23");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), 0, "S20997C23");
    /*is_ambiguous_... S20997C9::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C9*), 0, "S20997C23");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(152,96), "S20997C23");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(1312,856), "S20997C23");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(1312,856), "S20997C23");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1320,860), "S20997C23");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1320,860), "S20997C23");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(1320,860), "S20997C23");
    check_base_class_offset(lv, (S20997C11*)(S20997C24*), ABISELECT(152,96), "S20997C23");
    check_base_class_offset(lv, (S20997C11*)(S20997C9*), ABISELECT(152,96), "S20997C23");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C9*), ABISELECT(1392,920), "S20997C23");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C9*), ABISELECT(1392,920), "S20997C23");
    check_base_class_offset(lv, (S20997C10*)(S20997C9*), ABISELECT(1392,920), "S20997C23");
    check_base_class_offset(lv, (S20997C9*)(S20997C25*), ABISELECT(1392,920), "S20997C23");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(1336,868), "S20997C23");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(1328,864), "S20997C23");
    check_base_class_offset(lv, (S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(1328,864), "S20997C23");
    check_base_class_offset(lv, (S20997C26*)(S20997C25*), ABISELECT(1328,864), "S20997C23");
    check_base_class_offset(lv, (S20997C25*)(S20997C24*), ABISELECT(1328,864), "S20997C23");
    check_base_class_offset(lv, (S20997C24*), ABISELECT(136,88), "S20997C23");
    test_class_info(&lv, &cd_S20997C23);
    dp->~S20997C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C23(Test_S20997C23, "S20997C23", ABISELECT(1488,964));

#else // __cplusplus

extern void _ZN9S20997C23C1Ev();
extern void _ZN9S20997C23D1Ev();
Name_Map name_map_S20997C23[] = {
  NSPAIR(_ZN9S20997C23C1Ev),
  NSPAIR(_ZN9S20997C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C9;
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C26;
extern VTBL_ENTRY _ZTI9S20997C26[];
extern  VTBL_ENTRY _ZTV9S20997C26[];
extern Class_Descriptor cd_S20997C25;
extern VTBL_ENTRY _ZTI9S20997C25[];
extern  VTBL_ENTRY _ZTV9S20997C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C25[];
extern Class_Descriptor cd_S20997C24;
extern VTBL_ENTRY _ZTI9S20997C24[];
extern  VTBL_ENTRY _ZTV9S20997C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C24[];
static Base_Class bases_S20997C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1312,856), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1320,860), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1320,860), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(152,96), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(1392,920), //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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20997C9,    ABISELECT(1392,920), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20997C26,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20997C25,    ABISELECT(1328,864), //bcp->offset
    58, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20997C24,    ABISELECT(136,88), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C23[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C23D1Ev();
extern void _ZN9S20997C23D0Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n80_N9S20997C23D1Ev,_ZTv0_n40_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn136_N9S20997C23D1Ev,_ZThn88_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20997C23D0Ev,_ZTv0_n40_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn136_N9S20997C23D0Ev,_ZThn88_N9S20997C23D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C23D1Ev,_ZTv0_n28_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn152_N9S20997C23D1Ev,_ZThn96_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C23D0Ev,_ZTv0_n28_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn152_N9S20997C23D0Ev,_ZThn96_N9S20997C23D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C23D1Ev,_ZTvn760_n28_N9S20997C23D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C23D0Ev,_ZTvn760_n28_N9S20997C23D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C23D1Ev,_ZTvn764_n28_N9S20997C23D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C23D0Ev,_ZTvn764_n28_N9S20997C23D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C23D1Ev,_ZTv0_n36_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn1328_N9S20997C23D1Ev,_ZThn864_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C23D0Ev,_ZTv0_n36_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn1328_N9S20997C23D0Ev,_ZThn864_N9S20997C23D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C23D1Ev,_ZTv0_n32_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn1392_N9S20997C23D1Ev,_ZThn920_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C23D0Ev,_ZTv0_n32_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn1392_N9S20997C23D0Ev,_ZThn920_N9S20997C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20997C23[] = {
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  0,
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C23D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C23D1Ev,_ZTv0_n40_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C23D0Ev,_ZTv0_n40_N9S20997C23D0Ev),
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C23D1Ev,_ZTv0_n28_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C23D0Ev,_ZTv0_n28_N9S20997C23D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C23D1Ev,_ZTvn760_n28_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C23D0Ev,_ZTvn760_n28_N9S20997C23D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C23D1Ev,_ZTvn764_n28_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C23D0Ev,_ZTvn764_n28_N9S20997C23D0Ev),
  ABISELECT(-1328,-864),
  0,
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C23D1Ev,_ZTv0_n36_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C23D0Ev,_ZTv0_n36_N9S20997C23D0Ev),
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C23D1Ev,_ZTv0_n32_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C23D0Ev,_ZTv0_n32_N9S20997C23D0Ev),
};
extern VTBL_ENTRY _ZTV9S20997C23[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C23[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C24D1Ev();
extern void _ZN9S20997C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C24__9S20997C23[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C24D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn16_N9S20997C24D1Ev,_ZThn8_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn16_N9S20997C24D0Ev,_ZThn8_N9S20997C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C24__9S20997C23[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C24__9S20997C23[] = {
  0,
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C24D1Ev,_ZTvn760_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C24D0Ev,_ZTvn760_n28_N9S20997C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C24__9S20997C23[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C24D1Ev,_ZTvn760_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C24D0Ev,_ZTvn760_n28_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C24D1Ev,_ZTvn764_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C24D0Ev,_ZTvn764_n28_N9S20997C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C24__9S20997C23[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C24D1Ev,_ZTvn764_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C24D0Ev,_ZTvn764_n28_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn1192_N9S20997C24D1Ev,_ZThn776_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn1192_N9S20997C24D0Ev,_ZThn776_N9S20997C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C24__9S20997C23[] = {
  ABISELECT(-1192,-776),
  0,
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn1256_N9S20997C24D1Ev,_ZThn832_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn1256_N9S20997C24D0Ev,_ZThn832_N9S20997C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C24__9S20997C23[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C23[] = {
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__9S20997C23[] = {
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C129S20997C11__9S20997C23[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C23[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C23[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C23[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C23[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C23[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C23[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C11__9S20997C23[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__9S20997C23[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__9S20997C23[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C25D1Ev();
extern void _ZN9S20997C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C23[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C25__9S20997C23[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C25__9S20997C23[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C25__9S20997C23[] = {
  ABISELECT(1176,768),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C25__9S20997C23[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C25__9S20997C23[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C23[] = {
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C108S20997C9__A1__9S20997C23[] = {
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C9__9S20997C23[] = {
  0,
  ABISELECT(1392,920),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C9__9S20997C23[] = {
  ABISELECT(1240,824),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C23[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C23[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
static  VTT_ENTRY vtt_S20997C23[] = {
  {&(_ZTV9S20997C23[11]),  11,81},
  {&(_ZTV9S20997C23[18]),  18,81},
  {&(_ZTV9S20997C23[29]),  29,81},
  {&(_ZTV9S20997C23[39]),  39,81},
  {&(_ZTV9S20997C23[11]),  11,81},
  {&(_ZTV9S20997C23[47]),  47,81},
  {&(_ZTV9S20997C23[55]),  55,81},
  {&(_ZTV9S20997C23[67]),  67,81},
  {&(_ZTV9S20997C23[78]),  78,81},
  {&(_tg__ZTV9S20997C10__9S20997C23[3]),  3,4},
  {&(_tg__ZTV9S20997C24__9S20997C23[9]),  9,12},
  {&(_tg__ZTV9S20997C11__9S20997C24__9S20997C23[7]),  7,10},
  {&(_tg__ZTV8S20997C7__9S20997C24__9S20997C23[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C24__9S20997C23[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C24__9S20997C23[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C24__9S20997C23[9]),  9,12},
  {&(_tg__ZTV8S20997C9__9S20997C24__9S20997C23[8]),  8,11},
  {&(_tg__ZTV9S20997C11__9S20997C23[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C23[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C129S20997C11__9S20997C23[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C23[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C23[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C23[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C23[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C23[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C23[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C11__9S20997C23[3]),  3,4},
  {&(_tg__ZTV8S20997C5__9S20997C11__9S20997C23[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__9S20997C23[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C23[7]),  7,10},
  {&(_tg__ZTV8S20997C9__9S20997C25__9S20997C23[8]),  8,11},
  {&(_tg__ZTV8S20997C7__9S20997C25__9S20997C23[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C25__9S20997C23[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C25__9S20997C23[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C25__9S20997C23[5]),  5,8},
  {&(_tg__ZTV8S20997C9__9S20997C23[6]),  6,9},
  {&(_tg__ZTV9S20997C108S20997C9__A1__9S20997C23[3]),  3,4},
  {&(_tg__ZTV8S20997C7__8S20997C9__9S20997C23[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C9__9S20997C23[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C23[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C23[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20997C23[];
extern  VTBL_ENTRY _ZTV9S20997C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C23[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N9S20997C24D0Ev,_ZThn832_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N9S20997C24D1Ev,_ZThn832_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N9S20997C24D0Ev,_ZThn776_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N9S20997C24D1Ev,_ZThn776_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20997C24D0Ev,_ZThn8_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20997C24D1Ev,_ZThn8_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C23D0Ev,_ZTv0_n32_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N9S20997C23D0Ev,_ZThn920_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C23D1Ev,_ZTv0_n32_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N9S20997C23D1Ev,_ZThn920_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C23D0Ev,_ZTv0_n36_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S20997C23D0Ev,_ZThn864_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C23D1Ev,_ZTv0_n36_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S20997C23D1Ev,_ZThn864_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C23D0Ev,_ZTv0_n28_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20997C23D0Ev,_ZThn96_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C23D1Ev,_ZTv0_n28_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20997C23D1Ev,_ZThn96_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C23D0Ev,_ZTv0_n40_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20997C23D0Ev,_ZThn88_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C23D1Ev,_ZTv0_n40_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20997C23D1Ev,_ZThn88_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C23 = {  "S20997C23", // class name
  bases_S20997C23, 23,
  &(vtc_S20997C23[0]), // expected_vtbl_contents
  &(vtt_S20997C23[0]), // expected_vtt_contents
  ABISELECT(1488,964), // object size
  NSPAIRA(_ZTI9S20997C23),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20997C23),81, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C23),41, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C29_nt  : S4227C23 {
};
//SIG(-1 S20997C29_nt) C1{ BC2{ m}}



//skip512 S20997C29_nt

#else // __cplusplus

extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
static Base_Class bases_S20997C29_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S20997C29_nt[];
VTBL_ENTRY *P__ZTI12S20997C29_nt = _ZTI12S20997C29_nt; 
Class_Descriptor cd_S20997C29_nt = {  "S20997C29_nt", // class name
  bases_S20997C29_nt, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI12S20997C29_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  S20997C27  : virtual S20997C10 , virtual S20997C3 , virtual S20997C20 , S4227C27 , virtual S20997C29_nt {
  virtual  ~S20997C27(); // _ZN9S20997C27D2Ev
  S20997C27(); // tgen
};
//SIG(-1 S20997C27) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC7{ m FL[4]} VBC8{ VBC4 VBC3 BC5 vd} vd} VBC9{ BC10{ BC4 BC3} BC2} BC11{ m} VBC12{ BC13{ m}} vd}


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

static void Test_S20997C27()
{
  extern Class_Descriptor cd_S20997C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,53)];
    init_test(&cd_S20997C27, buf);
    S20997C27 *dp, &lv = *(dp=new (buf) S20997C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,208), "sizeof(S20997C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C27)");
    /*is_ambiguous_... S20997C27::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*), ABISELECT(8,4), "S20997C27");
    /*is_ambiguous_... S20997C27::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*), ABISELECT(96,48), "S20997C27");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(96,48), "S20997C27");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C20*), ABISELECT(96,48), "S20997C27");
    /*is_ambiguous_... S20997C27::S20997C10 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*), ABISELECT(8,4), "S20997C27");
    /*is_ambiguous_... S20997C27::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C10*), ABISELECT(8,4), "S20997C27");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C3*), ABISELECT(136,88), "S20997C27");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*), 0, "S20997C27");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*), 0, "S20997C27");
    check_base_class_offset(lv, (S20997C5*)(S20997C3*), 0, "S20997C27");
    check_base_class_offset(lv, (S20997C3*), 0, "S20997C27");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C20*), ABISELECT(176,124), "S20997C27");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C20*), ABISELECT(168,120), "S20997C27");
    check_base_class_offset(lv, (S20997C21*)(S20997C20*), ABISELECT(168,120), "S20997C27");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C20*), ABISELECT(216,164), "S20997C27");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C20*), ABISELECT(216,164), "S20997C27");
    check_base_class_offset(lv, (S20997C10*)(S20997C20*), ABISELECT(216,164), "S20997C27");
    check_base_class_offset(lv, (S20997C20*), ABISELECT(168,120), "S20997C27");
    check_base_class_offset(lv, (S4227C27*), 0, "S20997C27");
    check_base_class_offset(lv, (S4227C23*)(S20997C29_nt*), 0, "S20997C27");
    check_base_class_offset(lv, (S20997C29_nt*), 0, "S20997C27");
    test_class_info(&lv, &cd_S20997C27);
    dp->~S20997C27();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C27(Test_S20997C27, "S20997C27", ABISELECT(304,208));

#else // __cplusplus

extern void _ZN9S20997C27C1Ev();
extern void _ZN9S20997C27D2Ev();
Name_Map name_map_S20997C27[] = {
  NSPAIR(_ZN9S20997C27C1Ev),
  NSPAIR(_ZN9S20997C27D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C3;
extern VTBL_ENTRY _ZTI8S20997C3[];
extern  VTBL_ENTRY _ZTV8S20997C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C3[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C20;
extern VTBL_ENTRY _ZTI9S20997C20[];
extern  VTBL_ENTRY _ZTV9S20997C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C20[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S20997C29_nt;
extern VTBL_ENTRY _ZTI12S20997C29_nt[];
static Base_Class bases_S20997C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_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
    8, //immediately_derived
  0, 1},
  {&cd_S20997C7,    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
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 1},
  {&cd_S20997C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(176,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
    11, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(216,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
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(216,164), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20997C20,    ABISELECT(168,120), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20997C27[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C27D1Ev();
extern void _ZN9S20997C27D0Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C27[] = {
  0,
  ABISELECT(168,120),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(136,88),
  0,
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C27D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C27D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  0,
  -72,
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-120,-116),
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C27[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C27[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev)();
extern void _ZN8S20997C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev)();
extern void _ZN8S20997C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__9S20997C27[] = {
  0,
  ABISELECT(136,88),
  0,
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C3[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C27[] = {
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C27[] = {
  -72,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A1__9S20997C27[] = {
  ABISELECT(-120,-116),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C20__9S20997C27[] = {
  ABISELECT(-120,-116),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C27[] = {
  {&(_ZTV9S20997C27[12]),  12,29},
  {&(_ZTV9S20997C27[19]),  19,29},
  {&(_ZTV9S20997C27[12]),  12,29},
  {&(_ZTV9S20997C27[12]),  12,29},
  {&(_ZTV9S20997C27[12]),  12,29},
  {&(_ZTV9S20997C27[24]),  24,29},
  {&(_ZTV9S20997C27[28]),  28,29},
  {&(_tg__ZTV9S20997C10__9S20997C27[3]),  3,4},
  {&(_tg__ZTV8S20997C3__9S20997C27[8]),  8,11},
  {&(_tg__ZTV8S20997C3__9S20997C27[8]),  8,11},
  {&(_tg__ZTV8S20997C3__9S20997C27[8]),  8,11},
  {&(_tg__ZTV8S20997C5__9S20997C27[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C27[5]),  5,8},
  {&(_tg__ZTV9S20997C20__9S20997C27[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C20__A1__9S20997C27[3]),  3,4},
  {&(_tg__ZTV9S20997C10__9S20997C20__9S20997C27[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C27[];
extern  VTBL_ENTRY _ZTV9S20997C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C27[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C27 = {  "S20997C27", // class name
  bases_S20997C27, 19,
  &(vtc_S20997C27[0]), // expected_vtbl_contents
  &(vtt_S20997C27[0]), // expected_vtt_contents
  ABISELECT(304,208), // object size
  NSPAIRA(_ZTI9S20997C27),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20997C27),29, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C27),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C22  : S20997C23 , S4227C37 , virtual S20997C27 , virtual S20997C18 {
  ~S20997C22(); // tgen
  S20997C22(); // tgen
};
//SIG(-1 S20997C22) C1{ BC2{ VBC3{ BC4{ v1} VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC5 VBC8{ VBC6 BC9{ VBC4 FC3[9]} BC10{ VBC5 VBC4 BC6 vd} BC11{ BC10 vd}} VBC12{ VBC13{ VBC4 BC3 VBC8 vd} BC14{ BC15{ BC5 BC4} FD}} vd Fp}} BC6 VBC16{ VBC3 VBC17{ VBC18{ m FL[4]} VBC10 vd} VBC19{ BC15 BC3} BC20{ m} VBC21{ BC22{ m}} vd} VBC23{ VBC4 VBC10 VBC18 VBC24{ VBC6 VBC10 v2} VBC9 vd}}


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

static void Test_S20997C22()
{
  extern Class_Descriptor cd_S20997C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(178,464)];
    init_test(&cd_S20997C22, buf);
    S20997C22 *dp, &lv = *(dp=new (buf) S20997C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2832,1852), "sizeof(S20997C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20997C22)");
    /*is_ambiguous_... S20997C22::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*), ABISELECT(8,4), "S20997C22");
    /*is_ambiguous_... S20997C22::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*), ABISELECT(96,48), "S20997C22");
    /*is_ambiguous_... S20997C24::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C24*), ABISELECT(96,48), "S20997C22");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(96,48), "S20997C22");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(96,48), "S20997C22");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C9*), ABISELECT(96,48), "S20997C22");
    /*is_ambiguous_... S20997C22::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(96,48), "S20997C22");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C20*), ABISELECT(96,48), "S20997C22");
    /*is_ambiguous_... S20997C22::S20997C10 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*), ABISELECT(8,4), "S20997C22");
    /*is_ambiguous_... S20997C23::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C10*)(S20997C23*), ABISELECT(8,4), "S20997C22");
    /*is_ambiguous_... S20997C27::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C10*)(S20997C27*), ABISELECT(8,4), "S20997C22");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), ABISELECT(1328,864), "S20997C22");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*), ABISELECT(1328,864), "S20997C22");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), 0, "S20997C22");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), 0, "S20997C22");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), 0, "S20997C22");
    /*is_ambiguous_... S20997C9::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C9*), 0, "S20997C22");
    /*is_ambiguous_... S20997C22::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*), 0, "S20997C22");
    check_base_class_offset(lv, (S20997C7*)(S20997C18*), 0, "S20997C22");
    /*is_ambiguous_... S20997C22::S20997C12 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C12*), 0, "S20997C22");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(152,96), "S20997C22");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(1312,856), "S20997C22");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(1312,856), "S20997C22");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1320,860), "S20997C22");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1320,860), "S20997C22");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(1320,860), "S20997C22");
    check_base_class_offset(lv, (S20997C11*)(S20997C24*), ABISELECT(152,96), "S20997C22");
    check_base_class_offset(lv, (S20997C11*)(S20997C9*), ABISELECT(152,96), "S20997C22");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C9*), ABISELECT(1392,920), "S20997C22");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C9*), ABISELECT(1392,920), "S20997C22");
    check_base_class_offset(lv, (S20997C10*)(S20997C9*), ABISELECT(1392,920), "S20997C22");
    check_base_class_offset(lv, (S20997C9*)(S20997C25*), ABISELECT(1392,920), "S20997C22");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(1336,868), "S20997C22");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(1328,864), "S20997C22");
    check_base_class_offset(lv, (S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(1328,864), "S20997C22");
    check_base_class_offset(lv, (S20997C26*)(S20997C25*), ABISELECT(1328,864), "S20997C22");
    check_base_class_offset(lv, (S20997C25*)(S20997C24*), ABISELECT(1328,864), "S20997C22");
    check_base_class_offset(lv, (S20997C24*)(S20997C23*), ABISELECT(136,88), "S20997C22");
    check_base_class_offset(lv, (S20997C23*), 0, "S20997C22");
    /*is_ambiguous_... S20997C22::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S20997C22");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C3*), ABISELECT(1488,968), "S20997C22");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C18*), ABISELECT(1488,968), "S20997C22");
    /*is_ambiguous_... S20997C22::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*), ABISELECT(1480,964), "S20997C22");
    check_base_class_offset(lv, (S20997C5*)(S20997C3*), ABISELECT(1480,964), "S20997C22");
    check_base_class_offset(lv, (S20997C5*)(S20997C18*), ABISELECT(1480,964), "S20997C22");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*), ABISELECT(1480,964), "S20997C22");
    check_base_class_offset(lv, (S20997C3*)(S20997C27*), ABISELECT(1480,964), "S20997C22");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C20*), ABISELECT(1528,1004), "S20997C22");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C20*), ABISELECT(1520,1000), "S20997C22");
    check_base_class_offset(lv, (S20997C21*)(S20997C20*), ABISELECT(1520,1000), "S20997C22");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C20*), ABISELECT(1568,1044), "S20997C22");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C20*), ABISELECT(1568,1044), "S20997C22");
    check_base_class_offset(lv, (S20997C10*)(S20997C20*), ABISELECT(1568,1044), "S20997C22");
    check_base_class_offset(lv, (S20997C20*)(S20997C27*), ABISELECT(1520,1000), "S20997C22");
    check_base_class_offset(lv, (S4227C27*)(S20997C27*), ABISELECT(1480,964), "S20997C22");
    check_base_class_offset(lv, (S4227C23*)(S20997C29_nt*), 0, "S20997C22");
    check_base_class_offset(lv, (S20997C29_nt*)(S20997C27*), 0, "S20997C22");
    check_base_class_offset(lv, (S20997C27*), ABISELECT(1480,964), "S20997C22");
    check_base_class_offset(lv, (S20997C19*)(S20997C18*), ABISELECT(1656,1088), "S20997C22");
    check_base_class_offset(lv, (S20997C12*)(S20997C18*), ABISELECT(1664,1092), "S20997C22");
    check_base_class_offset(lv, (S20997C18*), ABISELECT(1656,1088), "S20997C22");
    test_class_info(&lv, &cd_S20997C22);
    dp->~S20997C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C22(Test_S20997C22, "S20997C22", ABISELECT(2832,1852));

#else // __cplusplus

extern void _ZN9S20997C22C1Ev();
extern void _ZN9S20997C22D1Ev();
Name_Map name_map_S20997C22[] = {
  NSPAIR(_ZN9S20997C22C1Ev),
  NSPAIR(_ZN9S20997C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C9;
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C26;
extern VTBL_ENTRY _ZTI9S20997C26[];
extern  VTBL_ENTRY _ZTV9S20997C26[];
extern Class_Descriptor cd_S20997C25;
extern VTBL_ENTRY _ZTI9S20997C25[];
extern  VTBL_ENTRY _ZTV9S20997C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C25[];
extern Class_Descriptor cd_S20997C24;
extern VTBL_ENTRY _ZTI9S20997C24[];
extern  VTBL_ENTRY _ZTV9S20997C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C24[];
extern Class_Descriptor cd_S20997C23;
extern VTBL_ENTRY _ZTI9S20997C23[];
extern  VTBL_ENTRY _ZTV9S20997C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C23[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C3;
extern VTBL_ENTRY _ZTI8S20997C3[];
extern  VTBL_ENTRY _ZTV8S20997C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C3[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C20;
extern VTBL_ENTRY _ZTI9S20997C20[];
extern  VTBL_ENTRY _ZTV9S20997C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C20[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S20997C29_nt;
extern VTBL_ENTRY _ZTI12S20997C29_nt[];
extern Class_Descriptor cd_S20997C27;
extern VTBL_ENTRY _ZTI9S20997C27[];
extern  VTBL_ENTRY _ZTV9S20997C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C27[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S20997C18;
extern VTBL_ENTRY _ZTI9S20997C18[];
extern  VTBL_ENTRY _ZTV9S20997C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C18[];
static Base_Class bases_S20997C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    ABISELECT(8,4), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1312,856), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1320,860), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1320,860), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(152,96), //bcp->offset
    41, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20997C9,    ABISELECT(1392,920), //bcp->offset
    79, //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
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20997C26,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20997C25,    ABISELECT(1328,864), //bcp->offset
    67, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20997C24,    ABISELECT(136,88), //bcp->offset
    28, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20997C23,    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
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10258C6_nt,    ABISELECT(1488,968), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1480,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(1480,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20997C3,    ABISELECT(1480,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1528,1004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    ABISELECT(1520,1000), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20997C21,    ABISELECT(1520,1000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(1568,1044), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1568,1044), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(1568,1044), //bcp->offset
    110, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20997C20,    ABISELECT(1520,1000), //bcp->offset
    105, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S4227C27,    ABISELECT(1480,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C27,    ABISELECT(1480,964), //bcp->offset
    90, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C19,    ABISELECT(1656,1088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(1664,1092), //bcp->offset
    130, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S20997C18,    ABISELECT(1656,1088), //bcp->offset
    114, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C22[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C22D1Ev();
extern void _ZN9S20997C22D0Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n80_N9S20997C22D1Ev,_ZTv0_n40_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn136_N9S20997C22D1Ev,_ZThn88_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20997C22D0Ev,_ZTv0_n40_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn136_N9S20997C22D0Ev,_ZThn88_N9S20997C22D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C22D1Ev,_ZTv0_n28_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn152_N9S20997C22D1Ev,_ZThn96_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C22D0Ev,_ZTv0_n28_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn152_N9S20997C22D0Ev,_ZThn96_N9S20997C22D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C22D1Ev,_ZTvn760_n28_N9S20997C22D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C22D0Ev,_ZTvn760_n28_N9S20997C22D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C22D1Ev,_ZTvn764_n28_N9S20997C22D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C22D0Ev,_ZTvn764_n28_N9S20997C22D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C22D1Ev,_ZTv0_n36_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn1328_N9S20997C22D1Ev,_ZThn864_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C22D0Ev,_ZTv0_n36_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn1328_N9S20997C22D0Ev,_ZThn864_N9S20997C22D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C22D1Ev,_ZTv0_n32_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn1392_N9S20997C22D1Ev,_ZThn920_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C22D0Ev,_ZTv0_n32_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn1392_N9S20997C22D0Ev,_ZThn920_N9S20997C22D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn1480_N9S20997C22D1Ev,_ZThn964_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn1480_N9S20997C22D0Ev,_ZThn964_N9S20997C22D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn1656_N9S20997C22D1Ev,_ZThn1088_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn1656_N9S20997C22D0Ev,_ZThn1088_N9S20997C22D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C22[] = {
  ABISELECT(1664,1092),
  ABISELECT(1656,1088),
  ABISELECT(1656,1088),
  0,
  ABISELECT(1520,1000),
  ABISELECT(1480,964),
  ABISELECT(1488,968),
  ABISELECT(1480,964),
  ABISELECT(1480,964),
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  ABISELECT(1328,864),
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C22D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C22D1Ev,_ZTv0_n40_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C22D0Ev,_ZTv0_n40_N9S20997C22D0Ev),
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C22D1Ev,_ZTv0_n28_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C22D0Ev,_ZTv0_n28_N9S20997C22D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C22D1Ev,_ZTvn760_n28_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C22D0Ev,_ZTvn760_n28_N9S20997C22D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C22D1Ev,_ZTvn764_n28_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C22D0Ev,_ZTvn764_n28_N9S20997C22D0Ev),
  ABISELECT(-1328,-864),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C22D1Ev,_ZTv0_n36_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C22D0Ev,_ZTv0_n36_N9S20997C22D0Ev),
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C22D1Ev,_ZTv0_n32_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C22D0Ev,_ZTv0_n32_N9S20997C22D0Ev),
  ABISELECT(-1480,-964),
  ABISELECT(40,36),
  0,
  ABISELECT(-1472,-960),
  0,
  ABISELECT(8,4),
  ABISELECT(-1480,-964),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(-1480,-964),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev),
  0,
  ABISELECT(-1424,-952),
  ABISELECT(-1520,-1000),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-1472,-996),
  ABISELECT(-1568,-1044),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  ABISELECT(-1656,-1088),
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  ABISELECT(-1656,-1088),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C22[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C23D1Ev();
extern void _ZN9S20997C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C23__9S20997C22[] = {
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  ABISELECT(1328,864),
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C23D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C23__9S20997C22[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n80_N9S20997C23D1Ev,_ZTv0_n40_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn136_N9S20997C23D1Ev,_ZThn88_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20997C23D0Ev,_ZTv0_n40_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn136_N9S20997C23D0Ev,_ZThn88_N9S20997C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C24__9S20997C23__9S20997C22[] = {
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C23D1Ev,_ZTv0_n40_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C23D0Ev,_ZTv0_n40_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C23D1Ev,_ZTv0_n28_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn152_N9S20997C23D1Ev,_ZThn96_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C23D0Ev,_ZTv0_n28_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn152_N9S20997C23D0Ev,_ZThn96_N9S20997C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C23__9S20997C22[] = {
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C23D1Ev,_ZTv0_n28_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C23D0Ev,_ZTv0_n28_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C23D1Ev,_ZTvn760_n28_N9S20997C23D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C23D0Ev,_ZTvn760_n28_N9S20997C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C23__9S20997C22[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C23D1Ev,_ZTvn760_n28_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C23D0Ev,_ZTvn760_n28_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C23D1Ev,_ZTvn764_n28_N9S20997C23D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C23D0Ev,_ZTvn764_n28_N9S20997C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C23__9S20997C22[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C23D1Ev,_ZTvn764_n28_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C23D0Ev,_ZTvn764_n28_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C23D1Ev,_ZTv0_n36_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn1328_N9S20997C23D1Ev,_ZThn864_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C23D0Ev,_ZTv0_n36_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn1328_N9S20997C23D0Ev,_ZThn864_N9S20997C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C23__9S20997C22[] = {
  ABISELECT(-1328,-864),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C23D1Ev,_ZTv0_n36_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C23D0Ev,_ZTv0_n36_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C23D1Ev,_ZTv0_n32_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn1392_N9S20997C23D1Ev,_ZThn920_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C23D0Ev,_ZTv0_n32_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn1392_N9S20997C23D0Ev,_ZThn920_N9S20997C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C23__9S20997C22[] = {
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C23D1Ev,_ZTv0_n32_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C23D0Ev,_ZTv0_n32_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C22[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C24D1Ev();
extern void _ZN9S20997C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C24__9S20997C22[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C24D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn16_N9S20997C24D1Ev,_ZThn8_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn16_N9S20997C24D0Ev,_ZThn8_N9S20997C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C24__9S20997C22[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C24__9S20997C22[] = {
  0,
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C24D1Ev,_ZTvn760_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C24D0Ev,_ZTvn760_n28_N9S20997C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C24__9S20997C22[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C24D1Ev,_ZTvn760_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C24D0Ev,_ZTvn760_n28_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C24D1Ev,_ZTvn764_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C24D0Ev,_ZTvn764_n28_N9S20997C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C24__9S20997C22[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C24D1Ev,_ZTvn764_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C24D0Ev,_ZTvn764_n28_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn1192_N9S20997C24D1Ev,_ZThn776_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn1192_N9S20997C24D0Ev,_ZThn776_N9S20997C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C24__9S20997C22[] = {
  ABISELECT(-1192,-776),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn1256_N9S20997C24D1Ev,_ZThn832_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn1256_N9S20997C24D0Ev,_ZThn832_N9S20997C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C24__9S20997C22[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C22[] = {
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__9S20997C22[] = {
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C129S20997C11__9S20997C22[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C22[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C22[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C22[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C22[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C22[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C22[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C11__9S20997C22[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__9S20997C22[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__9S20997C22[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C25D1Ev();
extern void _ZN9S20997C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C22[] = {
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C25__9S20997C22[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C25__9S20997C22[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C25__9S20997C22[] = {
  ABISELECT(1176,768),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C25__9S20997C22[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C25__9S20997C22[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C22[] = {
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C108S20997C9__A1__9S20997C22[] = {
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C9__9S20997C22[] = {
  0,
  ABISELECT(1392,920),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C9__9S20997C22[] = {
  ABISELECT(1240,824),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C22[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C22[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C27D1Ev,_ZTv0_n24_N9S20997C27D1Ev)();
extern void _ZN9S20997C27D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C27D0Ev,_ZTv0_n24_N9S20997C27D0Ev)();
extern void _ZN9S20997C27D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C27__9S20997C22[] = {
  ABISELECT(-1480,-964),
  ABISELECT(40,36),
  0,
  ABISELECT(-1472,-960),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C27D1Ev,_ZTv0_n24_N9S20997C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C27D0Ev,_ZTv0_n24_N9S20997C27D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C27__9S20997C22[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(1472,960),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__A1__9S20997C27__9S20997C22[] = {
  0,
  ABISELECT(1480,964),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C27__9S20997C22[] = {
  0,
  ABISELECT(-1424,-952),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A1__9S20997C27__9S20997C22[] = {
  ABISELECT(-1472,-996),
  ABISELECT(-88,-80),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev)();
extern void _ZN8S20997C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev)();
extern void _ZN8S20997C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__9S20997C22[] = {
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C3[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C3__9S20997C22[] = {
  0,
  ABISELECT(1480,964),
  (VTBL_ENTRY)&(_ZTI8S20997C3[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__A2__9S20997C22[] = {
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C5__A2__9S20997C22[] = {
  0,
  ABISELECT(1480,964),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C22[] = {
  ABISELECT(-1424,-952),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A2__9S20997C22[] = {
  ABISELECT(-1472,-996),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C20__9S20997C22[] = {
  ABISELECT(-1472,-996),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void _ZN9S20997C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void _ZN9S20997C18D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C22[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  0,
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C18__9S20997C22[] = {
  0,
  ABISELECT(1656,1088),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C18__9S20997C22[] = {
  ABISELECT(176,124),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(176,124),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C18__9S20997C22[] = {
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__9S20997C22[] = {
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  0,
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C19__9S20997C22[] = {
  ABISELECT(176,124),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(176,124),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C19__9S20997C22[] = {
  0,
  ABISELECT(1656,1088),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__A1__9S20997C22[] = {
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C12__A1__9S20997C22[] = {
  0,
  ABISELECT(1664,1092),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C22[] = {
  {&(_ZTV9S20997C22[20]),  20,135},
  {&(_tg__ZTV9S20997C23__9S20997C22[11]),  11,14},
  {&(_tg__ZTV9S20997C10__9S20997C23__9S20997C22[4]),  4,5},
  {&(_tg__ZTV9S20997C24__9S20997C23__9S20997C22[10]),  10,13},
  {&(_tg__ZTV9S20997C11__9S20997C23__9S20997C22[7]),  7,10},
  {&(_tg__ZTV9S20997C23__9S20997C22[11]),  11,14},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C23__9S20997C22[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C23__9S20997C22[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C23__9S20997C22[9]),  9,12},
  {&(_tg__ZTV8S20997C9__9S20997C23__9S20997C22[8]),  8,11},
  {&(_ZTV9S20997C22[27]),  27,135},
  {&(_ZTV9S20997C22[38]),  38,135},
  {&(_ZTV9S20997C22[48]),  48,135},
  {&(_ZTV9S20997C22[20]),  20,135},
  {&(_ZTV9S20997C22[56]),  56,135},
  {&(_ZTV9S20997C22[64]),  64,135},
  {&(_ZTV9S20997C22[76]),  76,135},
  {&(_ZTV9S20997C22[87]),  87,135},
  {&(_ZTV9S20997C22[102]),  102,135},
  {&(_ZTV9S20997C22[102]),  102,135},
  {&(_ZTV9S20997C22[102]),  102,135},
  {&(_ZTV9S20997C22[109]),  109,135},
  {&(_ZTV9S20997C22[113]),  113,135},
  {&(_ZTV9S20997C22[126]),  126,135},
  {&(_ZTV9S20997C22[126]),  126,135},
  {&(_ZTV9S20997C22[134]),  134,135},
  {&(_tg__ZTV9S20997C10__9S20997C22[3]),  3,4},
  {&(_tg__ZTV9S20997C24__9S20997C22[9]),  9,12},
  {&(_tg__ZTV9S20997C11__9S20997C24__9S20997C22[7]),  7,10},
  {&(_tg__ZTV8S20997C7__9S20997C24__9S20997C22[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C24__9S20997C22[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C24__9S20997C22[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C24__9S20997C22[9]),  9,12},
  {&(_tg__ZTV8S20997C9__9S20997C24__9S20997C22[8]),  8,11},
  {&(_tg__ZTV9S20997C11__9S20997C22[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C22[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C129S20997C11__9S20997C22[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C22[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C22[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C22[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C22[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C22[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C22[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C11__9S20997C22[3]),  3,4},
  {&(_tg__ZTV8S20997C5__9S20997C11__9S20997C22[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__9S20997C22[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C22[7]),  7,10},
  {&(_tg__ZTV8S20997C9__9S20997C25__9S20997C22[8]),  8,11},
  {&(_tg__ZTV8S20997C7__9S20997C25__9S20997C22[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C25__9S20997C22[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C25__9S20997C22[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C25__9S20997C22[5]),  5,8},
  {&(_tg__ZTV8S20997C9__9S20997C22[6]),  6,9},
  {&(_tg__ZTV9S20997C108S20997C9__A1__9S20997C22[3]),  3,4},
  {&(_tg__ZTV8S20997C7__8S20997C9__9S20997C22[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C9__9S20997C22[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C22[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C22[5]),  5,8},
  {&(_tg__ZTV9S20997C27__9S20997C22[12]),  12,15},
  {&(_tg__ZTV9S20997C10__9S20997C27__9S20997C22[4]),  4,5},
  {&(_tg__ZTV9S20997C27__9S20997C22[12]),  12,15},
  {&(_tg__ZTV9S20997C27__9S20997C22[12]),  12,15},
  {&(_tg__ZTV8S20997C7__A1__9S20997C27__9S20997C22[3]),  3,4},
  {&(_tg__ZTV9S20997C20__9S20997C27__9S20997C22[4]),  4,5},
  {&(_tg__ZTV9S20997C109S20997C20__A1__9S20997C27__9S20997C22[3]),  3,4},
  {&(_tg__ZTV8S20997C3__9S20997C22[8]),  8,11},
  {&(_tg__ZTV8S20997C3__9S20997C22[8]),  8,11},
  {&(_tg__ZTV8S20997C7__8S20997C3__9S20997C22[3]),  3,4},
  {&(_tg__ZTV8S20997C5__A2__9S20997C22[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C5__A2__9S20997C22[3]),  3,4},
  {&(_tg__ZTV9S20997C20__9S20997C22[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C20__A2__9S20997C22[3]),  3,4},
  {&(_tg__ZTV9S20997C10__9S20997C20__9S20997C22[3]),  3,4},
  {&(_tg__ZTV9S20997C18__9S20997C22[12]),  12,16},
  {&(_tg__ZTV8S20997C7__9S20997C18__9S20997C22[3]),  3,4},
  {&(_tg__ZTV8S20997C5__9S20997C18__9S20997C22[6]),  6,9},
  {&(_tg__ZTV9S20997C18__9S20997C22[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C18__9S20997C22[4]),  4,5},
  {&(_tg__ZTV9S20997C19__9S20997C22[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C19__9S20997C22[6]),  6,9},
  {&(_tg__ZTV8S20997C7__9S20997C19__9S20997C22[3]),  3,4},
  {&(_tg__ZTV9S20997C12__A1__9S20997C22[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C12__A1__9S20997C22[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C22[];
extern  VTBL_ENTRY _ZTV9S20997C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C22[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C27D0Ev,_ZTv0_n24_N9S20997C27D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C27D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C27D1Ev,_ZTv0_n24_N9S20997C27D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C27D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N9S20997C24D0Ev,_ZThn832_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N9S20997C24D1Ev,_ZThn832_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N9S20997C24D0Ev,_ZThn776_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N9S20997C24D1Ev,_ZThn776_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20997C24D0Ev,_ZThn8_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20997C24D1Ev,_ZThn8_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C23D0Ev,_ZTv0_n32_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N9S20997C23D0Ev,_ZThn920_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C23D1Ev,_ZTv0_n32_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N9S20997C23D1Ev,_ZThn920_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C23D0Ev,_ZTv0_n36_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S20997C23D0Ev,_ZThn864_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C23D1Ev,_ZTv0_n36_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S20997C23D1Ev,_ZThn864_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C23D0Ev,_ZTv0_n28_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20997C23D0Ev,_ZThn96_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C23D1Ev,_ZTv0_n28_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20997C23D1Ev,_ZThn96_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C23D0Ev,_ZTv0_n40_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20997C23D0Ev,_ZThn88_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C23D1Ev,_ZTv0_n40_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20997C23D1Ev,_ZThn88_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N9S20997C22D0Ev,_ZThn1088_N9S20997C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1480_N9S20997C22D0Ev,_ZThn964_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N9S20997C22D1Ev,_ZThn1088_N9S20997C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1480_N9S20997C22D1Ev,_ZThn964_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C22D0Ev,_ZTv0_n32_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N9S20997C22D0Ev,_ZThn920_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C22D1Ev,_ZTv0_n32_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N9S20997C22D1Ev,_ZThn920_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C22D0Ev,_ZTv0_n36_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S20997C22D0Ev,_ZThn864_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C22D1Ev,_ZTv0_n36_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S20997C22D1Ev,_ZThn864_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C22D0Ev,_ZTv0_n28_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20997C22D0Ev,_ZThn96_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C22D1Ev,_ZTv0_n28_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20997C22D1Ev,_ZThn96_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C22D0Ev,_ZTv0_n40_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20997C22D0Ev,_ZThn88_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C22D1Ev,_ZTv0_n40_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20997C22D1Ev,_ZThn88_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C22 = {  "S20997C22", // class name
  bases_S20997C22, 43,
  &(vtc_S20997C22[0]), // expected_vtbl_contents
  &(vtt_S20997C22[0]), // expected_vtt_contents
  ABISELECT(2832,1852), // object size
  NSPAIRA(_ZTI9S20997C22),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20997C22),135, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C22),83, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C32  : S20997C25 {
  virtual  ~S20997C32(); // _ZN9S20997C32D2Ev
  virtual void  v4(); // _ZN9S20997C322v4Ev
  S20997C32(); // tgen
};
//SIG(-1 S20997C32) C1{ BC2{ VBC3{ VBC4{ v2} BC5{ BC4 VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC7 BC9{ VBC4 FC5[9]} BC10{ VBC6 VBC4 BC7 vd} BC11{ BC10 vd}} vd} BC12{ BC13{ BC6 BC4} FD}} vd v1}


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

static void Test_S20997C32()
{
  extern Class_Descriptor cd_S20997C32;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S20997C32, buf);
    S20997C32 *dp, &lv = *(dp=new (buf) S20997C32());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S20997C32)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20997C32)");
    /*is_ambiguous_... S20997C9::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C9*), ABISELECT(192,140), "S20997C32");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), ABISELECT(192,140), "S20997C32");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), ABISELECT(192,140), "S20997C32");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(192,140), "S20997C32");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C9*), ABISELECT(64,56), "S20997C32");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C9*), ABISELECT(152,100), "S20997C32");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(152,100), "S20997C32");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(152,100), "S20997C32");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C9*), ABISELECT(64,56), "S20997C32");
    check_base_class_offset(lv, (S20997C10*)(S20997C9*), ABISELECT(64,56), "S20997C32");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), 0, "S20997C32");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(192,140), "S20997C32");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(1352,900), "S20997C32");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(1352,900), "S20997C32");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1360,904), "S20997C32");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1360,904), "S20997C32");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(1360,904), "S20997C32");
    check_base_class_offset(lv, (S20997C11*)(S20997C9*), ABISELECT(192,140), "S20997C32");
    check_base_class_offset(lv, (S20997C9*)(S20997C25*), ABISELECT(64,56), "S20997C32");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(8,4), "S20997C32");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C26*)(S20997C25*), 0, "S20997C32");
    check_base_class_offset(lv, (S20997C21*)(S20997C26*)(S20997C25*), 0, "S20997C32");
    check_base_class_offset(lv, (S20997C26*)(S20997C25*), 0, "S20997C32");
    check_base_class_offset(lv, (S20997C25*), 0, "S20997C32");
    test_class_info(&lv, &cd_S20997C32);
    dp->~S20997C32();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C32(Test_S20997C32, "S20997C32", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN9S20997C32C1Ev();
extern void _ZN9S20997C32D2Ev();
Name_Map name_map_S20997C32[] = {
  NSPAIR(_ZN9S20997C32C1Ev),
  NSPAIR(_ZN9S20997C32D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
extern Class_Descriptor cd_S20997C9;
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C26;
extern VTBL_ENTRY _ZTI9S20997C26[];
extern  VTBL_ENTRY _ZTV9S20997C26[];
extern Class_Descriptor cd_S20997C25;
extern VTBL_ENTRY _ZTI9S20997C25[];
extern  VTBL_ENTRY _ZTV9S20997C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C25[];
static Base_Class bases_S20997C32[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    ABISELECT(192,140), //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
    6, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C12,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(1352,900), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1360,904), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(192,140), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20997C9,    ABISELECT(64,56), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20997C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20997C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20997C25,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C32[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C32D1Ev();
extern void _ZN9S20997C32D0Ev();
extern void _ZN9S20997C322v4Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C32D1Ev,_ZTv0_n32_N9S20997C32D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C32D1Ev,_ZThn56_N9S20997C32D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C32D0Ev,_ZTv0_n32_N9S20997C32D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C32D0Ev,_ZThn56_N9S20997C32D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C32D1Ev,_ZTv0_n28_N9S20997C32D1Ev)();
extern void ABISELECT(_ZThn192_N9S20997C32D1Ev,_ZThn140_N9S20997C32D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C32D0Ev,_ZTv0_n28_N9S20997C32D0Ev)();
extern void ABISELECT(_ZThn192_N9S20997C32D0Ev,_ZThn140_N9S20997C32D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C32D1Ev,_ZTvn760_n28_N9S20997C32D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C32D0Ev,_ZTvn760_n28_N9S20997C32D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C32D1Ev,_ZTvn764_n28_N9S20997C32D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C32D0Ev,_ZTvn764_n28_N9S20997C32D0Ev)();
static  VTBL_ENTRY vtc_S20997C32[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C32D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C32D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C322v4Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C32D1Ev,_ZTv0_n32_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C32D0Ev,_ZTv0_n32_N9S20997C32D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C32D1Ev,_ZTv0_n28_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C32D0Ev,_ZTv0_n28_N9S20997C32D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C32D1Ev,_ZTvn760_n28_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C32D0Ev,_ZTvn760_n28_N9S20997C32D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C32D1Ev,_ZTvn764_n28_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C32D0Ev,_ZTvn764_n28_N9S20997C32D0Ev),
};
extern VTBL_ENTRY _ZTV9S20997C32[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C25D1Ev();
extern void _ZN9S20997C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C32[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C25__9S20997C32[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn192_N9S20997C25D1Ev,_ZThn140_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn192_N9S20997C25D0Ev,_ZThn140_N9S20997C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C25__9S20997C32[] = {
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C25__9S20997C32[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C25__9S20997C32[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C32[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C108S20997C9__9S20997C32[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S20997C9D1Ev,_ZThn84_N8S20997C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S20997C9D0Ev,_ZThn84_N8S20997C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C9__9S20997C32[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C32[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C32[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C32[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__9S20997C32[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C32[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C32[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C32[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C32[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C32[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C32[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__9S20997C32[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__9S20997C32[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
static  VTT_ENTRY vtt_S20997C32[] = {
  {&(_ZTV9S20997C32[7]),  7,48},
  {&(_tg__ZTV9S20997C25__9S20997C32[7]),  7,10},
  {&(_tg__ZTV8S20997C9__9S20997C25__9S20997C32[8]),  8,11},
  {&(_tg__ZTV9S20997C11__9S20997C25__9S20997C32[7]),  7,10},
  {&(_tg__ZTV9S20997C11__9S20997C25__9S20997C32[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C25__9S20997C32[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C25__9S20997C32[5]),  5,8},
  {&(_ZTV9S20997C32[19]),  19,48},
  {&(_ZTV9S20997C32[29]),  29,48},
  {&(_ZTV9S20997C32[29]),  29,48},
  {&(_ZTV9S20997C32[37]),  37,48},
  {&(_ZTV9S20997C32[45]),  45,48},
  {&(_tg__ZTV8S20997C9__9S20997C32[6]),  6,9},
  {&(_tg__ZTV9S20997C108S20997C9__9S20997C32[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C9__9S20997C32[7]),  7,10},
  {&(_tg__ZTV9S20997C11__8S20997C9__9S20997C32[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C32[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C32[5]),  5,8},
  {&(_tg__ZTV9S20997C11__9S20997C32[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C32[4]),  4,5},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C32[4]),  4,5},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C32[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C32[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C32[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C32[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C32[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C32[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C32[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C11__9S20997C32[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__9S20997C32[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20997C32[];
extern  VTBL_ENTRY _ZTV9S20997C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C32[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C9D0Ev,_ZThn84_N8S20997C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C9D1Ev,_ZThn84_N8S20997C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C25D0Ev,_ZThn140_N9S20997C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C25D1Ev,_ZThn140_N9S20997C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C32D0Ev,_ZTv0_n28_N9S20997C32D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C32D0Ev,_ZThn140_N9S20997C32D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C32D1Ev,_ZTv0_n28_N9S20997C32D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C32D1Ev,_ZThn140_N9S20997C32D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C32D0Ev,_ZTv0_n32_N9S20997C32D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C32D0Ev,_ZThn56_N9S20997C32D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C32D1Ev,_ZTv0_n32_N9S20997C32D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C32D1Ev,_ZThn56_N9S20997C32D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C32 = {  "S20997C32", // class name
  bases_S20997C32, 19,
  &(vtc_S20997C32[0]), // expected_vtbl_contents
  &(vtt_S20997C32[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI9S20997C32),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20997C32),48, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C32),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C31  : S20997C32 {
  ~S20997C31(); // tgen
  S20997C31(); // tgen
};
//SIG(-1 S20997C31) C1{ BC2{ BC3{ VBC4{ VBC5{ v1} BC6{ BC5 VBC7{ m FL[5]} BC8{ m} Fp[10]} VBC9{ VBC8 BC10{ VBC5 FC6[9]} BC11{ VBC7 VBC5 BC8 vd} BC12{ BC11 vd}} vd} BC13{ BC14{ BC7 BC5} FD}} vd v2}}


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

static void Test_S20997C31()
{
  extern Class_Descriptor cd_S20997C31;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S20997C31, buf);
    S20997C31 *dp, &lv = *(dp=new (buf) S20997C31());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S20997C31)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20997C31)");
    /*is_ambiguous_... S20997C9::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C9*), ABISELECT(192,140), "S20997C31");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), ABISELECT(192,140), "S20997C31");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), ABISELECT(192,140), "S20997C31");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(192,140), "S20997C31");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C9*), ABISELECT(64,56), "S20997C31");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C9*), ABISELECT(152,100), "S20997C31");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(152,100), "S20997C31");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(152,100), "S20997C31");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C9*), ABISELECT(64,56), "S20997C31");
    check_base_class_offset(lv, (S20997C10*)(S20997C9*), ABISELECT(64,56), "S20997C31");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), 0, "S20997C31");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(192,140), "S20997C31");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(1352,900), "S20997C31");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(1352,900), "S20997C31");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1360,904), "S20997C31");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1360,904), "S20997C31");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(1360,904), "S20997C31");
    check_base_class_offset(lv, (S20997C11*)(S20997C9*), ABISELECT(192,140), "S20997C31");
    check_base_class_offset(lv, (S20997C9*)(S20997C25*)(S20997C32*), ABISELECT(64,56), "S20997C31");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C26*)(S20997C25*)(S20997C32*), ABISELECT(8,4), "S20997C31");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C26*)(S20997C25*)(S20997C32*), 0, "S20997C31");
    check_base_class_offset(lv, (S20997C21*)(S20997C26*)(S20997C25*)(S20997C32*), 0, "S20997C31");
    check_base_class_offset(lv, (S20997C26*)(S20997C25*)(S20997C32*), 0, "S20997C31");
    check_base_class_offset(lv, (S20997C25*)(S20997C32*), 0, "S20997C31");
    check_base_class_offset(lv, (S20997C32*), 0, "S20997C31");
    test_class_info(&lv, &cd_S20997C31);
    dp->~S20997C31();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C31(Test_S20997C31, "S20997C31", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN9S20997C31C1Ev();
extern void _ZN9S20997C31D1Ev();
Name_Map name_map_S20997C31[] = {
  NSPAIR(_ZN9S20997C31C1Ev),
  NSPAIR(_ZN9S20997C31D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
extern Class_Descriptor cd_S20997C9;
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C26;
extern VTBL_ENTRY _ZTI9S20997C26[];
extern  VTBL_ENTRY _ZTV9S20997C26[];
extern Class_Descriptor cd_S20997C25;
extern VTBL_ENTRY _ZTI9S20997C25[];
extern  VTBL_ENTRY _ZTV9S20997C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C25[];
extern Class_Descriptor cd_S20997C32;
extern VTBL_ENTRY _ZTI9S20997C32[];
extern  VTBL_ENTRY _ZTV9S20997C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C32[];
static Base_Class bases_S20997C31[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    ABISELECT(192,140), //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
    6, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(64,56), //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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C12,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(1352,900), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1360,904), //bcp->offset
    40, //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
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(192,140), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20997C9,    ABISELECT(64,56), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20997C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20997C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20997C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20997C32,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C31[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C31D1Ev();
extern void _ZN9S20997C31D0Ev();
extern void _ZN9S20997C322v4Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C31D1Ev,_ZTv0_n32_N9S20997C31D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C31D1Ev,_ZThn56_N9S20997C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C31D0Ev,_ZTv0_n32_N9S20997C31D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C31D0Ev,_ZThn56_N9S20997C31D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C31D1Ev,_ZTv0_n28_N9S20997C31D1Ev)();
extern void ABISELECT(_ZThn192_N9S20997C31D1Ev,_ZThn140_N9S20997C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C31D0Ev,_ZTv0_n28_N9S20997C31D0Ev)();
extern void ABISELECT(_ZThn192_N9S20997C31D0Ev,_ZThn140_N9S20997C31D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C31D1Ev,_ZTvn760_n28_N9S20997C31D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C31D0Ev,_ZTvn760_n28_N9S20997C31D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C31D1Ev,_ZTvn764_n28_N9S20997C31D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C31D0Ev,_ZTvn764_n28_N9S20997C31D0Ev)();
static  VTBL_ENTRY vtc_S20997C31[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C31D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C31D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C322v4Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C31D1Ev,_ZTv0_n32_N9S20997C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C31D0Ev,_ZTv0_n32_N9S20997C31D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C31D1Ev,_ZTv0_n28_N9S20997C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C31D0Ev,_ZTv0_n28_N9S20997C31D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C31D1Ev,_ZTvn760_n28_N9S20997C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C31D0Ev,_ZTvn760_n28_N9S20997C31D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C31D1Ev,_ZTvn764_n28_N9S20997C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C31D0Ev,_ZTvn764_n28_N9S20997C31D0Ev),
};
extern VTBL_ENTRY _ZTV9S20997C31[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C32D1Ev();
extern void _ZN9S20997C32D0Ev();
extern void _ZN9S20997C322v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C32__9S20997C31[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C32D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C32D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C322v4Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C25D1Ev();
extern void _ZN9S20997C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C259S20997C32__9S20997C31[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C259S20997C32__9S20997C31[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn192_N9S20997C25D1Ev,_ZThn140_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn192_N9S20997C25D0Ev,_ZThn140_N9S20997C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C259S20997C32__9S20997C31[] = {
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C259S20997C32__9S20997C31[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C259S20997C32__9S20997C31[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C32D1Ev,_ZTv0_n32_N9S20997C32D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C32D1Ev,_ZThn56_N9S20997C32D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C32D0Ev,_ZTv0_n32_N9S20997C32D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C32D0Ev,_ZThn56_N9S20997C32D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C32__9S20997C31[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C32D1Ev,_ZTv0_n32_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C32D0Ev,_ZTv0_n32_N9S20997C32D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C32D1Ev,_ZTv0_n28_N9S20997C32D1Ev)();
extern void ABISELECT(_ZThn192_N9S20997C32D1Ev,_ZThn140_N9S20997C32D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C32D0Ev,_ZTv0_n28_N9S20997C32D0Ev)();
extern void ABISELECT(_ZThn192_N9S20997C32D0Ev,_ZThn140_N9S20997C32D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C32__9S20997C31[] = {
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C32D1Ev,_ZTv0_n28_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C32D0Ev,_ZTv0_n28_N9S20997C32D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C32D1Ev,_ZTvn760_n28_N9S20997C32D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C32D0Ev,_ZTvn760_n28_N9S20997C32D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C32__9S20997C31[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C32D1Ev,_ZTvn760_n28_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C32D0Ev,_ZTvn760_n28_N9S20997C32D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C32D1Ev,_ZTvn764_n28_N9S20997C32D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C32D0Ev,_ZTvn764_n28_N9S20997C32D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C32__9S20997C31[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C32D1Ev,_ZTvn764_n28_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C32D0Ev,_ZTvn764_n28_N9S20997C32D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C31[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C108S20997C9__9S20997C31[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S20997C9D1Ev,_ZThn84_N8S20997C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S20997C9D0Ev,_ZThn84_N8S20997C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C9__9S20997C31[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C31[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C31[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C31[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__9S20997C31[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C31[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C31[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C31[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C31[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C31[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C31[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__9S20997C31[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__9S20997C31[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
static  VTT_ENTRY vtt_S20997C31[] = {
  {&(_ZTV9S20997C31[7]),  7,48},
  {&(_tg__ZTV9S20997C32__9S20997C31[7]),  7,11},
  {&(_tg__ZTV9S20997C259S20997C32__9S20997C31[7]),  7,10},
  {&(_tg__ZTV8S20997C9__9S20997C259S20997C32__9S20997C31[8]),  8,11},
  {&(_tg__ZTV9S20997C11__9S20997C259S20997C32__9S20997C31[7]),  7,10},
  {&(_tg__ZTV9S20997C11__9S20997C259S20997C32__9S20997C31[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C259S20997C32__9S20997C31[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C259S20997C32__9S20997C31[5]),  5,8},
  {&(_tg__ZTV8S20997C9__9S20997C32__9S20997C31[8]),  8,11},
  {&(_tg__ZTV9S20997C11__9S20997C32__9S20997C31[7]),  7,10},
  {&(_tg__ZTV9S20997C11__9S20997C32__9S20997C31[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C32__9S20997C31[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C32__9S20997C31[5]),  5,8},
  {&(_ZTV9S20997C31[19]),  19,48},
  {&(_ZTV9S20997C31[29]),  29,48},
  {&(_ZTV9S20997C31[29]),  29,48},
  {&(_ZTV9S20997C31[37]),  37,48},
  {&(_ZTV9S20997C31[45]),  45,48},
  {&(_tg__ZTV8S20997C9__9S20997C31[6]),  6,9},
  {&(_tg__ZTV9S20997C108S20997C9__9S20997C31[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C9__9S20997C31[7]),  7,10},
  {&(_tg__ZTV9S20997C11__8S20997C9__9S20997C31[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C31[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C31[5]),  5,8},
  {&(_tg__ZTV9S20997C11__9S20997C31[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C31[4]),  4,5},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C31[4]),  4,5},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C31[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C31[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C31[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C31[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C31[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C31[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C31[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C11__9S20997C31[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__9S20997C31[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20997C31[];
extern  VTBL_ENTRY _ZTV9S20997C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C31[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C9D0Ev,_ZThn84_N8S20997C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C9D1Ev,_ZThn84_N8S20997C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C32D0Ev,_ZTv0_n28_N9S20997C32D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C32D0Ev,_ZThn140_N9S20997C32D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C32D1Ev,_ZTv0_n28_N9S20997C32D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C32D1Ev,_ZThn140_N9S20997C32D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C32D0Ev,_ZTv0_n32_N9S20997C32D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C32D0Ev,_ZThn56_N9S20997C32D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C32D1Ev,_ZTv0_n32_N9S20997C32D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C32D1Ev,_ZThn56_N9S20997C32D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C25D0Ev,_ZThn140_N9S20997C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C25D1Ev,_ZThn140_N9S20997C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C31D0Ev,_ZTv0_n28_N9S20997C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C31D0Ev,_ZThn140_N9S20997C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C31D1Ev,_ZTv0_n28_N9S20997C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C31D1Ev,_ZThn140_N9S20997C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C31D0Ev,_ZTv0_n32_N9S20997C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C31D0Ev,_ZThn56_N9S20997C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C31D1Ev,_ZTv0_n32_N9S20997C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C31D1Ev,_ZThn56_N9S20997C31D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C31 = {  "S20997C31", // class name
  bases_S20997C31, 20,
  &(vtc_S20997C31[0]), // expected_vtbl_contents
  &(vtt_S20997C31[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI9S20997C31),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20997C31),48, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C31),36, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C14  : virtual S20997C15 , virtual S20997C22 , S20997C31 {
  virtual  ~S20997C14(); // _ZN9S20997C14D2Ev
  S20997C14(); // tgen
};
//SIG(-1 S20997C14) C1{ VBC2{ BC3{ VBC4{ VBC5{ BC6{ v1} VBC7{ m FL[5]} BC8{ m} Fp[10]}} BC6 VBC9{ m FL[4]} VBC10{ VBC6 VBC11{ VBC7 VBC6 BC8 vd} VBC9 VBC12{ VBC8 VBC11 v2} VBC13{ VBC6 FC5[9]} vd} BC14{ BC15{ BC7 BC6} BC5}} vd Fs} VBC16{ BC17{ VBC5 VBC18{ VBC7 VBC19{ VBC8 BC13 BC11 BC20{ BC11 vd}} VBC21{ VBC22{ VBC6 BC5 VBC19 vd} BC23{ BC15 FD}} vd Fp}} BC8 VBC24{ VBC5 VBC25{ VBC9 VBC11 vd} VBC14 BC26{ m} VBC27{ BC28{ m}} vd} VBC10} BC29{ BC30{ BC21 vd v3}} vd}


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

static void Test_S20997C14()
{
  extern Class_Descriptor cd_S20997C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(192,503)];
    init_test(&cd_S20997C14, buf);
    S20997C14 *dp, &lv = *(dp=new (buf) S20997C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3056,2008), "sizeof(S20997C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20997C14)");
    /*is_ambiguous_... S20997C14::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*), ABISELECT(224,156), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*), ABISELECT(312,200), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(312,200), "S20997C14");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(312,200), "S20997C14");
    /*is_ambiguous_... S20997C24::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C24*), ABISELECT(312,200), "S20997C14");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(312,200), "S20997C14");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(312,200), "S20997C14");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C9*), ABISELECT(312,200), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C20 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C20*), ABISELECT(312,200), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C10 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*), ABISELECT(224,156), "S20997C14");
    check_base_class_offset(lv, (S20997C10*)(S20997C17*), ABISELECT(224,156), "S20997C14");
    /*is_ambiguous_... S20997C23::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C10*)(S20997C23*)(S20997C22*), ABISELECT(224,156), "S20997C14");
    /*is_ambiguous_... S20997C27::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C10*)(S20997C27*), ABISELECT(224,156), "S20997C14");
    check_base_class_offset(lv, (S20997C17*)(S20997C16*)(S20997C15*), ABISELECT(216,152), "S20997C14");
    /*is_ambiguous_... S20997C16::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C16*)(S20997C15*), ABISELECT(64,56), "S20997C14");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C16*)(S20997C15*), ABISELECT(352,240), "S20997C14");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C18*), ABISELECT(352,240), "S20997C14");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C3*), ABISELECT(352,240), "S20997C14");
    check_base_class_offset(lv, (S20997C7*)(S20997C18*), ABISELECT(384,272), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*), ABISELECT(384,272), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C12 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C12*), ABISELECT(384,272), "S20997C14");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), ABISELECT(384,272), "S20997C14");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), ABISELECT(384,272), "S20997C14");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(384,272), "S20997C14");
    /*is_ambiguous_... S20997C9::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C9*), ABISELECT(384,272), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*), ABISELECT(384,272), "S20997C14");
    check_base_class_offset(lv, (S20997C5*)(S20997C18*), ABISELECT(384,272), "S20997C14");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*), ABISELECT(384,272), "S20997C14");
    check_base_class_offset(lv, (S20997C5*)(S20997C3*), ABISELECT(384,272), "S20997C14");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*), 0, "S20997C14");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), 0, "S20997C14");
    check_base_class_offset(lv, (S20997C19*)(S20997C18*), ABISELECT(384,272), "S20997C14");
    check_base_class_offset(lv, (S20997C12*)(S20997C18*), ABISELECT(392,276), "S20997C14");
    check_base_class_offset(lv, (S20997C18*)(S20997C16*)(S20997C15*), ABISELECT(384,272), "S20997C14");
    check_base_class_offset(lv, (S20997C18*)(S20997C22*), ABISELECT(384,272), "S20997C14");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(80,64), "S20997C14");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(72,60), "S20997C14");
    check_base_class_offset(lv, (S20997C21*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(72,60), "S20997C14");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(120,104), "S20997C14");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(120,104), "S20997C14");
    check_base_class_offset(lv, (S20997C10*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(120,104), "S20997C14");
    check_base_class_offset(lv, (S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(72,60), "S20997C14");
    check_base_class_offset(lv, (S20997C16*)(S20997C15*), ABISELECT(64,56), "S20997C14");
    check_base_class_offset(lv, (S20997C15*), ABISELECT(64,56), "S20997C14");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(1576,1048), "S20997C14");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(2736,1808), "S20997C14");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(2736,1808), "S20997C14");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(2744,1812), "S20997C14");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(2744,1812), "S20997C14");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(2744,1812), "S20997C14");
    check_base_class_offset(lv, (S20997C11*)(S20997C24*), ABISELECT(1576,1048), "S20997C14");
    check_base_class_offset(lv, (S20997C11*)(S20997C9*), ABISELECT(1576,1048), "S20997C14");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C9*), ABISELECT(2816,1872), "S20997C14");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C9*), ABISELECT(2816,1872), "S20997C14");
    check_base_class_offset(lv, (S20997C10*)(S20997C9*), ABISELECT(2816,1872), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C25 */ AMB_check_base_class_offset(lv, (S20997C9*)(S20997C25*), ABISELECT(2816,1872), "S20997C14");
    check_base_class_offset(lv, (S20997C9*)(S20997C25*)(S20997C32*)(S20997C31*), ABISELECT(2816,1872), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C25 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(2760,1820), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C25 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(2752,1816), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C25 */ AMB_check_base_class_offset(lv, (S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(2752,1816), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C25 */ AMB_check_base_class_offset(lv, (S20997C26*)(S20997C25*), ABISELECT(2752,1816), "S20997C14");
    check_base_class_offset(lv, (S20997C25*)(S20997C24*), ABISELECT(2752,1816), "S20997C14");
    check_base_class_offset(lv, (S20997C24*)(S20997C23*)(S20997C22*), ABISELECT(1560,1040), "S20997C14");
    check_base_class_offset(lv, (S20997C23*)(S20997C22*), ABISELECT(1552,1036), "S20997C14");
    /*is_ambiguous_... S20997C22::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C22*), ABISELECT(1552,1036), "S20997C14");
    check_base_class_offset(lv, (S20997C3*)(S20997C27*), ABISELECT(2904,1916), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C20 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C20*), ABISELECT(2920,1924), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C20 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C20*), ABISELECT(2912,1920), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C20 */ AMB_check_base_class_offset(lv, (S20997C21*)(S20997C20*), ABISELECT(2912,1920), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C20 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C20*), ABISELECT(2960,1964), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C20 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C20*), ABISELECT(2960,1964), "S20997C14");
    /*is_ambiguous_... S20997C14::S20997C20 */ AMB_check_base_class_offset(lv, (S20997C10*)(S20997C20*), ABISELECT(2960,1964), "S20997C14");
    check_base_class_offset(lv, (S20997C20*)(S20997C27*), ABISELECT(2912,1920), "S20997C14");
    check_base_class_offset(lv, (S4227C27*)(S20997C27*), ABISELECT(2904,1916), "S20997C14");
    check_base_class_offset(lv, (S4227C23*)(S20997C29_nt*), 0, "S20997C14");
    check_base_class_offset(lv, (S20997C29_nt*)(S20997C27*), 0, "S20997C14");
    check_base_class_offset(lv, (S20997C27*)(S20997C22*), ABISELECT(2904,1916), "S20997C14");
    check_base_class_offset(lv, (S20997C22*), ABISELECT(1552,1036), "S20997C14");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C26*)(S20997C25*)(S20997C32*)(S20997C31*), ABISELECT(8,4), "S20997C14");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C26*)(S20997C25*)(S20997C32*)(S20997C31*), 0, "S20997C14");
    check_base_class_offset(lv, (S20997C21*)(S20997C26*)(S20997C25*)(S20997C32*)(S20997C31*), 0, "S20997C14");
    check_base_class_offset(lv, (S20997C26*)(S20997C25*)(S20997C32*)(S20997C31*), 0, "S20997C14");
    check_base_class_offset(lv, (S20997C25*)(S20997C32*)(S20997C31*), 0, "S20997C14");
    check_base_class_offset(lv, (S20997C32*)(S20997C31*), 0, "S20997C14");
    check_base_class_offset(lv, (S20997C31*), 0, "S20997C14");
    test_class_info(&lv, &cd_S20997C14);
    dp->~S20997C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C14(Test_S20997C14, "S20997C14", ABISELECT(3056,2008));

#else // __cplusplus

extern void _ZN9S20997C14C1Ev();
extern void _ZN9S20997C14D2Ev();
Name_Map name_map_S20997C14[] = {
  NSPAIR(_ZN9S20997C14C1Ev),
  NSPAIR(_ZN9S20997C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C17;
extern VTBL_ENTRY _ZTI9S20997C17[];
extern  VTBL_ENTRY _ZTV9S20997C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C17[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S20997C18;
extern VTBL_ENTRY _ZTI9S20997C18[];
extern  VTBL_ENTRY _ZTV9S20997C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C18[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C20;
extern VTBL_ENTRY _ZTI9S20997C20[];
extern  VTBL_ENTRY _ZTV9S20997C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C20[];
extern Class_Descriptor cd_S20997C16;
extern VTBL_ENTRY _ZTI9S20997C16[];
extern  VTBL_ENTRY _ZTV9S20997C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C16[];
extern Class_Descriptor cd_S20997C15;
extern VTBL_ENTRY _ZTI9S20997C15[];
extern  VTBL_ENTRY _ZTV9S20997C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C15[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C9;
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C26;
extern VTBL_ENTRY _ZTI9S20997C26[];
extern  VTBL_ENTRY _ZTV9S20997C26[];
extern Class_Descriptor cd_S20997C25;
extern VTBL_ENTRY _ZTI9S20997C25[];
extern  VTBL_ENTRY _ZTV9S20997C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C25[];
extern Class_Descriptor cd_S20997C24;
extern VTBL_ENTRY _ZTI9S20997C24[];
extern  VTBL_ENTRY _ZTV9S20997C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C24[];
extern Class_Descriptor cd_S20997C23;
extern VTBL_ENTRY _ZTI9S20997C23[];
extern  VTBL_ENTRY _ZTV9S20997C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C23[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C3;
extern VTBL_ENTRY _ZTI8S20997C3[];
extern  VTBL_ENTRY _ZTV8S20997C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C3[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C20;
extern VTBL_ENTRY _ZTI9S20997C20[];
extern  VTBL_ENTRY _ZTV9S20997C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C20[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S20997C29_nt;
extern VTBL_ENTRY _ZTI12S20997C29_nt[];
extern Class_Descriptor cd_S20997C27;
extern VTBL_ENTRY _ZTI9S20997C27[];
extern  VTBL_ENTRY _ZTV9S20997C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C27[];
extern Class_Descriptor cd_S20997C22;
extern VTBL_ENTRY _ZTI9S20997C22[];
extern  VTBL_ENTRY _ZTV9S20997C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C22[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C26;
extern VTBL_ENTRY _ZTI9S20997C26[];
extern  VTBL_ENTRY _ZTV9S20997C26[];
extern Class_Descriptor cd_S20997C25;
extern VTBL_ENTRY _ZTI9S20997C25[];
extern  VTBL_ENTRY _ZTV9S20997C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C25[];
extern Class_Descriptor cd_S20997C32;
extern VTBL_ENTRY _ZTI9S20997C32[];
extern  VTBL_ENTRY _ZTV9S20997C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C32[];
extern Class_Descriptor cd_S20997C31;
extern VTBL_ENTRY _ZTI9S20997C31[];
extern  VTBL_ENTRY _ZTV9S20997C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C31[];
static Base_Class bases_S20997C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    ABISELECT(224,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
    3, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(312,200), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(224,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
    3, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(224,156), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20997C17,    ABISELECT(216,152), //bcp->offset
    51, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S10258C6_nt,    ABISELECT(352,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
    13, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(384,272), //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
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(384,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
    9, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(384,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C19,    ABISELECT(384,272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(392,276), //bcp->offset
    76, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20997C18,    ABISELECT(384,272), //bcp->offset
    60, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    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
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(72,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(72,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(120,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(120,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(120,104), //bcp->offset
    47, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20997C20,    ABISELECT(72,60), //bcp->offset
    43, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20997C16,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20997C15,    ABISELECT(64,56), //bcp->offset
    26, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C12,    ABISELECT(1576,1048), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2736,1808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(2736,1808), //bcp->offset
    128, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2744,1812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(2744,1812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(2744,1812), //bcp->offset
    136, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(1576,1048), //bcp->offset
    118, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    112, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(2816,1872), //bcp->offset
    -1, //bcp->virtual_function_table_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_S4227C37,    ABISELECT(2816,1872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    ABISELECT(2816,1872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20997C9,    ABISELECT(2816,1872), //bcp->offset
    156, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(2760,1820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    ABISELECT(2752,1816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(2752,1816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20997C26,    ABISELECT(2752,1816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20997C25,    ABISELECT(2752,1816), //bcp->offset
    144, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20997C24,    ABISELECT(1560,1040), //bcp->offset
    105, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S20997C23,    ABISELECT(1552,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1552,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S20997C3,    ABISELECT(2904,1916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    53, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(2920,1924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    ABISELECT(2912,1920), //bcp->offset
    -1, //bcp->virtual_function_table_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
    45, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(2912,1920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(2960,1964), //bcp->offset
    -1, //bcp->virtual_function_table_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
    48, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2960,1964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    ABISELECT(2960,1964), //bcp->offset
    187, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20997C20,    ABISELECT(2912,1920), //bcp->offset
    182, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    53, //immediately_derived
  0, 1},
  {&cd_S4227C27,    ABISELECT(2904,1916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S20997C27,    ABISELECT(2904,1916), //bcp->offset
    167, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    54, //immediately_derived
  0, 1},
  {&cd_S20997C22,    ABISELECT(1552,1036), //bcp->offset
    81, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20997C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    58, //immediately_derived
  0, 0},
  {&cd_S20997C26,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S20997C25,    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
    42, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S20997C32,    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
    43, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S20997C31,    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
    44, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C14[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C14D1Ev();
extern void _ZN9S20997C14D0Ev();
extern void _ZN9S20997C322v4Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n112_N9S20997C14D1Ev,_ZTv0_n56_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C14D1Ev,_ZThn56_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S20997C14D0Ev,_ZTv0_n56_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C14D0Ev,_ZThn56_N9S20997C14D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C14D1Ev,_ZTv0_n24_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn384_N9S20997C14D1Ev,_ZThn272_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C14D0Ev,_ZTv0_n24_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn384_N9S20997C14D0Ev,_ZThn272_N9S20997C14D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n168_N9S20997C14D1Ev,_ZTv0_n84_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn1552_N9S20997C14D1Ev,_ZThn1036_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N9S20997C14D0Ev,_ZTv0_n84_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn1552_N9S20997C14D0Ev,_ZThn1036_N9S20997C14D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n80_N9S20997C14D1Ev,_ZTv0_n40_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn1560_N9S20997C14D1Ev,_ZThn1040_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20997C14D0Ev,_ZTv0_n40_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn1560_N9S20997C14D0Ev,_ZThn1040_N9S20997C14D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C14D1Ev,_ZTv0_n28_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn1576_N9S20997C14D1Ev,_ZThn1048_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C14D0Ev,_ZTv0_n28_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn1576_N9S20997C14D0Ev,_ZThn1048_N9S20997C14D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C14D1Ev,_ZTvn760_n28_N9S20997C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C14D0Ev,_ZTvn760_n28_N9S20997C14D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C14D1Ev,_ZTvn764_n28_N9S20997C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C14D0Ev,_ZTvn764_n28_N9S20997C14D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C14D1Ev,_ZTv0_n36_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn2752_N9S20997C14D1Ev,_ZThn1816_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C14D0Ev,_ZTv0_n36_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn2752_N9S20997C14D0Ev,_ZThn1816_N9S20997C14D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C14D1Ev,_ZTv0_n32_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn2816_N9S20997C14D1Ev,_ZThn1872_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C14D0Ev,_ZTv0_n32_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn2816_N9S20997C14D0Ev,_ZThn1872_N9S20997C14D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C14D1Ev,_ZTv0_n24_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn2904_N9S20997C14D1Ev,_ZThn1916_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C14D0Ev,_ZTv0_n24_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn2904_N9S20997C14D0Ev,_ZThn1916_N9S20997C14D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C14[] = {
  0,
  ABISELECT(2912,1920),
  ABISELECT(2904,1916),
  ABISELECT(2904,1916),
  ABISELECT(2752,1816),
  ABISELECT(1560,1040),
  ABISELECT(1552,1036),
  ABISELECT(392,276),
  ABISELECT(384,272),
  ABISELECT(384,272),
  ABISELECT(384,272),
  ABISELECT(352,240),
  ABISELECT(224,156),
  ABISELECT(216,152),
  ABISELECT(64,56),
  0,
  ABISELECT(1576,1048),
  ABISELECT(312,200),
  ABISELECT(384,272),
  ABISELECT(2816,1872),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C14D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C322v4Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(328,220),
  ABISELECT(-64,-56),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(288,184),
  ABISELECT(248,144),
  ABISELECT(160,100),
  ABISELECT(152,96),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C14D1Ev,_ZTv0_n56_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C14D0Ev,_ZTv0_n56_N9S20997C14D0Ev),
  ABISELECT(240,140),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(192,96),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(96,48),
  ABISELECT(8,4),
  ABISELECT(-216,-152),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-384,-272),
  ABISELECT(-384,-272),
  0,
  -72,
  0,
  ABISELECT(-384,-272),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C14D1Ev,_ZTv0_n24_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C14D0Ev,_ZTv0_n24_N9S20997C14D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-392,-276),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-1552,-1036),
  ABISELECT(-1160,-760),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  ABISELECT(-1552,-1036),
  ABISELECT(1360,884),
  ABISELECT(-1168,-764),
  ABISELECT(-1200,-796),
  ABISELECT(1352,880),
  ABISELECT(1352,880),
  ABISELECT(1264,836),
  ABISELECT(1200,780),
  ABISELECT(-1168,-764),
  ABISELECT(-1552,-1036),
  ABISELECT(24,12),
  ABISELECT(8,4),
  ABISELECT(-1240,-836),
  ABISELECT(-1328,-880),
  ABISELECT(-1168,-764),
  ABISELECT(-1552,-1036),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N9S20997C14D1Ev,_ZTv0_n84_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N9S20997C14D0Ev,_ZTv0_n84_N9S20997C14D0Ev),
  ABISELECT(-1560,-1040),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-1176,-768),
  ABISELECT(-1560,-1040),
  ABISELECT(16,8),
  ABISELECT(-1248,-840),
  ABISELECT(-1176,-768),
  ABISELECT(-1560,-1040),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C14D1Ev,_ZTv0_n40_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C14D0Ev,_ZTv0_n40_N9S20997C14D0Ev),
  ABISELECT(-1576,-1048),
  ABISELECT(-1264,-848),
  ABISELECT(-1576,-1048),
  ABISELECT(-1192,-776),
  ABISELECT(-1192,-776),
  ABISELECT(-1576,-1048),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C14D1Ev,_ZTv0_n28_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C14D0Ev,_ZTv0_n28_N9S20997C14D0Ev),
  ABISELECT(-2352,-1536),
  ABISELECT(-2424,-1608),
  ABISELECT(-2352,-1536),
  ABISELECT(-2736,-1808),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C14D1Ev,_ZTvn760_n28_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C14D0Ev,_ZTvn760_n28_N9S20997C14D0Ev),
  ABISELECT(-2360,-1540),
  ABISELECT(-2432,-1612),
  ABISELECT(-2360,-1540),
  ABISELECT(-2744,-1812),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C14D1Ev,_ZTvn764_n28_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C14D0Ev,_ZTvn764_n28_N9S20997C14D0Ev),
  ABISELECT(-2752,-1816),
  0,
  ABISELECT(-2752,-1816),
  ABISELECT(-1176,-768),
  ABISELECT(-2440,-1616),
  ABISELECT(-2368,-1544),
  ABISELECT(64,56),
  ABISELECT(-2752,-1816),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C14D1Ev,_ZTv0_n36_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C14D0Ev,_ZTv0_n36_N9S20997C14D0Ev),
  ABISELECT(-2816,-1872),
  0,
  ABISELECT(-2816,-1872),
  ABISELECT(-1240,-824),
  ABISELECT(-2432,-1600),
  ABISELECT(-2504,-1672),
  ABISELECT(-2816,-1872),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C14D1Ev,_ZTv0_n32_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C14D0Ev,_ZTv0_n32_N9S20997C14D0Ev),
  ABISELECT(-2904,-1916),
  ABISELECT(8,4),
  0,
  ABISELECT(-2680,-1760),
  ABISELECT(-2520,-1644),
  ABISELECT(-2552,-1676),
  ABISELECT(-2904,-1916),
  ABISELECT(-2520,-1644),
  ABISELECT(-2592,-1716),
  ABISELECT(-2520,-1644),
  ABISELECT(-2904,-1916),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C14D1Ev,_ZTv0_n24_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C14D0Ev,_ZTv0_n24_N9S20997C14D0Ev),
  0,
  ABISELECT(-2600,-1720),
  ABISELECT(-2912,-1920),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-2648,-1764),
  ABISELECT(-2960,-1964),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C14[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C31D1Ev();
extern void _ZN9S20997C31D0Ev();
extern void _ZN9S20997C322v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C31__9S20997C14[] = {
  0,
  ABISELECT(1576,1048),
  ABISELECT(312,200),
  ABISELECT(384,272),
  ABISELECT(2816,1872),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C31D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C31D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C322v4Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C32D1Ev();
extern void _ZN9S20997C32D0Ev();
extern void _ZN9S20997C322v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C329S20997C31__9S20997C14[] = {
  0,
  ABISELECT(1576,1048),
  ABISELECT(312,200),
  ABISELECT(384,272),
  ABISELECT(2816,1872),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C32D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C32D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C322v4Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C25D1Ev();
extern void _ZN9S20997C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C259S20997C329S20997C31__A1__9S20997C14[] = {
  0,
  ABISELECT(1576,1048),
  ABISELECT(312,200),
  ABISELECT(384,272),
  ABISELECT(2816,1872),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn2816_N9S20997C25D1Ev,_ZThn1872_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn2816_N9S20997C25D0Ev,_ZThn1872_N9S20997C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C259S20997C329S20997C31__A1__9S20997C14[] = {
  ABISELECT(-2816,-1872),
  0,
  ABISELECT(-2816,-1872),
  ABISELECT(-1240,-824),
  ABISELECT(-2432,-1600),
  ABISELECT(-2504,-1672),
  ABISELECT(-2816,-1872),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C259S20997C329S20997C31__A1__9S20997C14[] = {
  0,
  ABISELECT(-384,-272),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn1576_N9S20997C25D1Ev,_ZThn1048_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn1576_N9S20997C25D0Ev,_ZThn1048_N9S20997C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C259S20997C329S20997C31__A1__9S20997C14[] = {
  ABISELECT(-1576,-1048),
  ABISELECT(-1264,-848),
  ABISELECT(-1576,-1048),
  ABISELECT(-1192,-776),
  ABISELECT(-1192,-776),
  ABISELECT(-1576,-1048),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C259S20997C329S20997C31__A1__9S20997C14[] = {
  ABISELECT(-2352,-1536),
  ABISELECT(-2424,-1608),
  ABISELECT(-2352,-1536),
  ABISELECT(-2736,-1808),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C259S20997C329S20997C31__A1__9S20997C14[] = {
  ABISELECT(-2360,-1540),
  ABISELECT(-2432,-1612),
  ABISELECT(-2360,-1540),
  ABISELECT(-2744,-1812),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C32D1Ev,_ZTv0_n32_N9S20997C32D1Ev)();
extern void ABISELECT(_ZThn2816_N9S20997C32D1Ev,_ZThn1872_N9S20997C32D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C32D0Ev,_ZTv0_n32_N9S20997C32D0Ev)();
extern void ABISELECT(_ZThn2816_N9S20997C32D0Ev,_ZThn1872_N9S20997C32D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C329S20997C31__9S20997C14[] = {
  ABISELECT(-2816,-1872),
  0,
  ABISELECT(-2816,-1872),
  ABISELECT(-1240,-824),
  ABISELECT(-2432,-1600),
  ABISELECT(-2504,-1672),
  ABISELECT(-2816,-1872),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C32D1Ev,_ZTv0_n32_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C32D0Ev,_ZTv0_n32_N9S20997C32D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C329S20997C31__9S20997C14[] = {
  0,
  ABISELECT(-384,-272),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C32D1Ev,_ZTv0_n28_N9S20997C32D1Ev)();
extern void ABISELECT(_ZThn1576_N9S20997C32D1Ev,_ZThn1048_N9S20997C32D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C32D0Ev,_ZTv0_n28_N9S20997C32D0Ev)();
extern void ABISELECT(_ZThn1576_N9S20997C32D0Ev,_ZThn1048_N9S20997C32D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C329S20997C31__9S20997C14[] = {
  ABISELECT(-1576,-1048),
  ABISELECT(-1264,-848),
  ABISELECT(-1576,-1048),
  ABISELECT(-1192,-776),
  ABISELECT(-1192,-776),
  ABISELECT(-1576,-1048),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C32D1Ev,_ZTv0_n28_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C32D0Ev,_ZTv0_n28_N9S20997C32D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C32D1Ev,_ZTvn760_n28_N9S20997C32D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C32D0Ev,_ZTvn760_n28_N9S20997C32D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C329S20997C31__9S20997C14[] = {
  ABISELECT(-2352,-1536),
  ABISELECT(-2424,-1608),
  ABISELECT(-2352,-1536),
  ABISELECT(-2736,-1808),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C32D1Ev,_ZTvn760_n28_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C32D0Ev,_ZTvn760_n28_N9S20997C32D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C32D1Ev,_ZTvn764_n28_N9S20997C32D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C32D0Ev,_ZTvn764_n28_N9S20997C32D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C329S20997C31__9S20997C14[] = {
  ABISELECT(-2360,-1540),
  ABISELECT(-2432,-1612),
  ABISELECT(-2360,-1540),
  ABISELECT(-2744,-1812),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C32D1Ev,_ZTvn764_n28_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C32D0Ev,_ZTvn764_n28_N9S20997C32D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C31D1Ev,_ZTv0_n32_N9S20997C31D1Ev)();
extern void ABISELECT(_ZThn2816_N9S20997C31D1Ev,_ZThn1872_N9S20997C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C31D0Ev,_ZTv0_n32_N9S20997C31D0Ev)();
extern void ABISELECT(_ZThn2816_N9S20997C31D0Ev,_ZThn1872_N9S20997C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C31__9S20997C14[] = {
  ABISELECT(-2816,-1872),
  0,
  ABISELECT(-2816,-1872),
  ABISELECT(-1240,-824),
  ABISELECT(-2432,-1600),
  ABISELECT(-2504,-1672),
  ABISELECT(-2816,-1872),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C31D1Ev,_ZTv0_n32_N9S20997C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C31D0Ev,_ZTv0_n32_N9S20997C31D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C31__9S20997C14[] = {
  0,
  ABISELECT(-384,-272),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C31D1Ev,_ZTv0_n28_N9S20997C31D1Ev)();
extern void ABISELECT(_ZThn1576_N9S20997C31D1Ev,_ZThn1048_N9S20997C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C31D0Ev,_ZTv0_n28_N9S20997C31D0Ev)();
extern void ABISELECT(_ZThn1576_N9S20997C31D0Ev,_ZThn1048_N9S20997C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C31__9S20997C14[] = {
  ABISELECT(-1576,-1048),
  ABISELECT(-1264,-848),
  ABISELECT(-1576,-1048),
  ABISELECT(-1192,-776),
  ABISELECT(-1192,-776),
  ABISELECT(-1576,-1048),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C31D1Ev,_ZTv0_n28_N9S20997C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C31D0Ev,_ZTv0_n28_N9S20997C31D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C31D1Ev,_ZTvn760_n28_N9S20997C31D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C31D0Ev,_ZTvn760_n28_N9S20997C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C31__9S20997C14[] = {
  ABISELECT(-2352,-1536),
  ABISELECT(-2424,-1608),
  ABISELECT(-2352,-1536),
  ABISELECT(-2736,-1808),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C31D1Ev,_ZTvn760_n28_N9S20997C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C31D0Ev,_ZTvn760_n28_N9S20997C31D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C31D1Ev,_ZTvn764_n28_N9S20997C31D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C31D0Ev,_ZTvn764_n28_N9S20997C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C31__9S20997C14[] = {
  ABISELECT(-2360,-1540),
  ABISELECT(-2432,-1612),
  ABISELECT(-2360,-1540),
  ABISELECT(-2744,-1812),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C31D1Ev,_ZTvn764_n28_N9S20997C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C31D0Ev,_ZTvn764_n28_N9S20997C31D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C15D1Ev();
extern void _ZN9S20997C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C15__9S20997C14[] = {
  ABISELECT(328,220),
  ABISELECT(-64,-56),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(288,184),
  ABISELECT(248,144),
  ABISELECT(160,100),
  ABISELECT(152,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C15D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C16D1Ev();
extern void _ZN9S20997C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C169S20997C15__9S20997C14[] = {
  ABISELECT(328,220),
  ABISELECT(-64,-56),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(288,184),
  ABISELECT(248,144),
  ABISELECT(160,100),
  ABISELECT(152,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C209S20997C169S20997C15__9S20997C14[] = {
  ABISELECT(240,140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C209S20997C169S20997C15__A1__9S20997C14[] = {
  ABISELECT(192,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C209S20997C169S20997C15__9S20997C14[] = {
  ABISELECT(192,96),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C169S20997C15__9S20997C14[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C169S20997C15__9S20997C14[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev)();
extern void ABISELECT(_ZThn320_N9S20997C16D1Ev,_ZThn216_N9S20997C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev)();
extern void ABISELECT(_ZThn320_N9S20997C16D0Ev,_ZThn216_N9S20997C16D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C169S20997C15__9S20997C14[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-384,-272),
  ABISELECT(-320,-216),
  0,
  -72,
  0,
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C169S20997C15__9S20997C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-328,-220),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C169S20997C15__9S20997C14[] = {
  ABISELECT(240,140),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A1__9S20997C169S20997C15__9S20997C14[] = {
  ABISELECT(192,96),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C15__9S20997C14[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C15__9S20997C14[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C15D1Ev,_ZTv0_n24_N9S20997C15D1Ev)();
extern void ABISELECT(_ZThn320_N9S20997C15D1Ev,_ZThn216_N9S20997C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C15D0Ev,_ZTv0_n24_N9S20997C15D0Ev)();
extern void ABISELECT(_ZThn320_N9S20997C15D0Ev,_ZThn216_N9S20997C15D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C15__9S20997C14[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-384,-272),
  ABISELECT(-320,-216),
  0,
  -72,
  0,
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C15D1Ev,_ZTv0_n24_N9S20997C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C15D0Ev,_ZTv0_n24_N9S20997C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C15__9S20997C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-328,-220),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C209S20997C16__9S20997C15__9S20997C14[] = {
  ABISELECT(240,140),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C209S20997C16__A1__9S20997C15__9S20997C14[] = {
  ABISELECT(192,96),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C14[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C17__9S20997C14[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C14[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void _ZN9S20997C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void _ZN9S20997C18D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C14[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-384,-272),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C18__9S20997C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C14[] = {
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__9S20997C14[] = {
  0,
  ABISELECT(-384,-272),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C12__9S20997C14[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C22D1Ev();
extern void _ZN9S20997C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C22__9S20997C14[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  ABISELECT(-1552,-1036),
  ABISELECT(1360,884),
  ABISELECT(-1168,-764),
  ABISELECT(-1200,-796),
  ABISELECT(1352,880),
  ABISELECT(1352,880),
  ABISELECT(1264,836),
  ABISELECT(1200,780),
  ABISELECT(-1168,-764),
  ABISELECT(-1552,-1036),
  ABISELECT(24,12),
  ABISELECT(8,4),
  ABISELECT(-1240,-836),
  ABISELECT(-1328,-880),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C22D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C23D1Ev();
extern void _ZN9S20997C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C239S20997C22__9S20997C14[] = {
  ABISELECT(1264,836),
  ABISELECT(1200,780),
  ABISELECT(-1168,-764),
  ABISELECT(-1552,-1036),
  ABISELECT(24,12),
  ABISELECT(8,4),
  ABISELECT(-1240,-836),
  ABISELECT(-1328,-880),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C23D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C239S20997C22__9S20997C14[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(1328,880),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n80_N9S20997C23D1Ev,_ZTv0_n40_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn8_N9S20997C23D1Ev,_ZThn4_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20997C23D0Ev,_ZTv0_n40_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn8_N9S20997C23D0Ev,_ZThn4_N9S20997C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C24__9S20997C239S20997C22__9S20997C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-1176,-768),
  ABISELECT(-1560,-1040),
  ABISELECT(16,8),
  ABISELECT(-1248,-840),
  ABISELECT(-1176,-768),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C23D1Ev,_ZTv0_n40_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C23D0Ev,_ZTv0_n40_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C23D1Ev,_ZTv0_n28_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn24_N9S20997C23D1Ev,_ZThn12_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C23D0Ev,_ZTv0_n28_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn24_N9S20997C23D0Ev,_ZThn12_N9S20997C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C239S20997C22__9S20997C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(-1264,-848),
  ABISELECT(-1576,-1048),
  ABISELECT(-1192,-776),
  ABISELECT(-1192,-776),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C23D1Ev,_ZTv0_n28_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C23D0Ev,_ZTv0_n28_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__A1__9S20997C239S20997C22__9S20997C14[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C23D1Ev,_ZTvn760_n28_N9S20997C23D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C23D0Ev,_ZTvn760_n28_N9S20997C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C239S20997C22__9S20997C14[] = {
  ABISELECT(-2352,-1536),
  ABISELECT(-2424,-1608),
  ABISELECT(-2352,-1536),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C23D1Ev,_ZTvn760_n28_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C23D0Ev,_ZTvn760_n28_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C23D1Ev,_ZTvn764_n28_N9S20997C23D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C23D0Ev,_ZTvn764_n28_N9S20997C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C239S20997C22__9S20997C14[] = {
  ABISELECT(-2360,-1540),
  ABISELECT(-2432,-1612),
  ABISELECT(-2360,-1540),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C23D1Ev,_ZTvn764_n28_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C23D0Ev,_ZTvn764_n28_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C23D1Ev,_ZTv0_n36_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn1200_N9S20997C23D1Ev,_ZThn780_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C23D0Ev,_ZTv0_n36_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn1200_N9S20997C23D0Ev,_ZThn780_N9S20997C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C239S20997C22__9S20997C14[] = {
  ABISELECT(-1200,-780),
  0,
  ABISELECT(-2752,-1816),
  ABISELECT(-1176,-768),
  ABISELECT(-2440,-1616),
  ABISELECT(-2368,-1544),
  ABISELECT(64,56),
  ABISELECT(-1200,-780),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C23D1Ev,_ZTv0_n36_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C23D0Ev,_ZTv0_n36_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C23D1Ev,_ZTv0_n32_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn1264_N9S20997C23D1Ev,_ZThn836_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C23D0Ev,_ZTv0_n32_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn1264_N9S20997C23D0Ev,_ZThn836_N9S20997C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C239S20997C22__9S20997C14[] = {
  ABISELECT(-1264,-836),
  0,
  ABISELECT(-2816,-1872),
  ABISELECT(-1240,-824),
  ABISELECT(-2432,-1600),
  ABISELECT(-2504,-1672),
  ABISELECT(-1264,-836),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C23D1Ev,_ZTv0_n32_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C23D0Ev,_ZTv0_n32_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C22__9S20997C14[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(1328,880),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n80_N9S20997C22D1Ev,_ZTv0_n40_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn8_N9S20997C22D1Ev,_ZThn4_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20997C22D0Ev,_ZTv0_n40_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn8_N9S20997C22D0Ev,_ZThn4_N9S20997C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C24__9S20997C22__9S20997C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-1176,-768),
  ABISELECT(-1560,-1040),
  ABISELECT(16,8),
  ABISELECT(-1248,-840),
  ABISELECT(-1176,-768),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C22D1Ev,_ZTv0_n40_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C22D0Ev,_ZTv0_n40_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C22D1Ev,_ZTv0_n28_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn24_N9S20997C22D1Ev,_ZThn12_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C22D0Ev,_ZTv0_n28_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn24_N9S20997C22D0Ev,_ZThn12_N9S20997C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C22__9S20997C14[] = {
  ABISELECT(-24,-12),
  ABISELECT(-1264,-848),
  ABISELECT(-1576,-1048),
  ABISELECT(-1192,-776),
  ABISELECT(-1192,-776),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C22D1Ev,_ZTv0_n28_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C22D0Ev,_ZTv0_n28_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev)();
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C22__9S20997C14[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-384,-272),
  ABISELECT(1168,764),
  0,
  -72,
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C22D1Ev,_ZTvn760_n28_N9S20997C22D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C22D0Ev,_ZTvn760_n28_N9S20997C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C22__9S20997C14[] = {
  ABISELECT(-2352,-1536),
  ABISELECT(-2424,-1608),
  ABISELECT(-2352,-1536),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C22D1Ev,_ZTvn760_n28_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C22D0Ev,_ZTvn760_n28_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C22D1Ev,_ZTvn764_n28_N9S20997C22D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C22D0Ev,_ZTvn764_n28_N9S20997C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C22__9S20997C14[] = {
  ABISELECT(-2360,-1540),
  ABISELECT(-2432,-1612),
  ABISELECT(-2360,-1540),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C22D1Ev,_ZTvn764_n28_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C22D0Ev,_ZTvn764_n28_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C22D1Ev,_ZTv0_n36_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn1200_N9S20997C22D1Ev,_ZThn780_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C22D0Ev,_ZTv0_n36_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn1200_N9S20997C22D0Ev,_ZThn780_N9S20997C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C22__9S20997C14[] = {
  ABISELECT(-1200,-780),
  0,
  ABISELECT(-2752,-1816),
  ABISELECT(-1176,-768),
  ABISELECT(-2440,-1616),
  ABISELECT(-2368,-1544),
  ABISELECT(64,56),
  ABISELECT(-1200,-780),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C22D1Ev,_ZTv0_n36_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C22D0Ev,_ZTv0_n36_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C22D1Ev,_ZTv0_n32_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn1264_N9S20997C22D1Ev,_ZThn836_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C22D0Ev,_ZTv0_n32_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn1264_N9S20997C22D0Ev,_ZThn836_N9S20997C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C22__9S20997C14[] = {
  ABISELECT(-1264,-836),
  0,
  ABISELECT(-2816,-1872),
  ABISELECT(-1240,-824),
  ABISELECT(-2432,-1600),
  ABISELECT(-2504,-1672),
  ABISELECT(-1264,-836),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C22D1Ev,_ZTv0_n32_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C22D0Ev,_ZTv0_n32_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn1352_N9S20997C22D1Ev,_ZThn880_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn1352_N9S20997C22D0Ev,_ZThn880_N9S20997C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C27__9S20997C22__9S20997C14[] = {
  ABISELECT(-2904,-1916),
  ABISELECT(8,4),
  0,
  ABISELECT(-2680,-1760),
  ABISELECT(-2520,-1644),
  ABISELECT(-2552,-1676),
  ABISELECT(-1352,-880),
  ABISELECT(-2520,-1644),
  ABISELECT(-2592,-1716),
  ABISELECT(-2520,-1644),
  ABISELECT(-1352,-880),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C22__9S20997C14[] = {
  0,
  ABISELECT(-2600,-1720),
  ABISELECT(-1360,-884),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A2__9S20997C22__9S20997C14[] = {
  ABISELECT(-2648,-1764),
  ABISELECT(-1408,-928),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__A1__9S20997C22__9S20997C14[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C24D1Ev();
extern void _ZN9S20997C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C24__9S20997C14[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-1176,-768),
  ABISELECT(-1560,-1040),
  ABISELECT(16,8),
  ABISELECT(-1248,-840),
  ABISELECT(-1176,-768),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C24D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn16_N9S20997C24D1Ev,_ZThn8_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn16_N9S20997C24D0Ev,_ZThn8_N9S20997C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C24__9S20997C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-1264,-848),
  ABISELECT(-1576,-1048),
  ABISELECT(-1192,-776),
  ABISELECT(-1192,-776),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C24__9S20997C14[] = {
  0,
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C24D1Ev,_ZTvn760_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C24D0Ev,_ZTvn760_n28_N9S20997C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C24__9S20997C14[] = {
  ABISELECT(-2352,-1536),
  ABISELECT(-2424,-1608),
  ABISELECT(-2352,-1536),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C24D1Ev,_ZTvn760_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C24D0Ev,_ZTvn760_n28_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C24D1Ev,_ZTvn764_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C24D0Ev,_ZTvn764_n28_N9S20997C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C24__9S20997C14[] = {
  ABISELECT(-2360,-1540),
  ABISELECT(-2432,-1612),
  ABISELECT(-2360,-1540),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C24D1Ev,_ZTvn764_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C24D0Ev,_ZTvn764_n28_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn1192_N9S20997C24D1Ev,_ZThn776_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn1192_N9S20997C24D0Ev,_ZThn776_N9S20997C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C24__9S20997C14[] = {
  ABISELECT(-1192,-776),
  0,
  ABISELECT(-2752,-1816),
  ABISELECT(-1176,-768),
  ABISELECT(-2440,-1616),
  ABISELECT(-2368,-1544),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn1256_N9S20997C24D1Ev,_ZThn832_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn1256_N9S20997C24D0Ev,_ZThn832_N9S20997C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C24__9S20997C14[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-2816,-1872),
  ABISELECT(-1240,-824),
  ABISELECT(-2432,-1600),
  ABISELECT(-2504,-1672),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C14[] = {
  ABISELECT(-1264,-848),
  ABISELECT(-1576,-1048),
  ABISELECT(-1192,-776),
  ABISELECT(-1192,-776),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__A1__9S20997C14[] = {
  ABISELECT(-1192,-776),
  ABISELECT(-1192,-776),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C129S20997C11__A1__9S20997C14[] = {
  0,
  ABISELECT(1192,776),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__A1__9S20997C14[] = {
  ABISELECT(-2352,-1536),
  ABISELECT(-2424,-1608),
  ABISELECT(-2352,-1536),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__A1__9S20997C14[] = {
  0,
  ABISELECT(2352,1536),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C14[] = {
  ABISELECT(-2360,-1540),
  ABISELECT(-2432,-1612),
  ABISELECT(-2360,-1540),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A2__9S20997C14[] = {
  ABISELECT(-2360,-1540),
  ABISELECT(-2432,-1612),
  ABISELECT(-2360,-1540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A2__9S20997C14[] = {
  0,
  ABISELECT(2360,1540),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C14[] = {
  0,
  ABISELECT(2360,1540),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C11__9S20997C14[] = {
  0,
  ABISELECT(1192,776),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__9S20997C14[] = {
  ABISELECT(-2352,-1536),
  ABISELECT(-2424,-1608),
  ABISELECT(-2352,-1536),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__9S20997C14[] = {
  ABISELECT(-2360,-1540),
  ABISELECT(-2432,-1612),
  ABISELECT(-2360,-1540),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C25D1Ev();
extern void _ZN9S20997C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C14[] = {
  ABISELECT(-2752,-1816),
  ABISELECT(-1176,-768),
  ABISELECT(-2440,-1616),
  ABISELECT(-2368,-1544),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C25__9S20997C14[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-2816,-1872),
  ABISELECT(-1240,-824),
  ABISELECT(-2432,-1600),
  ABISELECT(-2504,-1672),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C25__9S20997C14[] = {
  0,
  ABISELECT(2368,1544),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C25__9S20997C14[] = {
  ABISELECT(1176,768),
  ABISELECT(-1264,-848),
  ABISELECT(-1576,-1048),
  ABISELECT(-1192,-776),
  ABISELECT(-1192,-776),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C25__9S20997C14[] = {
  ABISELECT(-2352,-1536),
  ABISELECT(-2424,-1608),
  ABISELECT(-2352,-1536),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C25__9S20997C14[] = {
  ABISELECT(-2360,-1540),
  ABISELECT(-2432,-1612),
  ABISELECT(-2360,-1540),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C14[] = {
  ABISELECT(-2816,-1872),
  ABISELECT(-1240,-824),
  ABISELECT(-2432,-1600),
  ABISELECT(-2504,-1672),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C108S20997C9__A2__9S20997C14[] = {
  ABISELECT(-2504,-1672),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C9__9S20997C14[] = {
  0,
  ABISELECT(2432,1600),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C9__9S20997C14[] = {
  ABISELECT(1240,824),
  ABISELECT(-1264,-848),
  ABISELECT(-1576,-1048),
  ABISELECT(-1192,-776),
  ABISELECT(-1192,-776),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C14[] = {
  ABISELECT(-2352,-1536),
  ABISELECT(-2424,-1608),
  ABISELECT(-2352,-1536),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C14[] = {
  ABISELECT(-2360,-1540),
  ABISELECT(-2432,-1612),
  ABISELECT(-2360,-1540),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C27D1Ev,_ZTv0_n24_N9S20997C27D1Ev)();
extern void _ZN9S20997C27D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C27D0Ev,_ZTv0_n24_N9S20997C27D0Ev)();
extern void _ZN9S20997C27D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C27__9S20997C14[] = {
  ABISELECT(-2904,-1916),
  ABISELECT(8,4),
  0,
  ABISELECT(-2680,-1760),
  ABISELECT(-2520,-1644),
  ABISELECT(-2552,-1676),
  0,
  ABISELECT(-2520,-1644),
  ABISELECT(-2592,-1716),
  ABISELECT(-2520,-1644),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C27D1Ev,_ZTv0_n24_N9S20997C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C27D0Ev,_ZTv0_n24_N9S20997C27D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C27__9S20997C14[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(2680,1760),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C27D1Ev,_ZTv0_n24_N9S20997C27D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C27D0Ev,_ZTv0_n24_N9S20997C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C27__9S20997C14[] = {
  ABISELECT(2520,1644),
  0,
  -72,
  0,
  ABISELECT(2520,1644),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C27D1Ev,_ZTv0_n24_N9S20997C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C27D0Ev,_ZTv0_n24_N9S20997C27D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C27__9S20997C14[] = {
  0,
  ABISELECT(-2600,-1720),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A1__9S20997C27__9S20997C14[] = {
  ABISELECT(-2648,-1764),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev)();
extern void _ZN8S20997C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev)();
extern void _ZN8S20997C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__9S20997C14[] = {
  ABISELECT(-2520,-1644),
  ABISELECT(-2552,-1676),
  0,
  ABISELECT(-2520,-1644),
  ABISELECT(-2592,-1716),
  ABISELECT(-2520,-1644),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C3[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__8S20997C3__9S20997C14[] = {
  ABISELECT(2520,1644),
  0,
  -72,
  0,
  ABISELECT(2520,1644),
  (VTBL_ENTRY)&(_ZTI8S20997C3[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__A1__9S20997C14[] = {
  ABISELECT(-2600,-1720),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A3__9S20997C14[] = {
  ABISELECT(-2648,-1764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C20__A1__9S20997C14[] = {
  ABISELECT(-2648,-1764),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C14[] = {
  {&(_ZTV9S20997C14[22]),  22,191},
  {&(_tg__ZTV9S20997C31__9S20997C14[7]),  7,11},
  {&(_tg__ZTV9S20997C329S20997C31__9S20997C14[7]),  7,11},
  {&(_tg__ZTV9S20997C259S20997C329S20997C31__A1__9S20997C14[7]),  7,10},
  {&(_tg__ZTV8S20997C9__9S20997C259S20997C329S20997C31__A1__9S20997C14[8]),  8,11},
  {&(_tg__ZTV8S20997C7__9S20997C259S20997C329S20997C31__A1__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C259S20997C329S20997C31__A1__9S20997C14[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C259S20997C329S20997C31__A1__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C259S20997C329S20997C31__A1__9S20997C14[5]),  5,8},
  {&(_tg__ZTV8S20997C9__9S20997C329S20997C31__9S20997C14[8]),  8,11},
  {&(_tg__ZTV8S20997C7__9S20997C329S20997C31__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C329S20997C31__9S20997C14[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C329S20997C31__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C329S20997C31__9S20997C14[5]),  5,8},
  {&(_tg__ZTV8S20997C9__9S20997C31__9S20997C14[8]),  8,11},
  {&(_tg__ZTV8S20997C7__9S20997C31__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C31__9S20997C14[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C31__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C31__9S20997C14[5]),  5,8},
  {&(_ZTV9S20997C14[40]),  40,191},
  {&(_ZTV9S20997C14[55]),  55,191},
  {&(_ZTV9S20997C14[59]),  59,191},
  {&(_ZTV9S20997C14[72]),  72,191},
  {&(_ZTV9S20997C14[72]),  72,191},
  {&(_ZTV9S20997C14[72]),  72,191},
  {&(_ZTV9S20997C14[72]),  72,191},
  {&(_ZTV9S20997C14[80]),  80,191},
  {&(_ZTV9S20997C14[46]),  46,191},
  {&(_ZTV9S20997C14[50]),  50,191},
  {&(_ZTV9S20997C14[102]),  102,191},
  {&(_ZTV9S20997C14[115]),  115,191},
  {&(_ZTV9S20997C14[125]),  125,191},
  {&(_ZTV9S20997C14[133]),  133,191},
  {&(_ZTV9S20997C14[141]),  141,191},
  {&(_ZTV9S20997C14[153]),  153,191},
  {&(_ZTV9S20997C14[164]),  164,191},
  {&(_ZTV9S20997C14[179]),  179,191},
  {&(_ZTV9S20997C14[179]),  179,191},
  {&(_ZTV9S20997C14[186]),  186,191},
  {&(_ZTV9S20997C14[190]),  190,191},
  {&(_tg__ZTV9S20997C15__9S20997C14[12]),  12,15},
  {&(_tg__ZTV9S20997C169S20997C15__9S20997C14[12]),  12,15},
  {&(_tg__ZTV9S20997C209S20997C169S20997C15__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C209S20997C169S20997C15__A1__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C10__9S20997C209S20997C169S20997C15__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C17__9S20997C169S20997C15__9S20997C14[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C169S20997C15__9S20997C14[4]),  4,5},
  {&(_tg__ZTV9S20997C18__9S20997C169S20997C15__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C169S20997C15__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C169S20997C15__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C169S20997C15__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C169S20997C15__9S20997C14[4]),  4,5},
  {&(_tg__ZTV9S20997C20__9S20997C169S20997C15__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C20__A1__9S20997C169S20997C15__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C17__9S20997C15__9S20997C14[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C15__9S20997C14[4]),  4,5},
  {&(_tg__ZTV9S20997C18__9S20997C15__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C15__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C15__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C15__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C15__9S20997C14[4]),  4,5},
  {&(_tg__ZTV9S20997C209S20997C16__9S20997C15__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C209S20997C16__A1__9S20997C15__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C17__9S20997C14[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C17__9S20997C14[4]),  4,5},
  {&(_tg__ZTV9S20997C10__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C18__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C18__9S20997C14[4]),  4,5},
  {&(_tg__ZTV8S20997C5__9S20997C14[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C19__9S20997C14[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C14[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C14[8]),  8,12},
  {&(_tg__ZTV9S20997C12__9S20997C14[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C12__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C22__9S20997C14[20]),  20,23},
  {&(_tg__ZTV9S20997C239S20997C22__9S20997C14[11]),  11,14},
  {&(_tg__ZTV9S20997C10__9S20997C239S20997C22__9S20997C14[4]),  4,5},
  {&(_tg__ZTV9S20997C24__9S20997C239S20997C22__9S20997C14[10]),  10,13},
  {&(_tg__ZTV9S20997C11__9S20997C239S20997C22__9S20997C14[7]),  7,10},
  {&(_tg__ZTV8S20997C7__A1__9S20997C239S20997C22__9S20997C14[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C239S20997C22__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C239S20997C22__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C239S20997C22__9S20997C14[9]),  9,12},
  {&(_tg__ZTV8S20997C9__9S20997C239S20997C22__9S20997C14[8]),  8,11},
  {&(_tg__ZTV9S20997C10__9S20997C22__9S20997C14[4]),  4,5},
  {&(_tg__ZTV9S20997C24__9S20997C22__9S20997C14[10]),  10,13},
  {&(_tg__ZTV9S20997C11__9S20997C22__9S20997C14[7]),  7,10},
  {&(_tg__ZTV9S20997C18__9S20997C22__9S20997C14[12]),  12,16},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C22__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C22__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C22__9S20997C14[9]),  9,12},
  {&(_tg__ZTV8S20997C9__9S20997C22__9S20997C14[8]),  8,11},
  {&(_tg__ZTV9S20997C27__9S20997C22__9S20997C14[12]),  12,15},
  {&(_tg__ZTV9S20997C27__9S20997C22__9S20997C14[12]),  12,15},
  {&(_tg__ZTV9S20997C18__9S20997C22__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C20__9S20997C22__9S20997C14[4]),  4,5},
  {&(_tg__ZTV9S20997C109S20997C20__A2__9S20997C22__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C18__9S20997C22__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C22__9S20997C14[12]),  12,16},
  {&(_tg__ZTV9S20997C12__A1__9S20997C22__9S20997C14[4]),  4,5},
  {&(_tg__ZTV9S20997C24__9S20997C14[9]),  9,12},
  {&(_tg__ZTV9S20997C11__9S20997C24__9S20997C14[7]),  7,10},
  {&(_tg__ZTV8S20997C7__9S20997C24__9S20997C14[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C24__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C24__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C24__9S20997C14[9]),  9,12},
  {&(_tg__ZTV8S20997C9__9S20997C24__9S20997C14[8]),  8,11},
  {&(_tg__ZTV9S20997C11__9S20997C14[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__A1__9S20997C14[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C129S20997C11__A1__9S20997C14[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__A1__9S20997C14[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__A1__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C14[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A2__9S20997C14[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A2__9S20997C14[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C14[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C11__9S20997C14[3]),  3,4},
  {&(_tg__ZTV8S20997C5__9S20997C11__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C14[7]),  7,10},
  {&(_tg__ZTV8S20997C9__9S20997C25__9S20997C14[8]),  8,11},
  {&(_tg__ZTV8S20997C7__9S20997C25__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C25__9S20997C14[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C25__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C25__9S20997C14[5]),  5,8},
  {&(_tg__ZTV8S20997C9__9S20997C14[6]),  6,9},
  {&(_tg__ZTV9S20997C108S20997C9__A2__9S20997C14[3]),  3,4},
  {&(_tg__ZTV8S20997C7__8S20997C9__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C9__9S20997C14[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C9__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C9__9S20997C14[5]),  5,8},
  {&(_tg__ZTV9S20997C27__9S20997C14[12]),  12,15},
  {&(_tg__ZTV9S20997C10__9S20997C27__9S20997C14[4]),  4,5},
  {&(_tg__ZTV9S20997C27__9S20997C14[12]),  12,15},
  {&(_tg__ZTV8S20997C5__9S20997C27__9S20997C14[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C27__9S20997C14[6]),  6,9},
  {&(_tg__ZTV9S20997C20__9S20997C27__9S20997C14[4]),  4,5},
  {&(_tg__ZTV9S20997C109S20997C20__A1__9S20997C27__9S20997C14[3]),  3,4},
  {&(_tg__ZTV8S20997C3__9S20997C14[8]),  8,11},
  {&(_tg__ZTV8S20997C5__8S20997C3__9S20997C14[6]),  6,9},
  {&(_tg__ZTV8S20997C5__8S20997C3__9S20997C14[6]),  6,9},
  {&(_tg__ZTV9S20997C20__A1__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C20__A3__9S20997C14[3]),  3,4},
  {&(_tg__ZTV9S20997C10__9S20997C20__A1__9S20997C14[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C14[];
extern  VTBL_ENTRY _ZTV9S20997C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C14[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C27D0Ev,_ZTv0_n24_N9S20997C27D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C27D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C27D1Ev,_ZTv0_n24_N9S20997C27D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C27D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N9S20997C24D0Ev,_ZThn832_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N9S20997C24D1Ev,_ZThn832_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N9S20997C24D0Ev,_ZThn776_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N9S20997C24D1Ev,_ZThn776_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20997C24D0Ev,_ZThn8_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20997C24D1Ev,_ZThn8_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N9S20997C22D0Ev,_ZThn880_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N9S20997C22D1Ev,_ZThn880_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C22D0Ev,_ZTv0_n32_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1264_N9S20997C22D0Ev,_ZThn836_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C22D1Ev,_ZTv0_n32_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1264_N9S20997C22D1Ev,_ZThn836_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C22D0Ev,_ZTv0_n36_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N9S20997C22D0Ev,_ZThn780_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C22D1Ev,_ZTv0_n36_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N9S20997C22D1Ev,_ZThn780_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C22D0Ev,_ZTv0_n28_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20997C22D0Ev,_ZThn12_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C22D1Ev,_ZTv0_n28_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20997C22D1Ev,_ZThn12_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C22D0Ev,_ZTv0_n40_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C22D0Ev,_ZThn4_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C22D1Ev,_ZTv0_n40_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C22D1Ev,_ZThn4_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C23D0Ev,_ZTv0_n32_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1264_N9S20997C23D0Ev,_ZThn836_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C23D1Ev,_ZTv0_n32_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1264_N9S20997C23D1Ev,_ZThn836_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C23D0Ev,_ZTv0_n36_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N9S20997C23D0Ev,_ZThn780_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C23D1Ev,_ZTv0_n36_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N9S20997C23D1Ev,_ZThn780_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C23D0Ev,_ZTv0_n28_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20997C23D0Ev,_ZThn12_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C23D1Ev,_ZTv0_n28_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20997C23D1Ev,_ZThn12_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C23D0Ev,_ZTv0_n40_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C23D0Ev,_ZThn4_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C23D1Ev,_ZTv0_n40_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C23D1Ev,_ZThn4_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C15D0Ev,_ZTv0_n24_N9S20997C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20997C15D0Ev,_ZThn216_N9S20997C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C15D1Ev,_ZTv0_n24_N9S20997C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20997C15D1Ev,_ZThn216_N9S20997C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20997C16D0Ev,_ZThn216_N9S20997C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20997C16D1Ev,_ZThn216_N9S20997C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C31D0Ev,_ZTv0_n28_N9S20997C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1576_N9S20997C31D0Ev,_ZThn1048_N9S20997C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C31D1Ev,_ZTv0_n28_N9S20997C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1576_N9S20997C31D1Ev,_ZThn1048_N9S20997C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C31D0Ev,_ZTv0_n32_N9S20997C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20997C31D0Ev,_ZThn1872_N9S20997C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C31D1Ev,_ZTv0_n32_N9S20997C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20997C31D1Ev,_ZThn1872_N9S20997C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C32D0Ev,_ZTv0_n28_N9S20997C32D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1576_N9S20997C32D0Ev,_ZThn1048_N9S20997C32D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C32D1Ev,_ZTv0_n28_N9S20997C32D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1576_N9S20997C32D1Ev,_ZThn1048_N9S20997C32D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C32D0Ev,_ZTv0_n32_N9S20997C32D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20997C32D0Ev,_ZThn1872_N9S20997C32D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C32D1Ev,_ZTv0_n32_N9S20997C32D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20997C32D1Ev,_ZThn1872_N9S20997C32D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1576_N9S20997C25D0Ev,_ZThn1048_N9S20997C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1576_N9S20997C25D1Ev,_ZThn1048_N9S20997C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20997C25D0Ev,_ZThn1872_N9S20997C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20997C25D1Ev,_ZThn1872_N9S20997C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C14D0Ev,_ZTv0_n32_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20997C14D0Ev,_ZThn1872_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C14D1Ev,_ZTv0_n32_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N9S20997C14D1Ev,_ZThn1872_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C14D0Ev,_ZTv0_n36_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2752_N9S20997C14D0Ev,_ZThn1816_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C14D1Ev,_ZTv0_n36_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2752_N9S20997C14D1Ev,_ZThn1816_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C14D0Ev,_ZTv0_n28_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1576_N9S20997C14D0Ev,_ZThn1048_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C14D1Ev,_ZTv0_n28_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1576_N9S20997C14D1Ev,_ZThn1048_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C14D0Ev,_ZTv0_n40_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1560_N9S20997C14D0Ev,_ZThn1040_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C14D1Ev,_ZTv0_n40_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1560_N9S20997C14D1Ev,_ZThn1040_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N9S20997C14D0Ev,_ZTv0_n84_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N9S20997C14D0Ev,_ZThn1036_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N9S20997C14D1Ev,_ZTv0_n84_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N9S20997C14D1Ev,_ZThn1036_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C14D0Ev,_ZTv0_n24_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S20997C14D0Ev,_ZThn1916_N9S20997C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20997C14D0Ev,_ZThn272_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C14D1Ev,_ZTv0_n24_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N9S20997C14D1Ev,_ZThn1916_N9S20997C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N9S20997C14D1Ev,_ZThn272_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C14D0Ev,_ZTv0_n56_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C14D0Ev,_ZThn56_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C14D1Ev,_ZTv0_n56_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C14D1Ev,_ZThn56_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C14 = {  "S20997C14", // class name
  bases_S20997C14, 62,
  &(vtc_S20997C14[0]), // expected_vtbl_contents
  &(vtt_S20997C14[0]), // expected_vtt_contents
  ABISELECT(3056,2008), // object size
  NSPAIRA(_ZTI9S20997C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20997C14),191, //virtual function table var
  22, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C14),148, //virtual table table var
  44, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C35  : S20997C19 {
  virtual  ~S20997C35(); // _ZN9S20997C35D2Ev
  S20997C35(); // tgen
};
//SIG(-1 S20997C35) C1{ BC2{ VBC3{ m} VBC4{ VBC5{ m FL[5]} VBC6{ v1} BC3 vd} v2} vd}


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

static void Test_S20997C35()
{
  extern Class_Descriptor cd_S20997C35;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20997C35, buf);
    S20997C35 *dp, &lv = *(dp=new (buf) S20997C35());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20997C35)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C35)");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*), ABISELECT(8,4), "S20997C35");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(8,4), "S20997C35");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*), 0, "S20997C35");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*), 0, "S20997C35");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*), 0, "S20997C35");
    check_base_class_offset(lv, (S20997C19*), 0, "S20997C35");
    test_class_info(&lv, &cd_S20997C35);
    dp->~S20997C35();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C35(Test_S20997C35, "S20997C35", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S20997C35C1Ev();
extern void _ZN9S20997C35D2Ev();
Name_Map name_map_S20997C35[] = {
  NSPAIR(_ZN9S20997C35C1Ev),
  NSPAIR(_ZN9S20997C35D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
static Base_Class bases_S20997C35[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20997C7,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20997C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C19,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C35[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C35D1Ev();
extern void _ZN9S20997C35D0Ev();
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY vtc_S20997C35[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C35D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C35D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern VTBL_ENTRY _ZTV9S20997C35[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C19D1Ev();
extern void _ZN9S20997C19D0Ev();
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__9S20997C35[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C35[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
static  VTT_ENTRY vtt_S20997C35[] = {
  {&(_ZTV9S20997C35[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C35[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C35[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C35[8]),  8,12},
  {&(_ZTV9S20997C35[8]),  8,12},
  {&(_ZTV9S20997C35[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C35[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C35[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20997C35[];
extern  VTBL_ENTRY _ZTV9S20997C35[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C35[];
Class_Descriptor cd_S20997C35 = {  "S20997C35", // class name
  bases_S20997C35, 6,
  &(vtc_S20997C35[0]), // expected_vtbl_contents
  &(vtt_S20997C35[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S20997C35),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20997C35),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C35),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C34  : S20997C35 {
  char s20997c34f0;
  virtual  ~S20997C34(); // _ZN9S20997C34D2Ev
  S20997C34(); // tgen
};
//SIG(-1 S20997C34) C1{ BC2{ BC3{ VBC4{ m} VBC5{ VBC6{ m FL[5]} VBC7{ v1} BC4 vd} v2} vd} vd Fc}


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

static void Test_S20997C34()
{
  extern Class_Descriptor cd_S20997C34;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S20997C34, buf);
    S20997C34 *dp, &lv = *(dp=new (buf) S20997C34());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S20997C34)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C34)");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*)(S20997C35*), ABISELECT(9,5), "S20997C34");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(16,8), "S20997C34");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*), 0, "S20997C34");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*), 0, "S20997C34");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*)(S20997C35*), 0, "S20997C34");
    check_base_class_offset(lv, (S20997C19*)(S20997C35*), 0, "S20997C34");
    check_base_class_offset(lv, (S20997C35*), 0, "S20997C34");
    check_field_offset(lv, s20997c34f0, ABISELECT(8,4), "S20997C34.s20997c34f0");
    test_class_info(&lv, &cd_S20997C34);
    dp->~S20997C34();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C34(Test_S20997C34, "S20997C34", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN9S20997C34C1Ev();
extern void _ZN9S20997C34D2Ev();
Name_Map name_map_S20997C34[] = {
  NSPAIR(_ZN9S20997C34C1Ev),
  NSPAIR(_ZN9S20997C34D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C35;
extern VTBL_ENTRY _ZTI9S20997C35[];
extern  VTBL_ENTRY _ZTV9S20997C35[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C35[];
static Base_Class bases_S20997C34[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20997C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20997C35,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C34[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C34D1Ev();
extern void _ZN9S20997C34D0Ev();
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY vtc_S20997C34[] = {
  0,
  ABISELECT(9,5),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C34[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C34D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C34D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern VTBL_ENTRY _ZTV9S20997C34[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C35D1Ev();
extern void _ZN9S20997C35D0Ev();
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C35__9S20997C34[] = {
  0,
  ABISELECT(9,5),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C35D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C35D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C199S20997C35__9S20997C34[] = {
  0,
  ABISELECT(9,5),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C34[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
static  VTT_ENTRY vtt_S20997C34[] = {
  {&(_ZTV9S20997C34[8]),  8,12},
  {&(_tg__ZTV9S20997C35__9S20997C34[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C35__9S20997C34[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C35__9S20997C34[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C35__9S20997C34[8]),  8,12},
  {&(_tg__ZTV9S20997C35__9S20997C34[8]),  8,12},
  {&(_tg__ZTV9S20997C35__9S20997C34[8]),  8,12},
  {&(_ZTV9S20997C34[8]),  8,12},
  {&(_ZTV9S20997C34[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C34[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C34[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20997C34[];
extern  VTBL_ENTRY _ZTV9S20997C34[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C34[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C34 = {  "S20997C34", // class name
  bases_S20997C34, 7,
  &(vtc_S20997C34[0]), // expected_vtbl_contents
  &(vtt_S20997C34[0]), // expected_vtt_contents
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI9S20997C34),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20997C34),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C34),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C37  {
  ::S4227C37 s20997c37f0;
  void  mf20997c37(); // _ZN9S20997C3710mf20997c37Ev
};
//SIG(-1 S20997C37) C1{ m FC2{ m}}


void  S20997C37 ::mf20997c37(){}

static void Test_S20997C37()
{
  {
    init_simple_test("S20997C37");
    S20997C37 lv;
    check2(sizeof(lv), 1, "sizeof(S20997C37)");
    check2(__alignof__(lv), 1, "__alignof__(S20997C37)");
    check_field_offset(lv, s20997c37f0, 0, "S20997C37.s20997c37f0");
  }
}
static Arrange_To_Call_Me vS20997C37(Test_S20997C37, "S20997C37", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI9S20997C37[];
VTBL_ENTRY *P__ZTI9S20997C37 = _ZTI9S20997C37; 
Class_Descriptor cd_S20997C37 = {  "S20997C37", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI9S20997C37),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  S20997C36  : virtual S20997C6 , virtual S20997C2 , virtual S20997C16 , virtual S20997C37 , S20997C35 {
  virtual  ~S20997C36(); // _ZN9S20997C36D2Ev
  virtual void  v5(); // _ZN9S20997C362v5Ev
  S20997C36(); // tgen
};
//SIG(-1 S20997C36) C1{ VBC2{ m FL[5]} VBC3{ VBC4{ VBC5{ m FL[4]} VBC6{ VBC2 VBC7{ v2} BC8{ m} vd} vd} BC9{ VBC7 BC10{ BC7 VBC2 BC8 Fp[10]} VBC11{ VBC8 BC12{ VBC7 FC10[9]} BC6 BC13{ BC6 vd}} vd} BC2 VBC13} VBC14{ VBC15{ VBC10} BC7 VBC5 VBC16{ VBC7 VBC6 VBC5 VBC17{ VBC8 VBC6 v3} VBC12 vd} BC18{ BC19{ BC2 BC7} BC10}} VBC20{ m FC8} BC21{ BC17 vd} vd v1}


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

static void Test_S20997C36()
{
  extern Class_Descriptor cd_S20997C36;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(353,462)];
    init_test(&cd_S20997C36, buf);
    S20997C36 *dp, &lv = *(dp=new (buf) S20997C36());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2816,1844), "sizeof(S20997C36)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C36)");
    /*is_ambiguous_... S20997C36::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(8,4), "S20997C36");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C9*)(S20997C2*), ABISELECT(8,4), "S20997C36");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(8,4), "S20997C36");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(8,4), "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*), ABISELECT(8,4), "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*), ABISELECT(8,4), "S20997C36");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(8,4), "S20997C36");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C3*), ABISELECT(184,132), "S20997C36");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C16*), ABISELECT(184,132), "S20997C36");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C18*), ABISELECT(184,132), "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*), ABISELECT(176,128), "S20997C36");
    /*is_ambiguous_... S20997C9::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C9*)(S20997C2*), ABISELECT(176,128), "S20997C36");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), ABISELECT(176,128), "S20997C36");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), ABISELECT(176,128), "S20997C36");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(176,128), "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*), ABISELECT(176,128), "S20997C36");
    check_base_class_offset(lv, (S20997C7*)(S20997C18*), ABISELECT(176,128), "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C12 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C12*), ABISELECT(176,128), "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*), ABISELECT(176,128), "S20997C36");
    check_base_class_offset(lv, (S20997C5*)(S20997C3*), ABISELECT(176,128), "S20997C36");
    check_base_class_offset(lv, (S20997C5*)(S20997C18*), ABISELECT(176,128), "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C19 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C19*), ABISELECT(176,128), "S20997C36");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*)(S20997C35*), ABISELECT(176,128), "S20997C36");
    check_base_class_offset(lv, (S20997C3*)(S20997C2*), ABISELECT(176,128), "S20997C36");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C9*)(S20997C2*), ABISELECT(48,44), "S20997C36");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C9*)(S20997C2*), ABISELECT(48,44), "S20997C36");
    check_base_class_offset(lv, (S20997C10*)(S20997C9*)(S20997C2*), ABISELECT(48,44), "S20997C36");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), 0, "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C19 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*), 0, "S20997C36");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*)(S20997C35*), 0, "S20997C36");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(216,164), "S20997C36");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(1376,924), "S20997C36");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(1376,924), "S20997C36");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1384,928), "S20997C36");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1384,928), "S20997C36");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(1384,928), "S20997C36");
    check_base_class_offset(lv, (S20997C11*)(S20997C9*)(S20997C2*), ABISELECT(216,164), "S20997C36");
    check_base_class_offset(lv, (S20997C9*)(S20997C2*), ABISELECT(48,44), "S20997C36");
    /*is_ambiguous_... S20997C2::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C2*), ABISELECT(136,88), "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C13 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*), ABISELECT(1392,932), "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C13*), ABISELECT(1392,932), "S20997C36");
    /*is_ambiguous_... S20997C2::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C13*)(S20997C2*), ABISELECT(1392,932), "S20997C36");
    check_base_class_offset(lv, (S20997C2*), ABISELECT(48,44), "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*), ABISELECT(1552,1032), "S20997C36");
    /*is_ambiguous_... S20997C36::S20997C10 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*), ABISELECT(1552,1032), "S20997C36");
    check_base_class_offset(lv, (S20997C10*)(S20997C17*), ABISELECT(1552,1032), "S20997C36");
    check_base_class_offset(lv, (S20997C17*)(S20997C16*), ABISELECT(1544,1028), "S20997C36");
    /*is_ambiguous_... S20997C16::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C16*), ABISELECT(1400,936), "S20997C36");
    check_base_class_offset(lv, (S20997C19*)(S20997C18*), ABISELECT(1640,1076), "S20997C36");
    check_base_class_offset(lv, (S20997C12*)(S20997C18*), ABISELECT(1648,1080), "S20997C36");
    check_base_class_offset(lv, (S20997C18*)(S20997C16*), ABISELECT(1640,1076), "S20997C36");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C20*)(S20997C16*), ABISELECT(1416,944), "S20997C36");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C20*)(S20997C16*), ABISELECT(1408,940), "S20997C36");
    check_base_class_offset(lv, (S20997C21*)(S20997C20*)(S20997C16*), ABISELECT(1408,940), "S20997C36");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(1456,984), "S20997C36");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(1456,984), "S20997C36");
    check_base_class_offset(lv, (S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(1456,984), "S20997C36");
    check_base_class_offset(lv, (S20997C20*)(S20997C16*), ABISELECT(1408,940), "S20997C36");
    check_base_class_offset(lv, (S20997C16*), ABISELECT(1400,936), "S20997C36");
    check_base_class_offset(lv, (S20997C37*), ABISELECT(2808,1840), "S20997C36");
    check_base_class_offset(lv, (S20997C19*)(S20997C35*), 0, "S20997C36");
    check_base_class_offset(lv, (S20997C35*), 0, "S20997C36");
    test_class_info(&lv, &cd_S20997C36);
    dp->~S20997C36();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C36(Test_S20997C36, "S20997C36", ABISELECT(2816,1844));

#else // __cplusplus

extern void _ZN9S20997C36C1Ev();
extern void _ZN9S20997C36D2Ev();
Name_Map name_map_S20997C36[] = {
  NSPAIR(_ZN9S20997C36C1Ev),
  NSPAIR(_ZN9S20997C36D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C3;
extern VTBL_ENTRY _ZTI8S20997C3[];
extern  VTBL_ENTRY _ZTV8S20997C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C3[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
extern Class_Descriptor cd_S20997C9;
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C2;
extern VTBL_ENTRY _ZTI8S20997C2[];
extern  VTBL_ENTRY _ZTV8S20997C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C2[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C17;
extern VTBL_ENTRY _ZTI9S20997C17[];
extern  VTBL_ENTRY _ZTV9S20997C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C17[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S20997C18;
extern VTBL_ENTRY _ZTI9S20997C18[];
extern  VTBL_ENTRY _ZTV9S20997C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C18[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C20;
extern VTBL_ENTRY _ZTI9S20997C20[];
extern  VTBL_ENTRY _ZTV9S20997C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C20[];
extern Class_Descriptor cd_S20997C16;
extern VTBL_ENTRY _ZTI9S20997C16[];
extern  VTBL_ENTRY _ZTV9S20997C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C16[];
extern Class_Descriptor cd_S20997C37;
extern VTBL_ENTRY _ZTI9S20997C37[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C35;
extern VTBL_ENTRY _ZTI9S20997C35[];
extern  VTBL_ENTRY _ZTV9S20997C35[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C35[];
static Base_Class bases_S20997C36[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(176,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    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
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(176,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C3,    ABISELECT(176,128), //bcp->offset
    40, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C12,    ABISELECT(216,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1376,924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(1376,924), //bcp->offset
    61, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1384,928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(1384,928), //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
    15, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1384,928), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(216,164), //bcp->offset
    51, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20997C9,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    22, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1392,932), //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
    21, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1392,932), //bcp->offset
    77, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20997C2,    ABISELECT(48,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C7,    ABISELECT(1552,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1552,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    ABISELECT(1552,1032), //bcp->offset
    115, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S20997C17,    ABISELECT(1544,1028), //bcp->offset
    111, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(1400,936), //bcp->offset
    -1, //bcp->virtual_function_table_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
    38, //immediately_derived
  0, 0},
  {&cd_S20997C19,    ABISELECT(1640,1076), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(1648,1080), //bcp->offset
    136, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S20997C18,    ABISELECT(1640,1076), //bcp->offset
    120, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1416,944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    ABISELECT(1408,940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(1408,940), //bcp->offset
    -1, //bcp->virtual_function_table_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
    37, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(1456,984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1456,984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(1456,984), //bcp->offset
    107, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20997C20,    ABISELECT(1408,940), //bcp->offset
    103, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20997C16,    ABISELECT(1400,936), //bcp->offset
    86, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C37,    ABISELECT(2808,1840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20997C35,    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
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C36[];
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void _ZN9S20997C36D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void _ZN9S20997C36D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN9S20997C362v5Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S20997C36D1Ev,_ZTv0_n48_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn48_N9S20997C36D1Ev,_ZThn44_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20997C36D0Ev,_ZTv0_n48_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn48_N9S20997C36D0Ev,_ZThn44_N9S20997C36D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn176_N9S20997C36D1Ev,_ZThn128_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn176_N9S20997C36D0Ev,_ZThn128_N9S20997C36D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C36D1Ev,_ZTv0_n28_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn216_N9S20997C36D1Ev,_ZThn164_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C36D0Ev,_ZTv0_n28_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn216_N9S20997C36D0Ev,_ZThn164_N9S20997C36D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C36D1Ev,_ZTvn760_n28_N9S20997C36D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C36D0Ev,_ZTvn760_n28_N9S20997C36D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C36D1Ev,_ZTvn764_n28_N9S20997C36D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C36D0Ev,_ZTvn764_n28_N9S20997C36D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn1392_N9S20997C36D1Ev,_ZThn932_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn1392_N9S20997C36D0Ev,_ZThn932_N9S20997C36D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n112_N9S20997C36D1Ev,_ZTv0_n56_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn1400_N9S20997C36D1Ev,_ZThn936_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S20997C36D0Ev,_ZTv0_n56_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn1400_N9S20997C36D0Ev,_ZThn936_N9S20997C36D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn1640_N9S20997C36D1Ev,_ZThn1076_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn1640_N9S20997C36D0Ev,_ZThn1076_N9S20997C36D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C36[] = {
  ABISELECT(2808,1840),
  ABISELECT(1648,1080),
  ABISELECT(1640,1076),
  ABISELECT(1640,1076),
  ABISELECT(1552,1032),
  ABISELECT(1544,1028),
  ABISELECT(1400,936),
  ABISELECT(1392,932),
  ABISELECT(216,164),
  ABISELECT(184,132),
  ABISELECT(176,128),
  ABISELECT(48,44),
  ABISELECT(176,128),
  0,
  0,
  ABISELECT(176,128),
  ABISELECT(8,4),
  ABISELECT(176,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  (VTBL_ENTRY)&_ZN9S20997C362v5Ev,
  ABISELECT(-48,-44),
  0,
  ABISELECT(1344,888),
  ABISELECT(128,84),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(-48,-44),
  ABISELECT(168,120),
  ABISELECT(128,84),
  -40,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20997C36D1Ev,_ZTv0_n48_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20997C36D0Ev,_ZTv0_n48_N9S20997C36D0Ev),
  0,
  ABISELECT(8,4),
  ABISELECT(-176,-128),
  0,
  ABISELECT(-168,-124),
  0,
  ABISELECT(-176,-128),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
  ABISELECT(-216,-164),
  ABISELECT(-208,-160),
  ABISELECT(-216,-164),
  ABISELECT(-40,-36),
  ABISELECT(-40,-36),
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C36D1Ev,_ZTv0_n28_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C36D0Ev,_ZTv0_n28_N9S20997C36D0Ev),
  ABISELECT(-1200,-796),
  ABISELECT(-1368,-920),
  ABISELECT(-1200,-796),
  ABISELECT(-1376,-924),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C36D1Ev,_ZTvn760_n28_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C36D0Ev,_ZTvn760_n28_N9S20997C36D0Ev),
  ABISELECT(-1208,-800),
  ABISELECT(-1376,-924),
  ABISELECT(-1208,-800),
  ABISELECT(-1384,-928),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C36D1Ev,_ZTvn764_n28_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C36D0Ev,_ZTvn764_n28_N9S20997C36D0Ev),
  ABISELECT(-1392,-932),
  ABISELECT(-1216,-804),
  ABISELECT(-1384,-928),
  ABISELECT(-1216,-804),
  ABISELECT(-1392,-932),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
  ABISELECT(-1400,-936),
  0,
  ABISELECT(248,144),
  ABISELECT(-1400,-936),
  ABISELECT(240,140),
  ABISELECT(-1224,-808),
  ABISELECT(-1224,-808),
  ABISELECT(240,140),
  ABISELECT(-1216,-804),
  ABISELECT(-1392,-932),
  ABISELECT(152,96),
  ABISELECT(144,92),
  ABISELECT(-1400,-936),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C36D1Ev,_ZTv0_n56_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C36D0Ev,_ZTv0_n56_N9S20997C36D0Ev),
  ABISELECT(-1400,-936),
  ABISELECT(-1408,-940),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-1448,-980),
  ABISELECT(-1456,-984),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-1536,-1024),
  ABISELECT(8,4),
  ABISELECT(-1544,-1028),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  0,
  ABISELECT(-1544,-1028),
  ABISELECT(-1552,-1032),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-1456,-944),
  0,
  ABISELECT(-1464,-948),
  ABISELECT(-1640,-1076),
  ABISELECT(-1640,-1076),
  ABISELECT(-1464,-948),
  ABISELECT(-1632,-1072),
  ABISELECT(-1464,-948),
  ABISELECT(-1640,-1076),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  ABISELECT(-1472,-952),
  ABISELECT(-1472,-952),
  ABISELECT(-1648,-1080),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C36[];
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev)();
extern void _ZN9S20997C35D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev)();
extern void _ZN9S20997C35D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C35__9S20997C36[] = {
  ABISELECT(176,128),
  0,
  0,
  ABISELECT(176,128),
  ABISELECT(8,4),
  ABISELECT(176,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C199S20997C35__A1__9S20997C36[] = {
  ABISELECT(176,128),
  0,
  0,
  ABISELECT(176,128),
  ABISELECT(8,4),
  ABISELECT(176,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZThn176_N9S20997C19D1Ev,_ZThn128_N9S20997C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void ABISELECT(_ZThn176_N9S20997C19D0Ev,_ZThn128_N9S20997C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C199S20997C35__A1__9S20997C36[] = {
  ABISELECT(-176,-128),
  0,
  ABISELECT(-168,-124),
  0,
  ABISELECT(-176,-128),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev)();
extern void ABISELECT(_ZThn176_N9S20997C35D1Ev,_ZThn128_N9S20997C35D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev)();
extern void ABISELECT(_ZThn176_N9S20997C35D0Ev,_ZThn128_N9S20997C35D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C35__9S20997C36[] = {
  ABISELECT(-176,-128),
  0,
  ABISELECT(-168,-124),
  0,
  ABISELECT(-176,-128),
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C2D1Ev();
extern void _ZN8S20997C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C2__9S20997C36[] = {
  ABISELECT(1344,888),
  ABISELECT(128,84),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(-48,-44),
  ABISELECT(168,120),
  ABISELECT(128,84),
  -40,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C2D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C98S20997C2__9S20997C36[] = {
  ABISELECT(-48,-44),
  ABISELECT(168,120),
  ABISELECT(128,84),
  -40,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C108S20997C98S20997C2__9S20997C36[] = {
  -40,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C98S20997C2__9S20997C36[] = {
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S20997C9D1Ev,_ZThn120_N8S20997C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S20997C9D0Ev,_ZThn120_N8S20997C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C98S20997C2__9S20997C36[] = {
  ABISELECT(-168,-120),
  ABISELECT(-208,-160),
  ABISELECT(-216,-164),
  ABISELECT(-40,-36),
  ABISELECT(-40,-36),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C98S20997C2__9S20997C36[] = {
  ABISELECT(-1200,-796),
  ABISELECT(-1368,-920),
  ABISELECT(-1200,-796),
  ABISELECT(-1328,-880),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C98S20997C2__9S20997C36[] = {
  ABISELECT(-1208,-800),
  ABISELECT(-1376,-924),
  ABISELECT(-1208,-800),
  ABISELECT(-1336,-884),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20997C2D1Ev,_ZThn84_N8S20997C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20997C2D0Ev,_ZThn84_N8S20997C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__8S20997C2__9S20997C36[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-128,-84),
  0,
  ABISELECT(-168,-124),
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C2D1Ev,_ZTv0_n28_N8S20997C2D1Ev)();
extern void ABISELECT(_ZThn168_N8S20997C2D1Ev,_ZThn120_N8S20997C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C2D0Ev,_ZTv0_n28_N8S20997C2D0Ev)();
extern void ABISELECT(_ZThn168_N8S20997C2D0Ev,_ZThn120_N8S20997C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C2__9S20997C36[] = {
  ABISELECT(-168,-120),
  ABISELECT(-208,-160),
  ABISELECT(-216,-164),
  ABISELECT(-40,-36),
  ABISELECT(-40,-36),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C2D1Ev,_ZTv0_n28_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C2D0Ev,_ZTv0_n28_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C2D1Ev,_ZTvn760_n28_N8S20997C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C2D0Ev,_ZTvn760_n28_N8S20997C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__A1__8S20997C2__9S20997C36[] = {
  ABISELECT(-1200,-796),
  ABISELECT(-1368,-920),
  ABISELECT(-1200,-796),
  ABISELECT(-1328,-880),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C2D1Ev,_ZTvn760_n28_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C2D0Ev,_ZTvn760_n28_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C2D1Ev,_ZTvn764_n28_N8S20997C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C2D0Ev,_ZTvn764_n28_N8S20997C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C2__9S20997C36[] = {
  ABISELECT(-1208,-800),
  ABISELECT(-1376,-924),
  ABISELECT(-1208,-800),
  ABISELECT(-1336,-884),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C2D1Ev,_ZTvn764_n28_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C2D0Ev,_ZTvn764_n28_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev)();
extern void ABISELECT(_ZThn1344_N8S20997C2D1Ev,_ZThn888_N8S20997C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev)();
extern void ABISELECT(_ZThn1344_N8S20997C2D0Ev,_ZThn888_N8S20997C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C13__A1__8S20997C2__9S20997C36[] = {
  ABISELECT(-1344,-888),
  ABISELECT(-1216,-804),
  ABISELECT(-1384,-928),
  ABISELECT(-1216,-804),
  ABISELECT(-1344,-888),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev)();
extern void _ZN8S20997C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev)();
extern void _ZN8S20997C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__9S20997C36[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(-168,-124),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C3[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C36[] = {
  0,
  ABISELECT(-168,-124),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C36[] = {
  ABISELECT(-208,-160),
  ABISELECT(-216,-164),
  ABISELECT(-40,-36),
  ABISELECT(-40,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__9S20997C36[] = {
  ABISELECT(-40,-36),
  ABISELECT(-40,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C129S20997C11__9S20997C36[] = {
  0,
  ABISELECT(40,36),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__A1__9S20997C36[] = {
  ABISELECT(-1200,-796),
  ABISELECT(-1368,-920),
  ABISELECT(-1200,-796),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__A1__9S20997C36[] = {
  0,
  ABISELECT(1200,796),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C36[] = {
  ABISELECT(-1208,-800),
  ABISELECT(-1376,-924),
  ABISELECT(-1208,-800),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A2__9S20997C36[] = {
  ABISELECT(-1208,-800),
  ABISELECT(-1376,-924),
  ABISELECT(-1208,-800),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A2__9S20997C36[] = {
  0,
  ABISELECT(1208,800),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C36[] = {
  0,
  ABISELECT(1208,800),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C11__9S20997C36[] = {
  0,
  ABISELECT(40,36),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__9S20997C36[] = {
  ABISELECT(-1200,-796),
  ABISELECT(-1368,-920),
  ABISELECT(-1200,-796),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__9S20997C36[] = {
  ABISELECT(-1208,-800),
  ABISELECT(-1376,-924),
  ABISELECT(-1208,-800),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C13__A1__9S20997C36[] = {
  ABISELECT(-1216,-804),
  ABISELECT(-1384,-928),
  ABISELECT(-1216,-804),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C13__A3__9S20997C36[] = {
  ABISELECT(-1216,-804),
  ABISELECT(-1384,-928),
  ABISELECT(-1216,-804),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C13__A3__9S20997C36[] = {
  0,
  ABISELECT(1216,804),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C13__A1__9S20997C36[] = {
  0,
  ABISELECT(1216,804),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C16D1Ev();
extern void _ZN9S20997C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C16__9S20997C36[] = {
  ABISELECT(248,144),
  ABISELECT(-1400,-936),
  ABISELECT(240,140),
  ABISELECT(-1224,-808),
  ABISELECT(-1224,-808),
  ABISELECT(240,140),
  ABISELECT(-1216,-804),
  ABISELECT(-1392,-932),
  ABISELECT(152,96),
  ABISELECT(144,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C209S20997C16__9S20997C36[] = {
  ABISELECT(-1400,-936),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C209S20997C16__A2__9S20997C36[] = {
  ABISELECT(-1448,-980),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C209S20997C16__9S20997C36[] = {
  ABISELECT(-1448,-980),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C16__9S20997C36[] = {
  ABISELECT(-1536,-1024),
  ABISELECT(8,4),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C16__9S20997C36[] = {
  0,
  ABISELECT(-1544,-1028),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev)();
extern void ABISELECT(_ZThn240_N9S20997C16D1Ev,_ZThn140_N9S20997C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev)();
extern void ABISELECT(_ZThn240_N9S20997C16D0Ev,_ZThn140_N9S20997C16D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C16__9S20997C36[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1456,-944),
  0,
  ABISELECT(-1464,-948),
  ABISELECT(-1640,-1076),
  ABISELECT(-240,-140),
  ABISELECT(-1464,-948),
  ABISELECT(-1632,-1072),
  ABISELECT(-1464,-948),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C16__9S20997C36[] = {
  ABISELECT(1224,808),
  0,
  ABISELECT(-168,-124),
  0,
  ABISELECT(1224,808),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C16__9S20997C36[] = {
  ABISELECT(-1472,-952),
  ABISELECT(-1472,-952),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C16__9S20997C36[] = {
  ABISELECT(-1400,-936),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A1__9S20997C16__9S20997C36[] = {
  ABISELECT(-1448,-980),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C36[] = {
  ABISELECT(-1536,-1024),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C17__9S20997C36[] = {
  0,
  ABISELECT(-1544,-1028),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__A1__9S20997C36[] = {
  ABISELECT(-1544,-1028),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void _ZN9S20997C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void _ZN9S20997C18D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C36[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1456,-944),
  0,
  ABISELECT(-1464,-948),
  ABISELECT(-1640,-1076),
  0,
  ABISELECT(-1464,-948),
  ABISELECT(-1632,-1072),
  ABISELECT(-1464,-948),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C18__9S20997C36[] = {
  ABISELECT(1464,948),
  0,
  ABISELECT(-168,-124),
  0,
  ABISELECT(1464,948),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C18__9S20997C36[] = {
  ABISELECT(-1472,-952),
  ABISELECT(-1472,-952),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__9S20997C36[] = {
  ABISELECT(-1464,-948),
  ABISELECT(-1640,-1076),
  0,
  ABISELECT(-1464,-948),
  ABISELECT(-1632,-1072),
  ABISELECT(-1464,-948),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C19__9S20997C36[] = {
  ABISELECT(1464,948),
  0,
  ABISELECT(-168,-124),
  0,
  ABISELECT(1464,948),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__A1__9S20997C36[] = {
  ABISELECT(-1472,-952),
  ABISELECT(-1472,-952),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C12__A1__9S20997C36[] = {
  0,
  ABISELECT(1472,952),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C36[] = {
  {&(_ZTV9S20997C36[20]),  20,141},
  {&(_tg__ZTV9S20997C35__9S20997C36[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C35__A1__9S20997C36[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C35__A1__9S20997C36[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C35__A1__9S20997C36[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C35__9S20997C36[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C35__9S20997C36[6]),  6,9},
  {&(_ZTV9S20997C36[37]),  37,141},
  {&(_ZTV9S20997C36[48]),  48,141},
  {&(_ZTV9S20997C36[48]),  48,141},
  {&(_ZTV9S20997C36[48]),  48,141},
  {&(_ZTV9S20997C36[58]),  58,141},
  {&(_ZTV9S20997C36[66]),  66,141},
  {&(_ZTV9S20997C36[74]),  74,141},
  {&(_ZTV9S20997C36[83]),  83,141},
  {&(_ZTV9S20997C36[100]),  100,141},
  {&(_ZTV9S20997C36[115]),  115,141},
  {&(_ZTV9S20997C36[119]),  119,141},
  {&(_ZTV9S20997C36[132]),  132,141},
  {&(_ZTV9S20997C36[132]),  132,141},
  {&(_ZTV9S20997C36[140]),  140,141},
  {&(_ZTV9S20997C36[106]),  106,141},
  {&(_ZTV9S20997C36[110]),  110,141},
  {&(_tg__ZTV8S20997C2__9S20997C36[10]),  10,13},
  {&(_tg__ZTV8S20997C98S20997C2__9S20997C36[6]),  6,9},
  {&(_tg__ZTV9S20997C108S20997C98S20997C2__9S20997C36[3]),  3,4},
  {&(_tg__ZTV8S20997C7__8S20997C98S20997C2__9S20997C36[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C98S20997C2__9S20997C36[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C98S20997C2__9S20997C36[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C98S20997C2__9S20997C36[5]),  5,8},
  {&(_tg__ZTV8S20997C3__8S20997C2__9S20997C36[8]),  8,11},
  {&(_tg__ZTV8S20997C3__8S20997C2__9S20997C36[8]),  8,11},
  {&(_tg__ZTV8S20997C3__8S20997C2__9S20997C36[8]),  8,11},
  {&(_tg__ZTV9S20997C11__8S20997C2__9S20997C36[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__A1__8S20997C2__9S20997C36[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C2__9S20997C36[5]),  5,8},
  {&(_tg__ZTV9S20997C13__A1__8S20997C2__9S20997C36[6]),  6,9},
  {&(_tg__ZTV8S20997C3__9S20997C36[8]),  8,11},
  {&(_tg__ZTV8S20997C3__9S20997C36[8]),  8,11},
  {&(_tg__ZTV8S20997C3__9S20997C36[8]),  8,11},
  {&(_tg__ZTV8S20997C5__9S20997C36[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C36[5]),  5,8},
  {&(_tg__ZTV9S20997C11__9S20997C36[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C36[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C129S20997C11__9S20997C36[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__A1__9S20997C36[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__A1__9S20997C36[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C36[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A2__9S20997C36[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A2__9S20997C36[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C36[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C11__9S20997C36[3]),  3,4},
  {&(_tg__ZTV8S20997C5__9S20997C11__9S20997C36[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__9S20997C36[5]),  5,8},
  {&(_tg__ZTV9S20997C13__A1__9S20997C36[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C13__A3__9S20997C36[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C13__A3__9S20997C36[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C13__A1__9S20997C36[3]),  3,4},
  {&(_tg__ZTV9S20997C16__9S20997C36[12]),  12,15},
  {&(_tg__ZTV9S20997C209S20997C16__9S20997C36[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C209S20997C16__A2__9S20997C36[3]),  3,4},
  {&(_tg__ZTV9S20997C10__9S20997C209S20997C16__9S20997C36[3]),  3,4},
  {&(_tg__ZTV9S20997C17__9S20997C16__9S20997C36[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C16__9S20997C36[4]),  4,5},
  {&(_tg__ZTV9S20997C18__9S20997C16__9S20997C36[12]),  12,16},
  {&(_tg__ZTV8S20997C5__9S20997C16__9S20997C36[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C16__9S20997C36[6]),  6,9},
  {&(_tg__ZTV9S20997C18__9S20997C16__9S20997C36[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C16__9S20997C36[4]),  4,5},
  {&(_tg__ZTV9S20997C20__9S20997C16__9S20997C36[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C20__A1__9S20997C16__9S20997C36[3]),  3,4},
  {&(_tg__ZTV9S20997C17__9S20997C36[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C17__9S20997C36[4]),  4,5},
  {&(_tg__ZTV9S20997C10__A1__9S20997C36[3]),  3,4},
  {&(_tg__ZTV9S20997C18__9S20997C36[12]),  12,16},
  {&(_tg__ZTV8S20997C5__9S20997C18__9S20997C36[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C18__9S20997C36[6]),  6,9},
  {&(_tg__ZTV9S20997C18__9S20997C36[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C18__9S20997C36[4]),  4,5},
  {&(_tg__ZTV9S20997C19__9S20997C36[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C19__9S20997C36[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C19__9S20997C36[6]),  6,9},
  {&(_tg__ZTV9S20997C12__A1__9S20997C36[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C12__A1__9S20997C36[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C36[];
extern  VTBL_ENTRY _ZTV9S20997C36[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C36[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20997C16D0Ev,_ZThn140_N9S20997C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20997C16D1Ev,_ZThn140_N9S20997C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C2D0Ev,_ZTv0_n28_N8S20997C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20997C2D0Ev,_ZThn120_N8S20997C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C2D1Ev,_ZTv0_n28_N8S20997C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20997C2D1Ev,_ZThn120_N8S20997C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N8S20997C2D0Ev,_ZThn888_N8S20997C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C2D0Ev,_ZThn84_N8S20997C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N8S20997C2D1Ev,_ZThn888_N8S20997C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C2D1Ev,_ZThn84_N8S20997C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20997C9D0Ev,_ZThn120_N8S20997C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20997C9D1Ev,_ZThn120_N8S20997C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20997C19D0Ev,_ZThn128_N9S20997C19D0Ev),
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20997C19D1Ev,_ZThn128_N9S20997C19D1Ev),
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20997C35D0Ev,_ZThn128_N9S20997C35D0Ev),
  (VTBL_ENTRY)_ZN9S20997C35D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20997C35D1Ev,_ZThn128_N9S20997C35D1Ev),
  (VTBL_ENTRY)_ZN9S20997C35D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C36D0Ev,_ZTv0_n56_N9S20997C36D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N9S20997C36D0Ev,_ZThn936_N9S20997C36D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C36D1Ev,_ZTv0_n56_N9S20997C36D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N9S20997C36D1Ev,_ZThn936_N9S20997C36D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C36D0Ev,_ZTv0_n28_N9S20997C36D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20997C36D0Ev,_ZThn164_N9S20997C36D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C36D1Ev,_ZTv0_n28_N9S20997C36D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20997C36D1Ev,_ZThn164_N9S20997C36D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20997C36D0Ev,_ZTv0_n48_N9S20997C36D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20997C36D0Ev,_ZThn44_N9S20997C36D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20997C36D1Ev,_ZTv0_n48_N9S20997C36D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20997C36D1Ev,_ZThn44_N9S20997C36D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N9S20997C36D0Ev,_ZThn1076_N9S20997C36D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N9S20997C36D0Ev,_ZThn932_N9S20997C36D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20997C36D0Ev,_ZThn128_N9S20997C36D0Ev),
  (VTBL_ENTRY)_ZN9S20997C36D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N9S20997C36D1Ev,_ZThn1076_N9S20997C36D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N9S20997C36D1Ev,_ZThn932_N9S20997C36D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20997C36D1Ev,_ZThn128_N9S20997C36D1Ev),
  (VTBL_ENTRY)_ZN9S20997C36D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C36 = {  "S20997C36", // class name
  bases_S20997C36, 42,
  &(vtc_S20997C36[0]), // expected_vtbl_contents
  &(vtt_S20997C36[0]), // expected_vtt_contents
  ABISELECT(2816,1844), // object size
  NSPAIRA(_ZTI9S20997C36),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20997C36),141, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C36),84, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C33  : virtual S20997C34 , S20997C36 {
  virtual  ~S20997C33(); // _ZN9S20997C33D2Ev
  virtual void  v6(); // _ZN9S20997C332v6Ev
  S20997C33(); // tgen
};
//SIG(-1 S20997C33) C1{ VBC2{ BC3{ BC4{ VBC5{ m} VBC6{ VBC7{ m FL[5]} VBC8{ v2} BC5 vd} v3} vd} vd Fc} BC9{ VBC7 VBC10{ VBC11{ VBC12{ m FL[4]} VBC6 vd} BC13{ VBC8 BC14{ BC8 VBC7 BC5 Fp[10]} VBC15{ VBC5 BC16{ VBC8 FC14[9]} BC6 BC17{ BC6 vd}} vd} BC7 VBC17} VBC18{ VBC19{ VBC14} BC8 VBC12 VBC20{ VBC8 VBC6 VBC12 VBC4 VBC16 vd} BC21{ BC22{ BC7 BC8} BC14}} VBC23{ m FC5} BC3 vd v4} vd v1}


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

static void Test_S20997C33()
{
  extern Class_Descriptor cd_S20997C33;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(355,464)];
    init_test(&cd_S20997C33, buf);
    S20997C33 *dp, &lv = *(dp=new (buf) S20997C33());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2832,1852), "sizeof(S20997C33)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C33)");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*)(S20997C35*)(S20997C34*), 0, "S20997C33");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), 0, "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C19 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*), 0, "S20997C33");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*)(S20997C35*)(S20997C36*), 0, "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(24,12), "S20997C33");
    /*is_ambiguous_... S20997C36::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C36*), ABISELECT(24,12), "S20997C33");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C9*)(S20997C2*), ABISELECT(24,12), "S20997C33");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(24,12), "S20997C33");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(24,12), "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*), ABISELECT(24,12), "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*), ABISELECT(24,12), "S20997C33");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(24,12), "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*), ABISELECT(8,4), "S20997C33");
    /*is_ambiguous_... S20997C9::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C9*)(S20997C2*), ABISELECT(8,4), "S20997C33");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), ABISELECT(8,4), "S20997C33");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), ABISELECT(8,4), "S20997C33");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(8,4), "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*), ABISELECT(8,4), "S20997C33");
    check_base_class_offset(lv, (S20997C7*)(S20997C18*), ABISELECT(8,4), "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C12 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C12*), ABISELECT(8,4), "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*), ABISELECT(8,4), "S20997C33");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*)(S20997C35*)(S20997C34*), ABISELECT(8,4), "S20997C33");
    check_base_class_offset(lv, (S20997C5*)(S20997C3*), ABISELECT(8,4), "S20997C33");
    check_base_class_offset(lv, (S20997C5*)(S20997C18*), ABISELECT(8,4), "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C19 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C19*), ABISELECT(8,4), "S20997C33");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*)(S20997C35*)(S20997C36*), ABISELECT(8,4), "S20997C33");
    check_base_class_offset(lv, (S20997C19*)(S20997C35*)(S20997C34*), ABISELECT(8,4), "S20997C33");
    check_base_class_offset(lv, (S20997C35*)(S20997C34*), ABISELECT(8,4), "S20997C33");
    check_base_class_offset(lv, (S20997C34*), ABISELECT(8,4), "S20997C33");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C3*), ABISELECT(200,140), "S20997C33");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C16*), ABISELECT(200,140), "S20997C33");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C18*), ABISELECT(200,140), "S20997C33");
    check_base_class_offset(lv, (S20997C3*)(S20997C2*), ABISELECT(192,136), "S20997C33");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C9*)(S20997C2*), ABISELECT(64,52), "S20997C33");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C9*)(S20997C2*), ABISELECT(64,52), "S20997C33");
    check_base_class_offset(lv, (S20997C10*)(S20997C9*)(S20997C2*), ABISELECT(64,52), "S20997C33");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(232,172), "S20997C33");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(1392,932), "S20997C33");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(1392,932), "S20997C33");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1400,936), "S20997C33");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1400,936), "S20997C33");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(1400,936), "S20997C33");
    check_base_class_offset(lv, (S20997C11*)(S20997C9*)(S20997C2*), ABISELECT(232,172), "S20997C33");
    check_base_class_offset(lv, (S20997C9*)(S20997C2*), ABISELECT(64,52), "S20997C33");
    /*is_ambiguous_... S20997C2::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C2*), ABISELECT(152,96), "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C13 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*), ABISELECT(1408,940), "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C13*), ABISELECT(1408,940), "S20997C33");
    /*is_ambiguous_... S20997C2::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C13*)(S20997C2*), ABISELECT(1408,940), "S20997C33");
    check_base_class_offset(lv, (S20997C2*)(S20997C36*), ABISELECT(64,52), "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*), ABISELECT(1568,1040), "S20997C33");
    /*is_ambiguous_... S20997C33::S20997C10 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*), ABISELECT(1568,1040), "S20997C33");
    check_base_class_offset(lv, (S20997C10*)(S20997C17*), ABISELECT(1568,1040), "S20997C33");
    check_base_class_offset(lv, (S20997C17*)(S20997C16*), ABISELECT(1560,1036), "S20997C33");
    /*is_ambiguous_... S20997C16::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C16*), ABISELECT(1416,944), "S20997C33");
    check_base_class_offset(lv, (S20997C19*)(S20997C18*), ABISELECT(1656,1084), "S20997C33");
    check_base_class_offset(lv, (S20997C12*)(S20997C18*), ABISELECT(1664,1088), "S20997C33");
    check_base_class_offset(lv, (S20997C18*)(S20997C16*), ABISELECT(1656,1084), "S20997C33");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C20*)(S20997C16*), ABISELECT(1432,952), "S20997C33");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C20*)(S20997C16*), ABISELECT(1424,948), "S20997C33");
    check_base_class_offset(lv, (S20997C21*)(S20997C20*)(S20997C16*), ABISELECT(1424,948), "S20997C33");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(1472,992), "S20997C33");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(1472,992), "S20997C33");
    check_base_class_offset(lv, (S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(1472,992), "S20997C33");
    check_base_class_offset(lv, (S20997C20*)(S20997C16*), ABISELECT(1424,948), "S20997C33");
    check_base_class_offset(lv, (S20997C16*)(S20997C36*), ABISELECT(1416,944), "S20997C33");
    check_base_class_offset(lv, (S20997C37*)(S20997C36*), ABISELECT(2824,1848), "S20997C33");
    check_base_class_offset(lv, (S20997C19*)(S20997C35*)(S20997C36*), 0, "S20997C33");
    check_base_class_offset(lv, (S20997C35*)(S20997C36*), 0, "S20997C33");
    check_base_class_offset(lv, (S20997C36*), 0, "S20997C33");
    test_class_info(&lv, &cd_S20997C33);
    dp->~S20997C33();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C33(Test_S20997C33, "S20997C33", ABISELECT(2832,1852));

#else // __cplusplus

extern void _ZN9S20997C33C1Ev();
extern void _ZN9S20997C33D2Ev();
Name_Map name_map_S20997C33[] = {
  NSPAIR(_ZN9S20997C33C1Ev),
  NSPAIR(_ZN9S20997C33D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C35;
extern VTBL_ENTRY _ZTI9S20997C35[];
extern  VTBL_ENTRY _ZTV9S20997C35[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C35[];
extern Class_Descriptor cd_S20997C34;
extern VTBL_ENTRY _ZTI9S20997C34[];
extern  VTBL_ENTRY _ZTV9S20997C34[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C34[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C3;
extern VTBL_ENTRY _ZTI8S20997C3[];
extern  VTBL_ENTRY _ZTV8S20997C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C3[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
extern Class_Descriptor cd_S20997C9;
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C2;
extern VTBL_ENTRY _ZTI8S20997C2[];
extern  VTBL_ENTRY _ZTV8S20997C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C2[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C17;
extern VTBL_ENTRY _ZTI9S20997C17[];
extern  VTBL_ENTRY _ZTV9S20997C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C17[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S20997C18;
extern VTBL_ENTRY _ZTI9S20997C18[];
extern  VTBL_ENTRY _ZTV9S20997C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C18[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C20;
extern VTBL_ENTRY _ZTI9S20997C20[];
extern  VTBL_ENTRY _ZTV9S20997C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C20[];
extern Class_Descriptor cd_S20997C16;
extern VTBL_ENTRY _ZTI9S20997C16[];
extern  VTBL_ENTRY _ZTV9S20997C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C16[];
extern Class_Descriptor cd_S20997C37;
extern VTBL_ENTRY _ZTI9S20997C37[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C35;
extern VTBL_ENTRY _ZTI9S20997C35[];
extern  VTBL_ENTRY _ZTV9S20997C35[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C35[];
extern Class_Descriptor cd_S20997C36;
extern VTBL_ENTRY _ZTI9S20997C36[];
extern  VTBL_ENTRY _ZTV9S20997C36[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C36[];
static Base_Class bases_S20997C33[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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_S20997C7,    ABISELECT(8,4), //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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20997C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20997C35,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20997C34,    ABISELECT(8,4), //bcp->offset
    27, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(200,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
    9, //immediately_derived
  0, 1},
  {&cd_S20997C3,    ABISELECT(192,136), //bcp->offset
    55, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20997C12,    ABISELECT(232,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1392,932), //bcp->offset
    76, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1400,936), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1400,936), //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
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1400,936), //bcp->offset
    84, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(232,172), //bcp->offset
    66, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20997C9,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1408,940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1408,940), //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
    12, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1408,940), //bcp->offset
    92, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20997C2,    ABISELECT(64,52), //bcp->offset
    40, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(1568,1040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1568,1040), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(1568,1040), //bcp->offset
    130, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20997C17,    ABISELECT(1560,1036), //bcp->offset
    126, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(1416,944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20997C19,    ABISELECT(1656,1084), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(1664,1088), //bcp->offset
    151, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    110, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S20997C18,    ABISELECT(1656,1084), //bcp->offset
    135, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    102, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1432,952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(1424,948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(1424,948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(1472,992), //bcp->offset
    -1, //bcp->virtual_function_table_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
    39, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1472,992), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    ABISELECT(1472,992), //bcp->offset
    122, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20997C20,    ABISELECT(1424,948), //bcp->offset
    118, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20997C16,    ABISELECT(1416,944), //bcp->offset
    101, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S20997C37,    ABISELECT(2824,1848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S20997C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20997C35,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20997C36,    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
    33, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C33[];
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev)();
extern void _ZN9S20997C33D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev)();
extern void _ZN9S20997C33D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN9S20997C362v5Ev();
extern void _ZN9S20997C332v6Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn8_N9S20997C33D1Ev,_ZThn4_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn8_N9S20997C33D0Ev,_ZThn4_N9S20997C33D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S20997C33D1Ev,_ZTv0_n48_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C33D1Ev,_ZThn52_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20997C33D0Ev,_ZTv0_n48_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C33D0Ev,_ZThn52_N9S20997C33D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn192_N9S20997C33D1Ev,_ZThn136_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn192_N9S20997C33D0Ev,_ZThn136_N9S20997C33D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C33D1Ev,_ZTv0_n28_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn232_N9S20997C33D1Ev,_ZThn172_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C33D0Ev,_ZTv0_n28_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn232_N9S20997C33D0Ev,_ZThn172_N9S20997C33D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C33D1Ev,_ZTvn760_n28_N9S20997C33D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C33D0Ev,_ZTvn760_n28_N9S20997C33D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C33D1Ev,_ZTvn764_n28_N9S20997C33D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C33D0Ev,_ZTvn764_n28_N9S20997C33D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn1408_N9S20997C33D1Ev,_ZThn940_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn1408_N9S20997C33D0Ev,_ZThn940_N9S20997C33D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n112_N9S20997C33D1Ev,_ZTv0_n56_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn1416_N9S20997C33D1Ev,_ZThn944_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S20997C33D0Ev,_ZTv0_n56_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn1416_N9S20997C33D0Ev,_ZThn944_N9S20997C33D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn1656_N9S20997C33D1Ev,_ZThn1084_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn1656_N9S20997C33D0Ev,_ZThn1084_N9S20997C33D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C33[] = {
  ABISELECT(8,4),
  ABISELECT(2824,1848),
  ABISELECT(1664,1088),
  ABISELECT(1656,1084),
  ABISELECT(1656,1084),
  ABISELECT(1568,1040),
  ABISELECT(1560,1036),
  ABISELECT(1416,944),
  ABISELECT(1408,940),
  ABISELECT(232,172),
  ABISELECT(200,140),
  ABISELECT(192,136),
  ABISELECT(64,52),
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  (VTBL_ENTRY)&_ZN9S20997C362v5Ev,
  (VTBL_ENTRY)&_ZN9S20997C332v6Ev,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  ABISELECT(-64,-52),
  0,
  ABISELECT(1344,888),
  ABISELECT(-56,-48),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(-64,-52),
  ABISELECT(168,120),
  ABISELECT(-56,-48),
  -40,
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20997C33D1Ev,_ZTv0_n48_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20997C33D0Ev,_ZTv0_n48_N9S20997C33D0Ev),
  ABISELECT(-184,-132),
  ABISELECT(8,4),
  ABISELECT(-192,-136),
  ABISELECT(-184,-132),
  ABISELECT(-168,-124),
  ABISELECT(-184,-132),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev),
  ABISELECT(-232,-172),
  ABISELECT(-208,-160),
  ABISELECT(-232,-172),
  ABISELECT(-224,-168),
  ABISELECT(-224,-168),
  ABISELECT(-232,-172),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C33D1Ev,_ZTv0_n28_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C33D0Ev,_ZTv0_n28_N9S20997C33D0Ev),
  ABISELECT(-1384,-928),
  ABISELECT(-1368,-920),
  ABISELECT(-1384,-928),
  ABISELECT(-1392,-932),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C33D1Ev,_ZTvn760_n28_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C33D0Ev,_ZTvn760_n28_N9S20997C33D0Ev),
  ABISELECT(-1392,-932),
  ABISELECT(-1376,-924),
  ABISELECT(-1392,-932),
  ABISELECT(-1400,-936),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C33D1Ev,_ZTvn764_n28_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C33D0Ev,_ZTvn764_n28_N9S20997C33D0Ev),
  ABISELECT(-1408,-940),
  ABISELECT(-1400,-936),
  ABISELECT(-1384,-928),
  ABISELECT(-1400,-936),
  ABISELECT(-1408,-940),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev),
  ABISELECT(-1416,-944),
  0,
  ABISELECT(248,144),
  ABISELECT(-1416,-944),
  ABISELECT(240,140),
  ABISELECT(-1408,-940),
  ABISELECT(-1408,-940),
  ABISELECT(240,140),
  ABISELECT(-1216,-804),
  ABISELECT(-1392,-932),
  ABISELECT(152,96),
  ABISELECT(144,92),
  ABISELECT(-1416,-944),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C33D1Ev,_ZTv0_n56_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C33D0Ev,_ZTv0_n56_N9S20997C33D0Ev),
  ABISELECT(-1400,-936),
  ABISELECT(-1424,-948),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-1448,-980),
  ABISELECT(-1472,-992),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-1536,-1024),
  ABISELECT(8,4),
  ABISELECT(-1560,-1036),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  0,
  ABISELECT(-1544,-1028),
  ABISELECT(-1568,-1040),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-1456,-944),
  0,
  ABISELECT(-1648,-1080),
  ABISELECT(-1656,-1084),
  ABISELECT(-1656,-1084),
  ABISELECT(-1648,-1080),
  ABISELECT(-1632,-1072),
  ABISELECT(-1648,-1080),
  ABISELECT(-1656,-1084),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  ABISELECT(-1656,-1084),
  ABISELECT(-1656,-1084),
  ABISELECT(-1664,-1088),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C33[];
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void _ZN9S20997C36D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void _ZN9S20997C36D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN9S20997C362v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C36__9S20997C33[] = {
  ABISELECT(2824,1848),
  ABISELECT(1664,1088),
  ABISELECT(1656,1084),
  ABISELECT(1656,1084),
  ABISELECT(1568,1040),
  ABISELECT(1560,1036),
  ABISELECT(1416,944),
  ABISELECT(1408,940),
  ABISELECT(232,172),
  ABISELECT(200,140),
  ABISELECT(192,136),
  ABISELECT(64,52),
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  (VTBL_ENTRY)&_ZN9S20997C362v5Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev)();
extern void _ZN9S20997C35D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev)();
extern void _ZN9S20997C35D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C359S20997C36__A1__9S20997C33[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C199S20997C359S20997C36__A2__9S20997C33[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20997C19D1Ev,_ZThn4_N9S20997C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void ABISELECT(_ZThn8_N9S20997C19D0Ev,_ZThn4_N9S20997C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C199S20997C359S20997C36__A2__9S20997C33[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev)();
extern void ABISELECT(_ZThn8_N9S20997C35D1Ev,_ZThn4_N9S20997C35D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev)();
extern void ABISELECT(_ZThn8_N9S20997C35D0Ev,_ZThn4_N9S20997C35D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C359S20997C36__A1__9S20997C33[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S20997C36D1Ev,_ZTv0_n48_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C36D1Ev,_ZThn52_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20997C36D0Ev,_ZTv0_n48_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C36D0Ev,_ZThn52_N9S20997C36D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C2__9S20997C36__9S20997C33[] = {
  ABISELECT(-64,-52),
  0,
  ABISELECT(1344,888),
  ABISELECT(-56,-48),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(-64,-52),
  ABISELECT(168,120),
  ABISELECT(-56,-48),
  -40,
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20997C36D1Ev,_ZTv0_n48_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20997C36D0Ev,_ZTv0_n48_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn192_N9S20997C36D1Ev,_ZThn136_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn192_N9S20997C36D0Ev,_ZThn136_N9S20997C36D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__9S20997C36__9S20997C33[] = {
  ABISELECT(-184,-132),
  ABISELECT(8,4),
  ABISELECT(-192,-136),
  ABISELECT(-184,-132),
  ABISELECT(-168,-124),
  ABISELECT(-184,-132),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn8_N9S20997C36D1Ev,_ZThn4_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn8_N9S20997C36D0Ev,_ZThn4_N9S20997C36D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C36__9S20997C33[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C36D1Ev,_ZTv0_n28_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn232_N9S20997C36D1Ev,_ZThn172_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C36D0Ev,_ZTv0_n28_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn232_N9S20997C36D0Ev,_ZThn172_N9S20997C36D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C36__9S20997C33[] = {
  ABISELECT(-232,-172),
  ABISELECT(-208,-160),
  ABISELECT(-232,-172),
  ABISELECT(-224,-168),
  ABISELECT(-224,-168),
  ABISELECT(-232,-172),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C36D1Ev,_ZTv0_n28_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C36D0Ev,_ZTv0_n28_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C36D1Ev,_ZTvn760_n28_N9S20997C36D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C36D0Ev,_ZTvn760_n28_N9S20997C36D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__A1__9S20997C36__9S20997C33[] = {
  ABISELECT(-1384,-928),
  ABISELECT(-1368,-920),
  ABISELECT(-1384,-928),
  ABISELECT(-1392,-932),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C36D1Ev,_ZTvn760_n28_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C36D0Ev,_ZTvn760_n28_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C36D1Ev,_ZTvn764_n28_N9S20997C36D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C36D0Ev,_ZTvn764_n28_N9S20997C36D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C36__9S20997C33[] = {
  ABISELECT(-1392,-932),
  ABISELECT(-1376,-924),
  ABISELECT(-1392,-932),
  ABISELECT(-1400,-936),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C36D1Ev,_ZTvn764_n28_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C36D0Ev,_ZTvn764_n28_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn1408_N9S20997C36D1Ev,_ZThn940_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn1408_N9S20997C36D0Ev,_ZThn940_N9S20997C36D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C13__A1__9S20997C36__9S20997C33[] = {
  ABISELECT(-1408,-940),
  ABISELECT(-1400,-936),
  ABISELECT(-1384,-928),
  ABISELECT(-1400,-936),
  ABISELECT(-1408,-940),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n112_N9S20997C36D1Ev,_ZTv0_n56_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn1416_N9S20997C36D1Ev,_ZThn944_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S20997C36D0Ev,_ZTv0_n56_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn1416_N9S20997C36D0Ev,_ZThn944_N9S20997C36D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C16__9S20997C36__9S20997C33[] = {
  ABISELECT(-1416,-944),
  0,
  ABISELECT(248,144),
  ABISELECT(-1416,-944),
  ABISELECT(240,140),
  ABISELECT(-1408,-940),
  ABISELECT(-1408,-940),
  ABISELECT(240,140),
  ABISELECT(-1216,-804),
  ABISELECT(-1392,-932),
  ABISELECT(152,96),
  ABISELECT(144,92),
  ABISELECT(-1416,-944),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C36D1Ev,_ZTv0_n56_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C36D0Ev,_ZTv0_n56_N9S20997C36D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C36__9S20997C33[] = {
  ABISELECT(-1536,-1024),
  ABISELECT(8,4),
  ABISELECT(-1560,-1036),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__A1__9S20997C36__9S20997C33[] = {
  0,
  ABISELECT(-1544,-1028),
  ABISELECT(-1568,-1040),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn1656_N9S20997C36D1Ev,_ZThn1084_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn1656_N9S20997C36D0Ev,_ZThn1084_N9S20997C36D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C36__9S20997C33[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1456,-944),
  0,
  ABISELECT(-1648,-1080),
  ABISELECT(-1656,-1084),
  ABISELECT(-1656,-1084),
  ABISELECT(-1648,-1080),
  ABISELECT(-1632,-1072),
  ABISELECT(-1648,-1080),
  ABISELECT(-1656,-1084),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__A1__9S20997C36__9S20997C33[] = {
  ABISELECT(-1656,-1084),
  ABISELECT(-1656,-1084),
  ABISELECT(-1664,-1088),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C209S20997C16__9S20997C36__9S20997C33[] = {
  ABISELECT(-1400,-936),
  ABISELECT(-1424,-948),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C209S20997C16__A2__9S20997C36__9S20997C33[] = {
  ABISELECT(-1448,-980),
  ABISELECT(-1472,-992),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C34D1Ev,_ZTv0_n24_N9S20997C34D1Ev)();
extern void _ZN9S20997C34D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C34D0Ev,_ZTv0_n24_N9S20997C34D0Ev)();
extern void _ZN9S20997C34D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C34__9S20997C33[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C34[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C34D1Ev,_ZTv0_n24_N9S20997C34D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C34D0Ev,_ZTv0_n24_N9S20997C34D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev)();
extern void _ZN9S20997C35D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev)();
extern void _ZN9S20997C35D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C359S20997C34__9S20997C33[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C199S20997C359S20997C34__9S20997C33[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C33[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C2D1Ev();
extern void _ZN8S20997C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C2__9S20997C33[] = {
  ABISELECT(1344,888),
  ABISELECT(-56,-48),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(-64,-52),
  ABISELECT(168,120),
  ABISELECT(-56,-48),
  -40,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C2D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C98S20997C2__9S20997C33[] = {
  ABISELECT(-64,-52),
  ABISELECT(168,120),
  ABISELECT(-56,-48),
  -40,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C108S20997C98S20997C2__9S20997C33[] = {
  -40,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C98S20997C2__9S20997C33[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZThn168_N8S20997C9D1Ev,_ZThn120_N8S20997C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
extern void ABISELECT(_ZThn168_N8S20997C9D0Ev,_ZThn120_N8S20997C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C98S20997C2__9S20997C33[] = {
  ABISELECT(-168,-120),
  ABISELECT(-208,-160),
  ABISELECT(-232,-172),
  ABISELECT(-224,-168),
  ABISELECT(-224,-168),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C98S20997C2__9S20997C33[] = {
  ABISELECT(-1384,-928),
  ABISELECT(-1368,-920),
  ABISELECT(-1384,-928),
  ABISELECT(-1328,-880),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C98S20997C2__9S20997C33[] = {
  ABISELECT(-1392,-932),
  ABISELECT(-1376,-924),
  ABISELECT(-1392,-932),
  ABISELECT(-1336,-884),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20997C2D1Ev,_ZThn84_N8S20997C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20997C2D0Ev,_ZThn84_N8S20997C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__8S20997C2__9S20997C33[] = {
  ABISELECT(-184,-132),
  ABISELECT(8,4),
  ABISELECT(-128,-84),
  ABISELECT(-184,-132),
  ABISELECT(-168,-124),
  ABISELECT(-184,-132),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__8S20997C2__9S20997C33[] = {
  ABISELECT(56,48),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C2D1Ev,_ZTv0_n28_N8S20997C2D1Ev)();
extern void ABISELECT(_ZThn168_N8S20997C2D1Ev,_ZThn120_N8S20997C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C2D0Ev,_ZTv0_n28_N8S20997C2D0Ev)();
extern void ABISELECT(_ZThn168_N8S20997C2D0Ev,_ZThn120_N8S20997C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C2__9S20997C33[] = {
  ABISELECT(-168,-120),
  ABISELECT(-208,-160),
  ABISELECT(-232,-172),
  ABISELECT(-224,-168),
  ABISELECT(-224,-168),
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C2D1Ev,_ZTv0_n28_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C2D0Ev,_ZTv0_n28_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C2D1Ev,_ZTvn760_n28_N8S20997C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C2D0Ev,_ZTvn760_n28_N8S20997C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__A1__8S20997C2__9S20997C33[] = {
  ABISELECT(-1384,-928),
  ABISELECT(-1368,-920),
  ABISELECT(-1384,-928),
  ABISELECT(-1328,-880),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C2D1Ev,_ZTvn760_n28_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C2D0Ev,_ZTvn760_n28_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C2D1Ev,_ZTvn764_n28_N8S20997C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C2D0Ev,_ZTvn764_n28_N8S20997C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C2__9S20997C33[] = {
  ABISELECT(-1392,-932),
  ABISELECT(-1376,-924),
  ABISELECT(-1392,-932),
  ABISELECT(-1336,-884),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C2D1Ev,_ZTvn764_n28_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C2D0Ev,_ZTvn764_n28_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev)();
extern void ABISELECT(_ZThn1344_N8S20997C2D1Ev,_ZThn888_N8S20997C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev)();
extern void ABISELECT(_ZThn1344_N8S20997C2D0Ev,_ZThn888_N8S20997C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C13__A1__8S20997C2__9S20997C33[] = {
  ABISELECT(-1344,-888),
  ABISELECT(-1400,-936),
  ABISELECT(-1384,-928),
  ABISELECT(-1400,-936),
  ABISELECT(-1344,-888),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev)();
extern void _ZN8S20997C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev)();
extern void _ZN8S20997C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__9S20997C33[] = {
  ABISELECT(-184,-132),
  ABISELECT(8,4),
  0,
  ABISELECT(-184,-132),
  ABISELECT(-168,-124),
  ABISELECT(-184,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C3[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__8S20997C3__9S20997C33[] = {
  ABISELECT(184,132),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI8S20997C3[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C33[] = {
  ABISELECT(-208,-160),
  ABISELECT(-232,-172),
  ABISELECT(-224,-168),
  ABISELECT(-224,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__9S20997C33[] = {
  ABISELECT(-224,-168),
  ABISELECT(-224,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C129S20997C11__9S20997C33[] = {
  0,
  ABISELECT(224,168),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__A1__9S20997C33[] = {
  ABISELECT(-1384,-928),
  ABISELECT(-1368,-920),
  ABISELECT(-1384,-928),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__A1__9S20997C33[] = {
  0,
  ABISELECT(1384,928),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C33[] = {
  ABISELECT(-1392,-932),
  ABISELECT(-1376,-924),
  ABISELECT(-1392,-932),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A2__9S20997C33[] = {
  ABISELECT(-1392,-932),
  ABISELECT(-1376,-924),
  ABISELECT(-1392,-932),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A2__9S20997C33[] = {
  0,
  ABISELECT(1392,932),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C33[] = {
  0,
  ABISELECT(1392,932),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C11__9S20997C33[] = {
  0,
  ABISELECT(224,168),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__9S20997C33[] = {
  ABISELECT(-1384,-928),
  ABISELECT(-1368,-920),
  ABISELECT(-1384,-928),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__9S20997C33[] = {
  ABISELECT(-1392,-932),
  ABISELECT(-1376,-924),
  ABISELECT(-1392,-932),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C13__A1__9S20997C33[] = {
  ABISELECT(-1400,-936),
  ABISELECT(-1384,-928),
  ABISELECT(-1400,-936),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C13__A3__9S20997C33[] = {
  ABISELECT(-1400,-936),
  ABISELECT(-1384,-928),
  ABISELECT(-1400,-936),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C13__A3__9S20997C33[] = {
  0,
  ABISELECT(1400,936),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C13__A1__9S20997C33[] = {
  0,
  ABISELECT(1400,936),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C16D1Ev();
extern void _ZN9S20997C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C16__9S20997C33[] = {
  ABISELECT(248,144),
  ABISELECT(-1416,-944),
  ABISELECT(240,140),
  ABISELECT(-1408,-940),
  ABISELECT(-1408,-940),
  ABISELECT(240,140),
  ABISELECT(-1216,-804),
  ABISELECT(-1392,-932),
  ABISELECT(152,96),
  ABISELECT(144,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C209S20997C16__9S20997C33[] = {
  ABISELECT(-1400,-936),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C209S20997C16__A2__9S20997C33[] = {
  ABISELECT(-1448,-980),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C209S20997C16__9S20997C33[] = {
  ABISELECT(-1448,-980),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C16__9S20997C33[] = {
  ABISELECT(-1536,-1024),
  ABISELECT(8,4),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C16__9S20997C33[] = {
  0,
  ABISELECT(-1544,-1028),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev)();
extern void ABISELECT(_ZThn240_N9S20997C16D1Ev,_ZThn140_N9S20997C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev)();
extern void ABISELECT(_ZThn240_N9S20997C16D0Ev,_ZThn140_N9S20997C16D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C16__9S20997C33[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1456,-944),
  0,
  ABISELECT(-1648,-1080),
  ABISELECT(-1656,-1084),
  ABISELECT(-240,-140),
  ABISELECT(-1648,-1080),
  ABISELECT(-1632,-1072),
  ABISELECT(-1648,-1080),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C16__9S20997C33[] = {
  ABISELECT(1408,940),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(1408,940),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C16__9S20997C33[] = {
  ABISELECT(-1656,-1084),
  ABISELECT(-1656,-1084),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C16__9S20997C33[] = {
  ABISELECT(-1400,-936),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A1__9S20997C16__9S20997C33[] = {
  ABISELECT(-1448,-980),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C33[] = {
  ABISELECT(-1536,-1024),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C17__9S20997C33[] = {
  0,
  ABISELECT(-1544,-1028),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__A1__9S20997C33[] = {
  ABISELECT(-1544,-1028),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void _ZN9S20997C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void _ZN9S20997C18D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C33[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1456,-944),
  0,
  ABISELECT(-1648,-1080),
  ABISELECT(-1656,-1084),
  0,
  ABISELECT(-1648,-1080),
  ABISELECT(-1632,-1072),
  ABISELECT(-1648,-1080),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C18__9S20997C33[] = {
  ABISELECT(1648,1080),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(1648,1080),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C18__9S20997C33[] = {
  ABISELECT(-1656,-1084),
  ABISELECT(-1656,-1084),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__A1__9S20997C33[] = {
  ABISELECT(-1648,-1080),
  ABISELECT(-1656,-1084),
  0,
  ABISELECT(-1648,-1080),
  ABISELECT(-1632,-1072),
  ABISELECT(-1648,-1080),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C19__A1__9S20997C33[] = {
  ABISELECT(1648,1080),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(1648,1080),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__A1__9S20997C33[] = {
  ABISELECT(-1656,-1084),
  ABISELECT(-1656,-1084),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C12__A1__9S20997C33[] = {
  0,
  ABISELECT(1656,1084),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C33[] = {
  {&(_ZTV9S20997C33[21]),  21,156},
  {&(_tg__ZTV9S20997C36__9S20997C33[20]),  20,25},
  {&(_tg__ZTV9S20997C359S20997C36__A1__9S20997C33[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C359S20997C36__A2__9S20997C33[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C359S20997C36__A2__9S20997C33[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C359S20997C36__A2__9S20997C33[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C359S20997C36__A1__9S20997C33[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C359S20997C36__A1__9S20997C33[6]),  6,9},
  {&(_tg__ZTV8S20997C2__9S20997C36__9S20997C33[12]),  12,15},
  {&(_tg__ZTV8S20997C3__9S20997C36__9S20997C33[8]),  8,11},
  {&(_tg__ZTV8S20997C5__9S20997C36__9S20997C33[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C36__9S20997C33[6]),  6,9},
  {&(_tg__ZTV9S20997C11__9S20997C36__9S20997C33[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__A1__9S20997C36__9S20997C33[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C36__9S20997C33[5]),  5,8},
  {&(_tg__ZTV9S20997C13__A1__9S20997C36__9S20997C33[6]),  6,9},
  {&(_tg__ZTV9S20997C16__9S20997C36__9S20997C33[14]),  14,17},
  {&(_tg__ZTV9S20997C17__9S20997C36__9S20997C33[4]),  4,4},
  {&(_tg__ZTV9S20997C10__A1__9S20997C36__9S20997C33[4]),  4,5},
  {&(_tg__ZTV9S20997C18__9S20997C36__9S20997C33[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C36__9S20997C33[12]),  12,16},
  {&(_tg__ZTV9S20997C12__A1__9S20997C36__9S20997C33[4]),  4,5},
  {&(_tg__ZTV9S20997C209S20997C16__9S20997C36__9S20997C33[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C209S20997C16__A2__9S20997C36__9S20997C33[3]),  3,4},
  {&(_ZTV9S20997C33[36]),  36,156},
  {&(_ZTV9S20997C33[36]),  36,156},
  {&(_ZTV9S20997C33[36]),  36,156},
  {&(_ZTV9S20997C33[52]),  52,156},
  {&(_ZTV9S20997C33[63]),  63,156},
  {&(_ZTV9S20997C33[73]),  73,156},
  {&(_ZTV9S20997C33[81]),  81,156},
  {&(_ZTV9S20997C33[89]),  89,156},
  {&(_ZTV9S20997C33[98]),  98,156},
  {&(_ZTV9S20997C33[115]),  115,156},
  {&(_ZTV9S20997C33[130]),  130,156},
  {&(_ZTV9S20997C33[134]),  134,156},
  {&(_ZTV9S20997C33[147]),  147,156},
  {&(_ZTV9S20997C33[147]),  147,156},
  {&(_ZTV9S20997C33[155]),  155,156},
  {&(_ZTV9S20997C33[121]),  121,156},
  {&(_ZTV9S20997C33[125]),  125,156},
  {&(_tg__ZTV9S20997C34__9S20997C33[8]),  8,12},
  {&(_tg__ZTV9S20997C359S20997C34__9S20997C33[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C359S20997C34__9S20997C33[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C359S20997C34__9S20997C33[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C359S20997C34__9S20997C33[8]),  8,12},
  {&(_tg__ZTV9S20997C359S20997C34__9S20997C33[8]),  8,12},
  {&(_tg__ZTV9S20997C359S20997C34__9S20997C33[8]),  8,12},
  {&(_tg__ZTV9S20997C34__9S20997C33[8]),  8,12},
  {&(_tg__ZTV9S20997C34__9S20997C33[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C33[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C33[5]),  5,8},
  {&(_tg__ZTV8S20997C2__9S20997C33[10]),  10,13},
  {&(_tg__ZTV8S20997C98S20997C2__9S20997C33[6]),  6,9},
  {&(_tg__ZTV9S20997C108S20997C98S20997C2__9S20997C33[3]),  3,4},
  {&(_tg__ZTV8S20997C7__8S20997C98S20997C2__9S20997C33[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C98S20997C2__9S20997C33[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C98S20997C2__9S20997C33[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C98S20997C2__9S20997C33[5]),  5,8},
  {&(_tg__ZTV8S20997C3__8S20997C2__9S20997C33[8]),  8,11},
  {&(_tg__ZTV8S20997C5__8S20997C2__9S20997C33[6]),  6,9},
  {&(_tg__ZTV8S20997C5__8S20997C2__9S20997C33[6]),  6,9},
  {&(_tg__ZTV9S20997C11__8S20997C2__9S20997C33[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__A1__8S20997C2__9S20997C33[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C2__9S20997C33[5]),  5,8},
  {&(_tg__ZTV9S20997C13__A1__8S20997C2__9S20997C33[6]),  6,9},
  {&(_tg__ZTV8S20997C3__9S20997C33[8]),  8,11},
  {&(_tg__ZTV8S20997C5__8S20997C3__9S20997C33[6]),  6,9},
  {&(_tg__ZTV8S20997C5__8S20997C3__9S20997C33[6]),  6,9},
  {&(_tg__ZTV9S20997C11__9S20997C33[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C33[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C129S20997C11__9S20997C33[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__A1__9S20997C33[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__A1__9S20997C33[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C33[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A2__9S20997C33[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A2__9S20997C33[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C33[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C11__9S20997C33[3]),  3,4},
  {&(_tg__ZTV8S20997C5__9S20997C11__9S20997C33[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__9S20997C33[5]),  5,8},
  {&(_tg__ZTV9S20997C13__A1__9S20997C33[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C13__A3__9S20997C33[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C13__A3__9S20997C33[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C13__A1__9S20997C33[3]),  3,4},
  {&(_tg__ZTV9S20997C16__9S20997C33[12]),  12,15},
  {&(_tg__ZTV9S20997C209S20997C16__9S20997C33[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C209S20997C16__A2__9S20997C33[3]),  3,4},
  {&(_tg__ZTV9S20997C10__9S20997C209S20997C16__9S20997C33[3]),  3,4},
  {&(_tg__ZTV9S20997C17__9S20997C16__9S20997C33[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C16__9S20997C33[4]),  4,5},
  {&(_tg__ZTV9S20997C18__9S20997C16__9S20997C33[12]),  12,16},
  {&(_tg__ZTV8S20997C5__9S20997C16__9S20997C33[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C16__9S20997C33[6]),  6,9},
  {&(_tg__ZTV9S20997C18__9S20997C16__9S20997C33[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C16__9S20997C33[4]),  4,5},
  {&(_tg__ZTV9S20997C20__9S20997C16__9S20997C33[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C20__A1__9S20997C16__9S20997C33[3]),  3,4},
  {&(_tg__ZTV9S20997C17__9S20997C33[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C17__9S20997C33[4]),  4,5},
  {&(_tg__ZTV9S20997C10__A1__9S20997C33[3]),  3,4},
  {&(_tg__ZTV9S20997C18__9S20997C33[12]),  12,16},
  {&(_tg__ZTV8S20997C5__9S20997C18__9S20997C33[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C18__9S20997C33[6]),  6,9},
  {&(_tg__ZTV9S20997C18__9S20997C33[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C18__9S20997C33[4]),  4,5},
  {&(_tg__ZTV9S20997C19__A1__9S20997C33[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C19__A1__9S20997C33[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C19__A1__9S20997C33[6]),  6,9},
  {&(_tg__ZTV9S20997C12__A1__9S20997C33[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C12__A1__9S20997C33[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C33[];
extern  VTBL_ENTRY _ZTV9S20997C33[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C33[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20997C16D0Ev,_ZThn140_N9S20997C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20997C16D1Ev,_ZThn140_N9S20997C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C2D0Ev,_ZTv0_n28_N8S20997C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20997C2D0Ev,_ZThn120_N8S20997C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C2D1Ev,_ZTv0_n28_N8S20997C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20997C2D1Ev,_ZThn120_N8S20997C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N8S20997C2D0Ev,_ZThn888_N8S20997C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C2D0Ev,_ZThn84_N8S20997C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N8S20997C2D1Ev,_ZThn888_N8S20997C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20997C2D1Ev,_ZThn84_N8S20997C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20997C9D0Ev,_ZThn120_N8S20997C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20997C9D1Ev,_ZThn120_N8S20997C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C34D0Ev,_ZTv0_n24_N9S20997C34D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C34D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C34D1Ev,_ZTv0_n24_N9S20997C34D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C34D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C36D0Ev,_ZTv0_n56_N9S20997C36D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N9S20997C36D0Ev,_ZThn944_N9S20997C36D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C36D1Ev,_ZTv0_n56_N9S20997C36D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N9S20997C36D1Ev,_ZThn944_N9S20997C36D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C36D0Ev,_ZTv0_n28_N9S20997C36D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20997C36D0Ev,_ZThn172_N9S20997C36D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C36D1Ev,_ZTv0_n28_N9S20997C36D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20997C36D1Ev,_ZThn172_N9S20997C36D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20997C36D0Ev,_ZTv0_n48_N9S20997C36D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C36D0Ev,_ZThn52_N9S20997C36D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20997C36D1Ev,_ZTv0_n48_N9S20997C36D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C36D1Ev,_ZThn52_N9S20997C36D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C19D0Ev,_ZThn4_N9S20997C19D0Ev),
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C19D1Ev,_ZThn4_N9S20997C19D1Ev),
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C35D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C35D0Ev,_ZThn4_N9S20997C35D0Ev),
  (VTBL_ENTRY)_ZN9S20997C35D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C35D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C35D1Ev,_ZThn4_N9S20997C35D1Ev),
  (VTBL_ENTRY)_ZN9S20997C35D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N9S20997C36D0Ev,_ZThn1084_N9S20997C36D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S20997C36D0Ev,_ZThn940_N9S20997C36D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C36D0Ev,_ZThn4_N9S20997C36D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C36D0Ev,_ZThn136_N9S20997C36D0Ev),
  (VTBL_ENTRY)_ZN9S20997C36D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N9S20997C36D1Ev,_ZThn1084_N9S20997C36D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S20997C36D1Ev,_ZThn940_N9S20997C36D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C36D1Ev,_ZThn4_N9S20997C36D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C36D1Ev,_ZThn136_N9S20997C36D1Ev),
  (VTBL_ENTRY)_ZN9S20997C36D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C33D0Ev,_ZTv0_n56_N9S20997C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N9S20997C33D0Ev,_ZThn944_N9S20997C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C33D1Ev,_ZTv0_n56_N9S20997C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N9S20997C33D1Ev,_ZThn944_N9S20997C33D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C33D0Ev,_ZTv0_n28_N9S20997C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20997C33D0Ev,_ZThn172_N9S20997C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C33D1Ev,_ZTv0_n28_N9S20997C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20997C33D1Ev,_ZThn172_N9S20997C33D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20997C33D0Ev,_ZTv0_n48_N9S20997C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C33D0Ev,_ZThn52_N9S20997C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20997C33D1Ev,_ZTv0_n48_N9S20997C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C33D1Ev,_ZThn52_N9S20997C33D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N9S20997C33D0Ev,_ZThn1084_N9S20997C33D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S20997C33D0Ev,_ZThn940_N9S20997C33D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C33D0Ev,_ZThn136_N9S20997C33D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C33D0Ev,_ZThn4_N9S20997C33D0Ev),
  (VTBL_ENTRY)_ZN9S20997C33D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N9S20997C33D1Ev,_ZThn1084_N9S20997C33D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S20997C33D1Ev,_ZThn940_N9S20997C33D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20997C33D1Ev,_ZThn136_N9S20997C33D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C33D1Ev,_ZThn4_N9S20997C33D1Ev),
  (VTBL_ENTRY)_ZN9S20997C33D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C33 = {  "S20997C33", // class name
  bases_S20997C33, 46,
  &(vtc_S20997C33[0]), // expected_vtbl_contents
  &(vtt_S20997C33[0]), // expected_vtt_contents
  ABISELECT(2832,1852), // object size
  NSPAIRA(_ZTI9S20997C33),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20997C33),156, //virtual function table var
  21, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C33),111, //virtual table table var
  33, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C39  : S20997C6 {
};
//SIG(-1 S20997C39) C1{ BC2{ m FL[5]}}



static void Test_S20997C39()
{
  extern Class_Descriptor cd_S20997C39;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,11)];
    init_test(&cd_S20997C39, buf);
    S20997C39 &lv = *(new (buf) S20997C39());
    lvp = (void*)&lv;
    check2(sizeof(lv), 40, "sizeof(S20997C39)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C39)");
    check_base_class_offset(lv, (S20997C6*), 0, "S20997C39");
    test_class_info(&lv, &cd_S20997C39);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C39(Test_S20997C39, "S20997C39", 40);

#else // __cplusplus

extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
static Base_Class bases_S20997C39[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C39[];
Class_Descriptor cd_S20997C39 = {  "S20997C39", // class name
  bases_S20997C39, 1,
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI9S20997C39),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  S20997C38  : virtual S20997C39 {
  long double s20997c38f0;
  ~S20997C38(); // tgen
  S20997C38(); // tgen
};
//SIG(-1 S20997C38) C1{ VBC2{ BC3{ m FL[5]}} FD}


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

static void Test_S20997C38()
{
  extern Class_Descriptor cd_S20997C38;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,15)];
    init_test(&cd_S20997C38, buf);
    S20997C38 *dp, &lv = *(dp=new (buf) S20997C38());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S20997C38)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20997C38)");
    check_base_class_offset(lv, (S20997C6*)(S20997C39*), ABISELECT(32,16), "S20997C38");
    check_base_class_offset(lv, (S20997C39*), ABISELECT(32,16), "S20997C38");
    check_field_offset(lv, s20997c38f0, ABISELECT(16,4), "S20997C38.s20997c38f0");
    test_class_info(&lv, &cd_S20997C38);
    dp->~S20997C38();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C38(Test_S20997C38, "S20997C38", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN9S20997C38C1Ev();
extern void _ZN9S20997C38D1Ev();
Name_Map name_map_S20997C38[] = {
  NSPAIR(_ZN9S20997C38C1Ev),
  NSPAIR(_ZN9S20997C38D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C39;
extern VTBL_ENTRY _ZTI9S20997C39[];
static Base_Class bases_S20997C38[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20997C39,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C38[];
static  VTBL_ENTRY vtc_S20997C38[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C38[0]),
};
extern VTBL_ENTRY _ZTV9S20997C38[];
static  VTT_ENTRY vtt_S20997C38[] = {
  {&(_ZTV9S20997C38[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20997C38[];
extern  VTBL_ENTRY _ZTV9S20997C38[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C38[];
Class_Descriptor cd_S20997C38 = {  "S20997C38", // class name
  bases_S20997C38, 2,
  &(vtc_S20997C38[0]), // expected_vtbl_contents
  &(vtt_S20997C38[0]), // expected_vtt_contents
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI9S20997C38),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20997C38),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C38),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  S20997C41  : virtual S20997C12 {
  void *s20997c41f0;
  ~S20997C41(); // tgen
  S20997C41(); // tgen
};
//SIG(-1 S20997C41) C1{ VBC2{ VBC3{ v1} FC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]}[9]} Fp}


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

static void Test_S20997C41()
{
  extern Class_Descriptor cd_S20997C41;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(148,193)];
    init_test(&cd_S20997C41, buf);
    S20997C41 *dp, &lv = *(dp=new (buf) S20997C41());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1176,768), "sizeof(S20997C41)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C41)");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*), 0, "S20997C41");
    check_base_class_offset(lv, (S20997C12*), ABISELECT(16,8), "S20997C41");
    check_field_offset(lv, s20997c41f0, ABISELECT(8,4), "S20997C41.s20997c41f0");
    test_class_info(&lv, &cd_S20997C41);
    dp->~S20997C41();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C41(Test_S20997C41, "S20997C41", ABISELECT(1176,768));

#else // __cplusplus

extern void _ZN9S20997C41C1Ev();
extern void _ZN9S20997C41D1Ev();
Name_Map name_map_S20997C41[] = {
  NSPAIR(_ZN9S20997C41C1Ev),
  NSPAIR(_ZN9S20997C41D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
static Base_Class bases_S20997C41[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C41[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C41[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C41[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20997C41[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C41[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C41[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C12__9S20997C41[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C41[] = {
  {&(_ZTV9S20997C41[5]),  5,11},
  {&(_ZTV9S20997C41[10]),  10,11},
  {&(_ZTV9S20997C41[5]),  5,11},
  {&(_tg__ZTV9S20997C12__9S20997C41[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C12__9S20997C41[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C41[];
extern  VTBL_ENTRY _ZTV9S20997C41[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C41[];
Class_Descriptor cd_S20997C41 = {  "S20997C41", // class name
  bases_S20997C41, 2,
  &(vtc_S20997C41[0]), // expected_vtbl_contents
  &(vtt_S20997C41[0]), // expected_vtt_contents
  ABISELECT(1176,768), // object size
  NSPAIRA(_ZTI9S20997C41),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20997C41),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C41),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  S20997C43  : virtual S20997C6 , S20997C19 , virtual S20997C21 {
  ~S20997C43(); // tgen
  S20997C43(); // tgen
};
//SIG(-1 S20997C43) C1{ VBC2{ m FL[5]} BC3{ VBC4{ m} VBC5{ VBC2 VBC6{ v1} BC4 vd} v2} VBC7{ BC2 BC6}}


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

static void Test_S20997C43()
{
  extern Class_Descriptor cd_S20997C43;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,23)];
    init_test(&cd_S20997C43, buf);
    S20997C43 *dp, &lv = *(dp=new (buf) S20997C43());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,88), "sizeof(S20997C43)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C43)");
    /*is_ambiguous_... S20997C43::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20997C43");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(8,4), "S20997C43");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*), ABISELECT(48,44), "S20997C43");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*), 0, "S20997C43");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*), 0, "S20997C43");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*), 0, "S20997C43");
    check_base_class_offset(lv, (S20997C19*), 0, "S20997C43");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*), ABISELECT(56,48), "S20997C43");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*), ABISELECT(48,44), "S20997C43");
    check_base_class_offset(lv, (S20997C21*), ABISELECT(48,44), "S20997C43");
    test_class_info(&lv, &cd_S20997C43);
    dp->~S20997C43();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C43(Test_S20997C43, "S20997C43", ABISELECT(96,88));

#else // __cplusplus

extern void _ZN9S20997C43C1Ev();
extern void _ZN9S20997C43D1Ev();
Name_Map name_map_S20997C43[] = {
  NSPAIR(_ZN9S20997C43C1Ev),
  NSPAIR(_ZN9S20997C43D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
static Base_Class bases_S20997C43[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C7,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20997C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C19,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(48,44), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(48,44), //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C43[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C43D1Ev();
extern void _ZN9S20997C43D0Ev();
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C43[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C43[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C43D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C43D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C43[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C43[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C19D1Ev();
extern void _ZN9S20997C19D0Ev();
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__9S20997C43[] = {
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C43[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
static  VTT_ENTRY vtt_S20997C43[] = {
  {&(_ZTV9S20997C43[9]),  9,17},
  {&(_tg__ZTV9S20997C19__9S20997C43[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C43[8]),  8,12},
  {&(_tg__ZTV9S20997C19__9S20997C43[8]),  8,12},
  {&(_ZTV9S20997C43[9]),  9,17},
  {&(_ZTV9S20997C43[9]),  9,17},
  {&(_ZTV9S20997C43[16]),  16,17},
  {&(_tg__ZTV8S20997C5__9S20997C43[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C43[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20997C43[];
extern  VTBL_ENTRY _ZTV9S20997C43[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C43[];
Class_Descriptor cd_S20997C43 = {  "S20997C43", // class name
  bases_S20997C43, 9,
  &(vtc_S20997C43[0]), // expected_vtbl_contents
  &(vtt_S20997C43[0]), // expected_vtt_contents
  ABISELECT(96,88), // object size
  NSPAIRA(_ZTI9S20997C43),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20997C43),17, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C43),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C42  : virtual S20997C43 , S20997C18 {
  virtual void  v7(); // _ZN9S20997C422v7Ev
  ~S20997C42(); // tgen
  S20997C42(); // tgen
};
//SIG(-1 S20997C42) C1{ VBC2{ VBC3{ m FL[5]} BC4{ VBC5{ m} VBC6{ VBC3 VBC7{ v2} BC5 vd} v3} VBC8{ BC3 BC7}} BC9{ VBC7 VBC6 VBC10{ m FL[4]} VBC4 VBC11{ VBC7 FC12{ BC7 VBC3 BC5 Fp[10]}[9]} vd} v1}


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

static void Test_S20997C42()
{
  extern Class_Descriptor cd_S20997C42;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(163,222)];
    init_test(&cd_S20997C42, buf);
    S20997C42 *dp, &lv = *(dp=new (buf) S20997C42());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1296,884), "sizeof(S20997C42)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C42)");
    /*is_ambiguous_... S20997C43::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C43*), ABISELECT(16,8), "S20997C42");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(16,8), "S20997C42");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*)(S20997C43*), 0, "S20997C42");
    /*is_ambiguous_... S20997C42::S20997C19 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*), 0, "S20997C42");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*), ABISELECT(8,4), "S20997C42");
    check_base_class_offset(lv, (S20997C7*)(S20997C18*), ABISELECT(8,4), "S20997C42");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*), ABISELECT(8,4), "S20997C42");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*), ABISELECT(8,4), "S20997C42");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*)(S20997C43*), ABISELECT(8,4), "S20997C42");
    check_base_class_offset(lv, (S20997C5*)(S20997C18*), ABISELECT(8,4), "S20997C42");
    /*is_ambiguous_... S20997C42::S20997C19 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C19*), ABISELECT(8,4), "S20997C42");
    check_base_class_offset(lv, (S20997C19*)(S20997C43*), ABISELECT(8,4), "S20997C42");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*), ABISELECT(64,52), "S20997C42");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*), ABISELECT(56,48), "S20997C42");
    check_base_class_offset(lv, (S20997C21*)(S20997C43*), ABISELECT(56,48), "S20997C42");
    check_base_class_offset(lv, (S20997C43*), ABISELECT(8,4), "S20997C42");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C18*), ABISELECT(104,92), "S20997C42");
    check_base_class_offset(lv, (S20997C19*)(S20997C18*), 0, "S20997C42");
    check_base_class_offset(lv, (S20997C12*)(S20997C18*), ABISELECT(136,124), "S20997C42");
    check_base_class_offset(lv, (S20997C18*), 0, "S20997C42");
    test_class_info(&lv, &cd_S20997C42);
    dp->~S20997C42();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C42(Test_S20997C42, "S20997C42", ABISELECT(1296,884));

#else // __cplusplus

extern void _ZN9S20997C42C1Ev();
extern void _ZN9S20997C42D1Ev();
Name_Map name_map_S20997C42[] = {
  NSPAIR(_ZN9S20997C42C1Ev),
  NSPAIR(_ZN9S20997C42D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C43;
extern VTBL_ENTRY _ZTI9S20997C43[];
extern  VTBL_ENTRY _ZTV9S20997C43[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C43[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S20997C18;
extern VTBL_ENTRY _ZTI9S20997C18[];
extern  VTBL_ENTRY _ZTV9S20997C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C18[];
static Base_Class bases_S20997C42[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20997C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C19,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //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_S20997C6,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(56,48), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(56,48), //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
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20997C43,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(104,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20997C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(136,124), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20997C18,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C42[];
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev)();
extern void _ZN9S20997C42D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev)();
extern void _ZN9S20997C42D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN9S20997C422v7Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev)();
extern void ABISELECT(_ZThn8_N9S20997C42D1Ev,_ZThn4_N9S20997C42D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev)();
extern void ABISELECT(_ZThn8_N9S20997C42D0Ev,_ZThn4_N9S20997C42D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C42[] = {
  ABISELECT(56,48),
  ABISELECT(8,4),
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  (VTBL_ENTRY)&_ZN9S20997C422v7Ev,
  0,
  ABISELECT(48,44),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C42[];
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void _ZN9S20997C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void _ZN9S20997C18D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C42[] = {
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void ABISELECT(_ZThn8_N9S20997C18D1Ev,_ZThn4_N9S20997C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void ABISELECT(_ZThn8_N9S20997C18D0Ev,_ZThn4_N9S20997C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C18__9S20997C42[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C18__9S20997C42[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev)();
extern void _ZN9S20997C43D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev)();
extern void _ZN9S20997C43D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C43__9S20997C42[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C43[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C199S20997C43__9S20997C42[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C79S20997C21__A1__9S20997C43__9S20997C42[] = {
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C43[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C42[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__A1__9S20997C42[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20997C19D1Ev,_ZThn4_N9S20997C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void ABISELECT(_ZThn8_N9S20997C19D0Ev,_ZThn4_N9S20997C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C19__A1__9S20997C42[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C42[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C12__9S20997C42[] = {
  0,
  ABISELECT(128,120),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C42[] = {
  {&(_ZTV9S20997C42[14]),  14,42},
  {&(_tg__ZTV9S20997C18__9S20997C42[12]),  12,16},
  {&(_tg__ZTV8S20997C5__9S20997C18__9S20997C42[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C18__9S20997C42[6]),  6,9},
  {&(_tg__ZTV9S20997C18__9S20997C42[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C18__9S20997C42[4]),  4,5},
  {&(_ZTV9S20997C42[29]),  29,42},
  {&(_ZTV9S20997C42[29]),  29,42},
  {&(_ZTV9S20997C42[29]),  29,42},
  {&(_ZTV9S20997C42[36]),  36,42},
  {&(_ZTV9S20997C42[14]),  14,42},
  {&(_ZTV9S20997C42[41]),  41,42},
  {&(_tg__ZTV9S20997C43__9S20997C42[9]),  9,13},
  {&(_tg__ZTV9S20997C199S20997C43__9S20997C42[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C43__9S20997C42[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C43__9S20997C42[8]),  8,12},
  {&(_tg__ZTV9S20997C43__9S20997C42[9]),  9,13},
  {&(_tg__ZTV9S20997C43__9S20997C42[9]),  9,13},
  {&(_tg__ZTV8S20997C79S20997C21__A1__9S20997C43__9S20997C42[3]),  3,4},
  {&(_tg__ZTV8S20997C5__9S20997C42[5]),  5,8},
  {&(_tg__ZTV8S20997C5__9S20997C42[5]),  5,8},
  {&(_tg__ZTV9S20997C19__A1__9S20997C42[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C19__A1__9S20997C42[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C19__A1__9S20997C42[6]),  6,9},
  {&(_tg__ZTV9S20997C12__9S20997C42[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C12__9S20997C42[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C42[];
extern  VTBL_ENTRY _ZTV9S20997C42[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C42[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C19D0Ev,_ZThn4_N9S20997C19D0Ev),
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C19D1Ev,_ZThn4_N9S20997C19D1Ev),
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C43D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C43D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C18D0Ev,_ZThn4_N9S20997C18D0Ev),
  (VTBL_ENTRY)_ZN9S20997C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C18D1Ev,_ZThn4_N9S20997C18D1Ev),
  (VTBL_ENTRY)_ZN9S20997C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C42D0Ev,_ZThn4_N9S20997C42D0Ev),
  (VTBL_ENTRY)_ZN9S20997C42D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C42D1Ev,_ZThn4_N9S20997C42D1Ev),
  (VTBL_ENTRY)_ZN9S20997C42D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C42 = {  "S20997C42", // class name
  bases_S20997C42, 14,
  &(vtc_S20997C42[0]), // expected_vtbl_contents
  &(vtt_S20997C42[0]), // expected_vtt_contents
  ABISELECT(1296,884), // object size
  NSPAIRA(_ZTI9S20997C42),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20997C42),42, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C42),26, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C40  : virtual S20997C11 , virtual S20997C35 , S20997C41 , S20997C42 {
  virtual  ~S20997C40(); // _ZN9S20997C40D2Ev
  virtual void  v8(); // _ZN9S20997C402v8Ev
  S20997C40(); // tgen
};
//SIG(-1 S20997C40) C1{ VBC2{ VBC3{ m} BC4{ VBC5{ v2} FC6{ BC5 VBC7{ m FL[5]} BC3 Fp[10]}[9]} BC8{ VBC7 VBC5 BC3 vd} BC9{ BC8 vd}} VBC10{ BC11{ VBC3 VBC8 v3} vd} BC12{ VBC4 Fp} BC13{ VBC14{ VBC7 BC11 VBC15{ BC7 BC5}} BC16{ VBC5 VBC8 VBC17{ m FL[4]} VBC11 VBC4 vd} v4} vd v1}


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

static void Test_S20997C40()
{
  extern Class_Descriptor cd_S20997C40;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(313,417)];
    init_test(&cd_S20997C40, buf);
    S20997C40 *dp, &lv = *(dp=new (buf) S20997C40());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2496,1664), "sizeof(S20997C40)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20997C40)");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), 0, "S20997C40");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*)(S20997C35*), 0, "S20997C40");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*)(S20997C43*), 0, "S20997C40");
    /*is_ambiguous_... S20997C40::S20997C19 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*), 0, "S20997C40");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), ABISELECT(24,12), "S20997C40");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), ABISELECT(24,12), "S20997C40");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(24,12), "S20997C40");
    /*is_ambiguous_... S20997C40::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*), ABISELECT(24,12), "S20997C40");
    /*is_ambiguous_... S20997C40::S20997C12 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C12*), ABISELECT(24,12), "S20997C40");
    check_base_class_offset(lv, (S20997C7*)(S20997C18*)(S20997C42*), ABISELECT(24,12), "S20997C40");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(24,12), "S20997C40");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(1200,780), "S20997C40");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1200,780), "S20997C40");
    /*is_ambiguous_... S20997C40::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(1200,780), "S20997C40");
    /*is_ambiguous_... S20997C43::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C43*), ABISELECT(1200,780), "S20997C40");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(1184,772), "S20997C40");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(1184,772), "S20997C40");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1192,776), "S20997C40");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1192,776), "S20997C40");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(1192,776), "S20997C40");
    check_base_class_offset(lv, (S20997C11*), ABISELECT(24,12), "S20997C40");
    /*is_ambiguous_... S20997C40::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*), ABISELECT(1240,820), "S20997C40");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*)(S20997C35*), ABISELECT(1240,820), "S20997C40");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*)(S20997C43*), ABISELECT(1240,820), "S20997C40");
    check_base_class_offset(lv, (S20997C5*)(S20997C18*)(S20997C42*), ABISELECT(1240,820), "S20997C40");
    /*is_ambiguous_... S20997C40::S20997C19 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C19*), ABISELECT(1240,820), "S20997C40");
    check_base_class_offset(lv, (S20997C19*)(S20997C35*), ABISELECT(1240,820), "S20997C40");
    check_base_class_offset(lv, (S20997C35*), ABISELECT(1240,820), "S20997C40");
    check_base_class_offset(lv, (S20997C12*)(S20997C41*), ABISELECT(1248,824), "S20997C40");
    check_base_class_offset(lv, (S20997C12*)(S20997C18*)(S20997C42*), ABISELECT(1248,824), "S20997C40");
    check_base_class_offset(lv, (S20997C41*), 0, "S20997C40");
    check_base_class_offset(lv, (S20997C19*)(S20997C43*), ABISELECT(2408,1584), "S20997C40");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*), ABISELECT(2424,1592), "S20997C40");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*), ABISELECT(2416,1588), "S20997C40");
    check_base_class_offset(lv, (S20997C21*)(S20997C43*), ABISELECT(2416,1588), "S20997C40");
    check_base_class_offset(lv, (S20997C43*)(S20997C42*), ABISELECT(2408,1584), "S20997C40");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C18*)(S20997C42*), ABISELECT(2464,1632), "S20997C40");
    check_base_class_offset(lv, (S20997C19*)(S20997C18*)(S20997C42*), ABISELECT(16,8), "S20997C40");
    check_base_class_offset(lv, (S20997C18*)(S20997C42*), ABISELECT(16,8), "S20997C40");
    check_base_class_offset(lv, (S20997C42*), ABISELECT(16,8), "S20997C40");
    test_class_info(&lv, &cd_S20997C40);
    dp->~S20997C40();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C40(Test_S20997C40, "S20997C40", ABISELECT(2496,1664));

#else // __cplusplus

extern void _ZN9S20997C40C1Ev();
extern void _ZN9S20997C40D2Ev();
Name_Map name_map_S20997C40[] = {
  NSPAIR(_ZN9S20997C40C1Ev),
  NSPAIR(_ZN9S20997C40D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C35;
extern VTBL_ENTRY _ZTI9S20997C35[];
extern  VTBL_ENTRY _ZTV9S20997C35[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C35[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S20997C41;
extern VTBL_ENTRY _ZTI9S20997C41[];
extern  VTBL_ENTRY _ZTV9S20997C41[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C41[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C43;
extern VTBL_ENTRY _ZTI9S20997C43[];
extern  VTBL_ENTRY _ZTV9S20997C43[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C43[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C18;
extern VTBL_ENTRY _ZTI9S20997C18[];
extern  VTBL_ENTRY _ZTV9S20997C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C18[];
extern Class_Descriptor cd_S20997C42;
extern VTBL_ENTRY _ZTI9S20997C42[];
extern  VTBL_ENTRY _ZTV9S20997C42[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C42[];
static Base_Class bases_S20997C40[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(1200,780), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1184,772), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(1184,772), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1192,776), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20997C5,    ABISELECT(1192,776), //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
    8, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1192,776), //bcp->offset
    55, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(24,12), //bcp->offset
    37, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(1240,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1240,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20997C19,    ABISELECT(1240,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //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_S20997C35,    ABISELECT(1240,820), //bcp->offset
    63, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C12,    ABISELECT(1248,824), //bcp->offset
    76, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20997C41,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C19,    ABISELECT(2408,1584), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(2424,1592), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    ABISELECT(2416,1588), //bcp->offset
    95, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(2416,1588), //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
    12, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20997C43,    ABISELECT(2408,1584), //bcp->offset
    81, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S10258C6_nt,    ABISELECT(2464,1632), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C19,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20997C18,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20997C42,    ABISELECT(16,8), //bcp->offset
    18, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20997C40[];
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C40D1Ev();
extern void _ZN9S20997C40D0Ev();
extern void _ZN9S20997C402v8Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev)();
extern void ABISELECT(_ZThn16_N9S20997C40D1Ev,_ZThn8_N9S20997C40D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev)();
extern void ABISELECT(_ZThn16_N9S20997C40D0Ev,_ZThn8_N9S20997C40D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN9S20997C422v7Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C40D1Ev,_ZTv0_n28_N9S20997C40D1Ev)();
extern void ABISELECT(_ZThn24_N9S20997C40D1Ev,_ZThn12_N9S20997C40D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C40D0Ev,_ZTv0_n28_N9S20997C40D0Ev)();
extern void ABISELECT(_ZThn24_N9S20997C40D0Ev,_ZThn12_N9S20997C40D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C40D1Ev,_ZTvn760_n28_N9S20997C40D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C40D0Ev,_ZTvn760_n28_N9S20997C40D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C40D1Ev,_ZTvn764_n28_N9S20997C40D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C40D0Ev,_ZTvn764_n28_N9S20997C40D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev)();
extern void ABISELECT(_ZThn1240_N9S20997C40D1Ev,_ZThn820_N9S20997C40D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev)();
extern void ABISELECT(_ZThn1240_N9S20997C40D0Ev,_ZThn820_N9S20997C40D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev)();
extern void ABISELECT(_ZThn2408_N9S20997C40D1Ev,_ZThn1584_N9S20997C40D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev)();
extern void ABISELECT(_ZThn2408_N9S20997C40D0Ev,_ZThn1584_N9S20997C40D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C40[] = {
  ABISELECT(16,8),
  ABISELECT(2464,1632),
  ABISELECT(2416,1588),
  ABISELECT(2408,1584),
  ABISELECT(1240,820),
  ABISELECT(1240,820),
  ABISELECT(1200,780),
  0,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(1248,824),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C40D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C40D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C402v8Ev,
  ABISELECT(2400,1580),
  ABISELECT(2392,1576),
  ABISELECT(1232,816),
  0,
  ABISELECT(2448,1624),
  0,
  ABISELECT(1224,812),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(8,4),
  ABISELECT(1184,772),
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  (VTBL_ENTRY)&_ZN9S20997C422v7Ev,
  ABISELECT(-24,-12),
  ABISELECT(1176,768),
  ABISELECT(-24,-12),
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C40D1Ev,_ZTv0_n28_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C40D0Ev,_ZTv0_n28_N9S20997C40D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C40D1Ev,_ZTvn760_n28_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C40D0Ev,_ZTvn760_n28_N9S20997C40D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C40D1Ev,_ZTvn764_n28_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C40D0Ev,_ZTvn764_n28_N9S20997C40D0Ev),
  0,
  0,
  ABISELECT(-1240,-820),
  ABISELECT(-1240,-820),
  ABISELECT(-1216,-808),
  -40,
  ABISELECT(-1216,-808),
  ABISELECT(-1240,-820),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  ABISELECT(-1224,-812),
  ABISELECT(-1224,-812),
  ABISELECT(-1248,-824),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-2408,-1584),
  ABISELECT(-2408,-1584),
  ABISELECT(-2384,-1572),
  ABISELECT(-1208,-804),
  ABISELECT(-2384,-1572),
  ABISELECT(-2408,-1584),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  0,
  ABISELECT(-2416,-1588),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S20997C40[];
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C41__9S20997C40[] = {
  ABISELECT(24,12),
  ABISELECT(1248,824),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C41[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C41__9S20997C40[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1224,-812),
  ABISELECT(-1248,-824),
  (VTBL_ENTRY)&(_ZTI9S20997C41[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C41__9S20997C40[] = {
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20997C41[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev)();
extern void _ZN9S20997C42D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev)();
extern void _ZN9S20997C42D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN9S20997C422v7Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C42__9S20997C40[] = {
  ABISELECT(2400,1580),
  ABISELECT(2392,1576),
  ABISELECT(1232,816),
  0,
  ABISELECT(2448,1624),
  0,
  ABISELECT(1224,812),
  ABISELECT(-16,-8),
  0,
  ABISELECT(8,4),
  ABISELECT(1184,772),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  (VTBL_ENTRY)&_ZN9S20997C422v7Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void _ZN9S20997C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void _ZN9S20997C18D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C189S20997C42__9S20997C40[] = {
  ABISELECT(1232,816),
  0,
  ABISELECT(2448,1624),
  0,
  ABISELECT(1224,812),
  ABISELECT(-16,-8),
  0,
  ABISELECT(8,4),
  ABISELECT(1184,772),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C189S20997C42__9S20997C40[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void ABISELECT(_ZThn1224_N9S20997C18D1Ev,_ZThn812_N9S20997C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void ABISELECT(_ZThn1224_N9S20997C18D0Ev,_ZThn812_N9S20997C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C189S20997C42__9S20997C40[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1216,-808),
  -40,
  ABISELECT(-1216,-808),
  ABISELECT(-1224,-812),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C189S20997C42__9S20997C40[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1224,-812),
  ABISELECT(-1232,-816),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev)();
extern void ABISELECT(_ZThn2392_N9S20997C42D1Ev,_ZThn1576_N9S20997C42D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev)();
extern void ABISELECT(_ZThn2392_N9S20997C42D0Ev,_ZThn1576_N9S20997C42D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C43__9S20997C42__9S20997C40[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-2408,-1584),
  ABISELECT(-2392,-1576),
  ABISELECT(-2384,-1572),
  ABISELECT(-1208,-804),
  ABISELECT(-2384,-1572),
  ABISELECT(-2392,-1576),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev)();
extern void ABISELECT(_ZThn1224_N9S20997C42D1Ev,_ZThn812_N9S20997C42D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev)();
extern void ABISELECT(_ZThn1224_N9S20997C42D0Ev,_ZThn812_N9S20997C42D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C42__9S20997C40[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1216,-808),
  -40,
  ABISELECT(-1216,-808),
  ABISELECT(-1224,-812),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C42__9S20997C40[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C79S20997C21__A1__9S20997C42__9S20997C40[] = {
  0,
  ABISELECT(-2400,-1580),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C42__9S20997C40[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1224,-812),
  ABISELECT(-1232,-816),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C40[] = {
  ABISELECT(1176,768),
  ABISELECT(-24,-12),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__9S20997C40[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C40[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C40[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C40[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C40[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C40[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C40[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__9S20997C40[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__9S20997C40[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev)();
extern void _ZN9S20997C35D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev)();
extern void _ZN9S20997C35D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C35__9S20997C40[] = {
  0,
  ABISELECT(-1240,-820),
  0,
  ABISELECT(-1216,-808),
  -40,
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C199S20997C35__9S20997C40[] = {
  0,
  ABISELECT(-1240,-820),
  0,
  ABISELECT(-1216,-808),
  -40,
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C199S20997C35__9S20997C40[] = {
  0,
  ABISELECT(1216,808),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C35__9S20997C40[] = {
  0,
  ABISELECT(1216,808),
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__A2__9S20997C40[] = {
  ABISELECT(-1216,-808),
  -40,
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C5__A2__9S20997C40[] = {
  0,
  ABISELECT(1216,808),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__A1__9S20997C40[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C12__A1__9S20997C40[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev)();
extern void _ZN9S20997C43D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev)();
extern void _ZN9S20997C43D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C43__9S20997C40[] = {
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-2408,-1584),
  0,
  ABISELECT(-2384,-1572),
  ABISELECT(-1208,-804),
  ABISELECT(-2384,-1572),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C43[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C199S20997C43__A1__9S20997C40[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-2408,-1584),
  0,
  ABISELECT(-2384,-1572),
  ABISELECT(-1208,-804),
  ABISELECT(-2384,-1572),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C199S20997C43__A1__9S20997C40[] = {
  ABISELECT(1168,764),
  ABISELECT(-1216,-808),
  -40,
  ABISELECT(-1216,-808),
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C199S20997C43__A1__9S20997C40[] = {
  0,
  ABISELECT(2384,1572),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C43__9S20997C40[] = {
  ABISELECT(1168,764),
  ABISELECT(-1216,-808),
  -40,
  ABISELECT(-1216,-808),
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20997C43[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C43__9S20997C40[] = {
  0,
  ABISELECT(2384,1572),
  (VTBL_ENTRY)&(_ZTI9S20997C43[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C79S20997C21__A1__9S20997C43__9S20997C40[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C43[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__A2__9S20997C40[] = {
  ABISELECT(1224,812),
  ABISELECT(-16,-8),
  0,
  ABISELECT(8,4),
  ABISELECT(1184,772),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZThn1224_N9S20997C19D1Ev,_ZThn812_N9S20997C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void ABISELECT(_ZThn1224_N9S20997C19D0Ev,_ZThn812_N9S20997C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C19__A2__9S20997C40[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1216,-808),
  -40,
  ABISELECT(-1216,-808),
  ABISELECT(-1224,-812),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C19__A2__9S20997C40[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C40[] = {
  {&(_ZTV9S20997C40[14]),  14,99},
  {&(_tg__ZTV9S20997C41__9S20997C40[5]),  5,6},
  {&(_tg__ZTV9S20997C12__9S20997C41__9S20997C40[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C41__9S20997C40[3]),  3,4},
  {&(_tg__ZTV9S20997C42__9S20997C40[14]),  14,19},
  {&(_tg__ZTV9S20997C189S20997C42__9S20997C40[12]),  12,16},
  {&(_tg__ZTV8S20997C7__9S20997C189S20997C42__9S20997C40[3]),  3,4},
  {&(_tg__ZTV8S20997C5__9S20997C189S20997C42__9S20997C40[6]),  6,9},
  {&(_tg__ZTV9S20997C189S20997C42__9S20997C40[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C189S20997C42__9S20997C40[4]),  4,5},
  {&(_tg__ZTV9S20997C43__9S20997C42__9S20997C40[10]),  10,14},
  {&(_tg__ZTV8S20997C5__9S20997C42__9S20997C40[6]),  6,9},
  {&(_tg__ZTV8S20997C7__9S20997C42__9S20997C40[3]),  3,4},
  {&(_tg__ZTV8S20997C79S20997C21__A1__9S20997C42__9S20997C40[3]),  3,4},
  {&(_tg__ZTV9S20997C42__9S20997C40[14]),  14,19},
  {&(_tg__ZTV9S20997C12__9S20997C42__9S20997C40[4]),  4,5},
  {&(_ZTV9S20997C40[44]),  44,99},
  {&(_ZTV9S20997C40[44]),  44,99},
  {&(_ZTV9S20997C40[52]),  52,99},
  {&(_ZTV9S20997C40[60]),  60,99},
  {&(_ZTV9S20997C40[72]),  72,99},
  {&(_ZTV9S20997C40[72]),  72,99},
  {&(_ZTV9S20997C40[80]),  80,99},
  {&(_ZTV9S20997C40[32]),  32,99},
  {&(_ZTV9S20997C40[91]),  91,99},
  {&(_ZTV9S20997C40[98]),  98,99},
  {&(_ZTV9S20997C40[32]),  32,99},
  {&(_tg__ZTV9S20997C11__9S20997C40[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C40[4]),  4,5},
  {&(_tg__ZTV9S20997C129S20997C11__9S20997C40[4]),  4,5},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C40[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__9S20997C40[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C40[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A1__9S20997C40[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A1__9S20997C40[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__9S20997C40[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C40[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C11__9S20997C40[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__9S20997C40[5]),  5,8},
  {&(_tg__ZTV9S20997C35__9S20997C40[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C35__9S20997C40[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C35__9S20997C40[8]),  8,12},
  {&(_tg__ZTV8S20997C7__9S20997C199S20997C35__9S20997C40[3]),  3,4},
  {&(_tg__ZTV9S20997C35__9S20997C40[8]),  8,12},
  {&(_tg__ZTV8S20997C7__9S20997C35__9S20997C40[3]),  3,4},
  {&(_tg__ZTV8S20997C5__A2__9S20997C40[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C5__A2__9S20997C40[3]),  3,4},
  {&(_tg__ZTV9S20997C12__A1__9S20997C40[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C12__A1__9S20997C40[3]),  3,4},
  {&(_tg__ZTV9S20997C43__9S20997C40[9]),  9,13},
  {&(_tg__ZTV9S20997C199S20997C43__A1__9S20997C40[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C43__A1__9S20997C40[6]),  6,9},
  {&(_tg__ZTV8S20997C7__9S20997C199S20997C43__A1__9S20997C40[3]),  3,4},
  {&(_tg__ZTV8S20997C5__9S20997C43__9S20997C40[6]),  6,9},
  {&(_tg__ZTV8S20997C7__9S20997C43__9S20997C40[3]),  3,4},
  {&(_tg__ZTV8S20997C79S20997C21__A1__9S20997C43__9S20997C40[3]),  3,4},
  {&(_tg__ZTV9S20997C19__A2__9S20997C40[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C19__A2__9S20997C40[6]),  6,9},
  {&(_tg__ZTV8S20997C7__9S20997C19__A2__9S20997C40[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20997C40[];
extern  VTBL_ENTRY _ZTV9S20997C40[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C40[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C43D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C43D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1224_N9S20997C19D0Ev,_ZThn812_N9S20997C19D0Ev),
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1224_N9S20997C19D1Ev,_ZThn812_N9S20997C19D1Ev),
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C35D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C35D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1224_N9S20997C18D0Ev,_ZThn812_N9S20997C18D0Ev),
  (VTBL_ENTRY)_ZN9S20997C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1224_N9S20997C18D1Ev,_ZThn812_N9S20997C18D1Ev),
  (VTBL_ENTRY)_ZN9S20997C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1224_N9S20997C42D0Ev,_ZThn812_N9S20997C42D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2392_N9S20997C42D0Ev,_ZThn1576_N9S20997C42D0Ev),
  (VTBL_ENTRY)_ZN9S20997C42D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1224_N9S20997C42D1Ev,_ZThn812_N9S20997C42D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2392_N9S20997C42D1Ev,_ZThn1576_N9S20997C42D1Ev),
  (VTBL_ENTRY)_ZN9S20997C42D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C40D0Ev,_ZTv0_n28_N9S20997C40D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20997C40D0Ev,_ZThn12_N9S20997C40D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C40D1Ev,_ZTv0_n28_N9S20997C40D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20997C40D1Ev,_ZThn12_N9S20997C40D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2408_N9S20997C40D0Ev,_ZThn1584_N9S20997C40D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1240_N9S20997C40D0Ev,_ZThn820_N9S20997C40D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20997C40D0Ev,_ZThn8_N9S20997C40D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2408_N9S20997C40D1Ev,_ZThn1584_N9S20997C40D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1240_N9S20997C40D1Ev,_ZThn820_N9S20997C40D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20997C40D1Ev,_ZThn8_N9S20997C40D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C40 = {  "S20997C40", // class name
  bases_S20997C40, 25,
  &(vtc_S20997C40[0]), // expected_vtbl_contents
  &(vtt_S20997C40[0]), // expected_vtt_contents
  ABISELECT(2496,1664), // object size
  NSPAIRA(_ZTI9S20997C40),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20997C40),99, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20997C40),59, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20997C1  : virtual S20997C2 , virtual S20997C14 , S20997C33 , virtual S20997C38 , S20997C40 {
  virtual  ~S20997C1(); // _ZN8S20997C1D2Ev
  virtual void  v1(); // _ZN8S20997C12v1Ev
  S20997C1(); // tgen
};
//SIG(1 S20997C1) C1{ VBC2{ VBC3{ VBC4{ m FL[4]} VBC5{ VBC6{ m FL[5]} VBC7{ v2} BC8{ m} vd} vd} BC9{ VBC7 BC10{ BC7 VBC6 BC8 Fp[10]} VBC11{ VBC8 BC12{ VBC7 FC10[9]} BC5 BC13{ BC5 vd}} vd} BC6 VBC13} VBC14{ VBC15{ BC16{ VBC17{ VBC10} BC7 VBC4 VBC18{ VBC7 VBC5 VBC4 VBC19{ VBC8 VBC5 v3} VBC12 vd} BC20{ BC21{ BC6 BC7} BC10}} vd Fs} VBC22{ BC23{ VBC10 VBC24{ VBC6 VBC11 VBC25{ VBC9 BC26{ BC21 FD}} vd Fp}} BC8 VBC27{ VBC10 VBC3 VBC20 BC28{ m} VBC29{ BC30{ m}} vd} VBC18} BC31{ BC32{ BC25 vd v4}} vd} BC33{ VBC34{ BC35{ BC19 vd} vd Fc} BC36{ VBC6 VBC2 VBC16 VBC37{ m FC8} BC35 vd v5} vd v6} VBC38{ VBC39{ BC6} FD} BC40{ VBC11 VBC35 BC41{ VBC12 Fp} BC42{ VBC43{ VBC6 BC19 VBC21} BC18 v7} vd v8} vd v1}


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

static void Test_S20997C1()
{
  extern Class_Descriptor cd_S20997C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(222,582)];
    init_test(&cd_S20997C1, buf);
    S20997C1 *dp, &lv = *(dp=new (buf) S20997C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3536,2324), "sizeof(S20997C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20997C1)");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C3*), ABISELECT(160,100), "S20997C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C16*)(S20997C15*), ABISELECT(160,100), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C18 */ AMB_check_base_class_offset(lv, (S10258C6_nt*)(S20997C18*), ABISELECT(160,100), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C16 */ AMB_check_base_class_offset(lv, (S10258C6_nt*)(S20997C16*), ABISELECT(160,100), "S20997C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S20997C18*)(S20997C42*)(S20997C40*), ABISELECT(160,100), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*), ABISELECT(192,132), "S20997C1");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C9*)(S20997C2*), ABISELECT(192,132), "S20997C1");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C11*), ABISELECT(192,132), "S20997C1");
    check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(192,132), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C5*)(S20997C13*), ABISELECT(192,132), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*), ABISELECT(192,132), "S20997C1");
    check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(192,132), "S20997C1");
    /*is_ambiguous_... S20997C24::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C24*), ABISELECT(192,132), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C9 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C9*), ABISELECT(192,132), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C20 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C20*), ABISELECT(192,132), "S20997C1");
    /*is_ambiguous_... S20997C36::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C36*)(S20997C33*), ABISELECT(192,132), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C16 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(192,132), "S20997C1");
    /*is_ambiguous_... S20997C43::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C43*), ABISELECT(192,132), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*), ABISELECT(3080,2020), "S20997C1");
    /*is_ambiguous_... S20997C9::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C9*)(S20997C2*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S20997C7*)(S20997C12*)(S20997C11*), ABISELECT(3080,2020), "S20997C1");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C11*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(3080,2020), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C5*)(S20997C13*), ABISELECT(3080,2020), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C18 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C18*), ABISELECT(3080,2020), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C12 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C12*), ABISELECT(3080,2020), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C9 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C9*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S20997C7*)(S20997C18*)(S20997C42*)(S20997C40*), ABISELECT(3080,2020), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S20997C5*)(S20997C3*), ABISELECT(3080,2020), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C18 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C18*), ABISELECT(3080,2020), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C19 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C19*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*)(S20997C35*)(S20997C34*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*)(S20997C35*)(S20997C36*)(S20997C33*), ABISELECT(3080,2020), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C35 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C19*)(S20997C35*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S20997C5*)(S20997C19*)(S20997C43*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S20997C5*)(S20997C18*)(S20997C42*)(S20997C40*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S20997C3*)(S20997C2*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S20997C3*)(S20997C27*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C9*)(S20997C2*), ABISELECT(32,16), "S20997C1");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C9*)(S20997C2*), ABISELECT(32,16), "S20997C1");
    check_base_class_offset(lv, (S20997C10*)(S20997C9*)(S20997C2*), ABISELECT(32,16), "S20997C1");
    /*is_ambiguous_... S20997C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C11*), 0, "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C19 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*), 0, "S20997C1");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*)(S20997C35*)(S20997C34*), 0, "S20997C1");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*)(S20997C35*)(S20997C36*)(S20997C33*), 0, "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C35 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*)(S20997C35*), 0, "S20997C1");
    /*is_ambiguous_... S20997C19::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C19*)(S20997C43*), 0, "S20997C1");
    check_base_class_offset(lv, (S20997C12*)(S20997C11*), ABISELECT(232,172), "S20997C1");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C11*), ABISELECT(1392,932), "S20997C1");
    /*is_ambiguous_... S20997C11::S20997C5 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C11*), ABISELECT(1392,932), "S20997C1");
    check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1400,936), "S20997C1");
    check_base_class_offset(lv, (S20997C5*)(S20997C13*)(S20997C11*), ABISELECT(1400,936), "S20997C1");
    check_base_class_offset(lv, (S20997C13*)(S20997C11*), ABISELECT(1400,936), "S20997C1");
    check_base_class_offset(lv, (S20997C11*)(S20997C9*)(S20997C2*), ABISELECT(232,172), "S20997C1");
    check_base_class_offset(lv, (S20997C11*)(S20997C24*), ABISELECT(232,172), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C9 */ AMB_check_base_class_offset(lv, (S20997C11*)(S20997C9*), ABISELECT(232,172), "S20997C1");
    check_base_class_offset(lv, (S20997C11*)(S20997C40*), ABISELECT(232,172), "S20997C1");
    check_base_class_offset(lv, (S20997C9*)(S20997C2*), ABISELECT(32,16), "S20997C1");
    /*is_ambiguous_... S20997C2::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C2*), ABISELECT(120,60), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C13 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C5*)(S20997C13*), ABISELECT(1408,940), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C5*)(S20997C13*), ABISELECT(1408,940), "S20997C1");
    /*is_ambiguous_... S20997C2::S20997C13 */ AMB_check_base_class_offset(lv, (S20997C13*)(S20997C2*), ABISELECT(1408,940), "S20997C1");
    check_base_class_offset(lv, (S20997C2*), ABISELECT(32,16), "S20997C1");
    check_base_class_offset(lv, (S20997C2*)(S20997C36*)(S20997C33*), ABISELECT(32,16), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*), ABISELECT(1648,1100), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C10 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*), ABISELECT(1648,1100), "S20997C1");
    check_base_class_offset(lv, (S20997C10*)(S20997C17*), ABISELECT(1648,1100), "S20997C1");
    /*is_ambiguous_... S20997C23::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C10*)(S20997C23*)(S20997C22*), ABISELECT(1648,1100), "S20997C1");
    /*is_ambiguous_... S20997C27::S20997C10 */ AMB_check_base_class_offset(lv, (S20997C10*)(S20997C27*), ABISELECT(1648,1100), "S20997C1");
    check_base_class_offset(lv, (S20997C17*)(S20997C16*)(S20997C15*), ABISELECT(1640,1096), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C16 */ AMB_check_base_class_offset(lv, (S20997C17*)(S20997C16*), ABISELECT(1640,1096), "S20997C1");
    /*is_ambiguous_... S20997C16::S20997C7 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C16*)(S20997C15*), ABISELECT(1488,1000), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C18 */ AMB_check_base_class_offset(lv, (S20997C19*)(S20997C18*), ABISELECT(1736,1144), "S20997C1");
    check_base_class_offset(lv, (S20997C19*)(S20997C18*)(S20997C42*)(S20997C40*), ABISELECT(1736,1144), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C18 */ AMB_check_base_class_offset(lv, (S20997C12*)(S20997C18*), ABISELECT(1744,1148), "S20997C1");
    check_base_class_offset(lv, (S20997C12*)(S20997C41*)(S20997C40*), ABISELECT(1744,1148), "S20997C1");
    check_base_class_offset(lv, (S20997C12*)(S20997C18*)(S20997C42*)(S20997C40*), ABISELECT(1744,1148), "S20997C1");
    check_base_class_offset(lv, (S20997C18*)(S20997C16*)(S20997C15*), ABISELECT(1736,1144), "S20997C1");
    check_base_class_offset(lv, (S20997C18*)(S20997C22*), ABISELECT(1736,1144), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C16 */ AMB_check_base_class_offset(lv, (S20997C18*)(S20997C16*), ABISELECT(1736,1144), "S20997C1");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(1504,1008), "S20997C1");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(1496,1004), "S20997C1");
    check_base_class_offset(lv, (S20997C21*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(1496,1004), "S20997C1");
    check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(1544,1048), "S20997C1");
    check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(1544,1048), "S20997C1");
    check_base_class_offset(lv, (S20997C10*)(S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(1544,1048), "S20997C1");
    check_base_class_offset(lv, (S20997C20*)(S20997C16*)(S20997C15*), ABISELECT(1496,1004), "S20997C1");
    check_base_class_offset(lv, (S20997C16*)(S20997C15*), ABISELECT(1488,1000), "S20997C1");
    check_base_class_offset(lv, (S20997C15*)(S20997C14*), ABISELECT(1488,1000), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C9 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C9*), ABISELECT(2992,1976), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C9 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C9*), ABISELECT(2992,1976), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C9 */ AMB_check_base_class_offset(lv, (S20997C10*)(S20997C9*), ABISELECT(2992,1976), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C25 */ AMB_check_base_class_offset(lv, (S20997C9*)(S20997C25*), ABISELECT(2992,1976), "S20997C1");
    check_base_class_offset(lv, (S20997C9*)(S20997C25*)(S20997C32*)(S20997C31*)(S20997C14*), ABISELECT(2992,1976), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C25 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(2936,1924), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C25 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(2928,1920), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C25 */ AMB_check_base_class_offset(lv, (S20997C21*)(S20997C26*)(S20997C25*), ABISELECT(2928,1920), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C25 */ AMB_check_base_class_offset(lv, (S20997C26*)(S20997C25*), ABISELECT(2928,1920), "S20997C1");
    check_base_class_offset(lv, (S20997C25*)(S20997C24*), ABISELECT(2928,1920), "S20997C1");
    check_base_class_offset(lv, (S20997C24*)(S20997C23*)(S20997C22*), ABISELECT(2912,1912), "S20997C1");
    check_base_class_offset(lv, (S20997C23*)(S20997C22*), ABISELECT(2904,1908), "S20997C1");
    /*is_ambiguous_... S20997C22::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C22*), ABISELECT(2904,1908), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C20 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C20*), ABISELECT(3096,2028), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C20 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C20*), ABISELECT(3088,2024), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C20 */ AMB_check_base_class_offset(lv, (S20997C21*)(S20997C20*), ABISELECT(3088,2024), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C20 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C20*), ABISELECT(3136,2068), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C20 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C20*), ABISELECT(3136,2068), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C20 */ AMB_check_base_class_offset(lv, (S20997C10*)(S20997C20*), ABISELECT(3136,2068), "S20997C1");
    check_base_class_offset(lv, (S20997C20*)(S20997C27*), ABISELECT(3088,2024), "S20997C1");
    check_base_class_offset(lv, (S4227C27*)(S20997C27*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S4227C23*)(S20997C29_nt*), 0, "S20997C1");
    check_base_class_offset(lv, (S20997C29_nt*)(S20997C27*), 0, "S20997C1");
    check_base_class_offset(lv, (S20997C27*)(S20997C22*), ABISELECT(3080,2020), "S20997C1");
    check_base_class_offset(lv, (S20997C22*)(S20997C14*), ABISELECT(2904,1908), "S20997C1");
    check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C26*)(S20997C25*)(S20997C32*)(S20997C31*)(S20997C14*), ABISELECT(1432,948), "S20997C1");
    check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C26*)(S20997C25*)(S20997C32*)(S20997C31*)(S20997C14*), ABISELECT(1424,944), "S20997C1");
    check_base_class_offset(lv, (S20997C21*)(S20997C26*)(S20997C25*)(S20997C32*)(S20997C31*)(S20997C14*), ABISELECT(1424,944), "S20997C1");
    check_base_class_offset(lv, (S20997C26*)(S20997C25*)(S20997C32*)(S20997C31*)(S20997C14*), ABISELECT(1424,944), "S20997C1");
    check_base_class_offset(lv, (S20997C25*)(S20997C32*)(S20997C31*)(S20997C14*), ABISELECT(1424,944), "S20997C1");
    check_base_class_offset(lv, (S20997C32*)(S20997C31*)(S20997C14*), ABISELECT(1424,944), "S20997C1");
    check_base_class_offset(lv, (S20997C31*)(S20997C14*), ABISELECT(1424,944), "S20997C1");
    check_base_class_offset(lv, (S20997C14*), ABISELECT(1424,944), "S20997C1");
    check_base_class_offset(lv, (S20997C19*)(S20997C35*)(S20997C34*), ABISELECT(3224,2112), "S20997C1");
    check_base_class_offset(lv, (S20997C35*)(S20997C34*), ABISELECT(3224,2112), "S20997C1");
    check_base_class_offset(lv, (S20997C34*)(S20997C33*), ABISELECT(3224,2112), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C16 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C16*), ABISELECT(3240,2120), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C16 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C21*)(S20997C20*)(S20997C16*), ABISELECT(3256,2128), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C16 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C21*)(S20997C20*)(S20997C16*), ABISELECT(3248,2124), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C16 */ AMB_check_base_class_offset(lv, (S20997C21*)(S20997C20*)(S20997C16*), ABISELECT(3248,2124), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C16 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(3296,2168), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C16 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(3296,2168), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C16 */ AMB_check_base_class_offset(lv, (S20997C10*)(S20997C20*)(S20997C16*), ABISELECT(3296,2168), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C16 */ AMB_check_base_class_offset(lv, (S20997C20*)(S20997C16*), ABISELECT(3248,2124), "S20997C1");
    check_base_class_offset(lv, (S20997C16*)(S20997C36*)(S20997C33*), ABISELECT(3240,2120), "S20997C1");
    check_base_class_offset(lv, (S20997C37*)(S20997C36*)(S20997C33*), ABISELECT(3384,2212), "S20997C1");
    check_base_class_offset(lv, (S20997C19*)(S20997C35*)(S20997C36*)(S20997C33*), 0, "S20997C1");
    check_base_class_offset(lv, (S20997C35*)(S20997C36*)(S20997C33*), 0, "S20997C1");
    check_base_class_offset(lv, (S20997C36*)(S20997C33*), 0, "S20997C1");
    check_base_class_offset(lv, (S20997C33*), 0, "S20997C1");
    check_base_class_offset(lv, (S20997C6*)(S20997C39*), ABISELECT(3424,2232), "S20997C1");
    check_base_class_offset(lv, (S20997C39*)(S20997C38*), ABISELECT(3424,2232), "S20997C1");
    check_base_class_offset(lv, (S20997C38*), ABISELECT(3392,2216), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C35 */ AMB_check_base_class_offset(lv, (S20997C19*)(S20997C35*), ABISELECT(3464,2272), "S20997C1");
    check_base_class_offset(lv, (S20997C35*)(S20997C40*), ABISELECT(3464,2272), "S20997C1");
    check_base_class_offset(lv, (S20997C41*)(S20997C40*), ABISELECT(8,4), "S20997C1");
    check_base_class_offset(lv, (S20997C19*)(S20997C43*), ABISELECT(3472,2276), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C21 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20997C21*), ABISELECT(3488,2284), "S20997C1");
    /*is_ambiguous_... S20997C1::S20997C21 */ AMB_check_base_class_offset(lv, (S20997C7*)(S20997C21*), ABISELECT(3480,2280), "S20997C1");
    check_base_class_offset(lv, (S20997C21*)(S20997C43*), ABISELECT(3480,2280), "S20997C1");
    check_base_class_offset(lv, (S20997C43*)(S20997C42*)(S20997C40*), ABISELECT(3472,2276), "S20997C1");
    check_base_class_offset(lv, (S20997C18*)(S20997C42*)(S20997C40*), ABISELECT(24,12), "S20997C1");
    check_base_class_offset(lv, (S20997C42*)(S20997C40*), ABISELECT(24,12), "S20997C1");
    check_base_class_offset(lv, (S20997C40*), ABISELECT(8,4), "S20997C1");
    test_class_info(&lv, &cd_S20997C1);
    dp->~S20997C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20997C1(Test_S20997C1, "S20997C1", ABISELECT(3536,2324));

#else // __cplusplus

extern void _ZN8S20997C1C1Ev();
extern void _ZN8S20997C1D2Ev();
Name_Map name_map_S20997C1[] = {
  NSPAIR(_ZN8S20997C1C1Ev),
  NSPAIR(_ZN8S20997C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C3;
extern VTBL_ENTRY _ZTI8S20997C3[];
extern  VTBL_ENTRY _ZTV8S20997C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C3[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C11;
extern VTBL_ENTRY _ZTI9S20997C11[];
extern  VTBL_ENTRY _ZTV9S20997C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C11[];
extern Class_Descriptor cd_S20997C9;
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C5;
extern VTBL_ENTRY _ZTI8S20997C5[];
extern  VTBL_ENTRY _ZTV8S20997C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C5[];
extern Class_Descriptor cd_S20997C13;
extern VTBL_ENTRY _ZTI9S20997C13[];
extern  VTBL_ENTRY _ZTV9S20997C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C13[];
extern Class_Descriptor cd_S20997C2;
extern VTBL_ENTRY _ZTI8S20997C2[];
extern  VTBL_ENTRY _ZTV8S20997C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C2[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C17;
extern VTBL_ENTRY _ZTI9S20997C17[];
extern  VTBL_ENTRY _ZTV9S20997C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C17[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C12;
extern VTBL_ENTRY _ZTI9S20997C12[];
extern  VTBL_ENTRY _ZTV9S20997C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C12[];
extern Class_Descriptor cd_S20997C18;
extern VTBL_ENTRY _ZTI9S20997C18[];
extern  VTBL_ENTRY _ZTV9S20997C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C18[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C20;
extern VTBL_ENTRY _ZTI9S20997C20[];
extern  VTBL_ENTRY _ZTV9S20997C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C20[];
extern Class_Descriptor cd_S20997C16;
extern VTBL_ENTRY _ZTI9S20997C16[];
extern  VTBL_ENTRY _ZTV9S20997C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C16[];
extern Class_Descriptor cd_S20997C15;
extern VTBL_ENTRY _ZTI9S20997C15[];
extern  VTBL_ENTRY _ZTV9S20997C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C15[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C9;
extern VTBL_ENTRY _ZTI8S20997C9[];
extern  VTBL_ENTRY _ZTV8S20997C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C26;
extern VTBL_ENTRY _ZTI9S20997C26[];
extern  VTBL_ENTRY _ZTV9S20997C26[];
extern Class_Descriptor cd_S20997C25;
extern VTBL_ENTRY _ZTI9S20997C25[];
extern  VTBL_ENTRY _ZTV9S20997C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C25[];
extern Class_Descriptor cd_S20997C24;
extern VTBL_ENTRY _ZTI9S20997C24[];
extern  VTBL_ENTRY _ZTV9S20997C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C24[];
extern Class_Descriptor cd_S20997C23;
extern VTBL_ENTRY _ZTI9S20997C23[];
extern  VTBL_ENTRY _ZTV9S20997C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C23[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C20;
extern VTBL_ENTRY _ZTI9S20997C20[];
extern  VTBL_ENTRY _ZTV9S20997C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C20[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S20997C29_nt;
extern VTBL_ENTRY _ZTI12S20997C29_nt[];
extern Class_Descriptor cd_S20997C27;
extern VTBL_ENTRY _ZTI9S20997C27[];
extern  VTBL_ENTRY _ZTV9S20997C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C27[];
extern Class_Descriptor cd_S20997C22;
extern VTBL_ENTRY _ZTI9S20997C22[];
extern  VTBL_ENTRY _ZTV9S20997C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C22[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C26;
extern VTBL_ENTRY _ZTI9S20997C26[];
extern  VTBL_ENTRY _ZTV9S20997C26[];
extern Class_Descriptor cd_S20997C25;
extern VTBL_ENTRY _ZTI9S20997C25[];
extern  VTBL_ENTRY _ZTV9S20997C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C25[];
extern Class_Descriptor cd_S20997C32;
extern VTBL_ENTRY _ZTI9S20997C32[];
extern  VTBL_ENTRY _ZTV9S20997C32[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C32[];
extern Class_Descriptor cd_S20997C31;
extern VTBL_ENTRY _ZTI9S20997C31[];
extern  VTBL_ENTRY _ZTV9S20997C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C31[];
extern Class_Descriptor cd_S20997C14;
extern VTBL_ENTRY _ZTI9S20997C14[];
extern  VTBL_ENTRY _ZTV9S20997C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C14[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C35;
extern VTBL_ENTRY _ZTI9S20997C35[];
extern  VTBL_ENTRY _ZTV9S20997C35[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C35[];
extern Class_Descriptor cd_S20997C34;
extern VTBL_ENTRY _ZTI9S20997C34[];
extern  VTBL_ENTRY _ZTV9S20997C34[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C34[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C10;
extern VTBL_ENTRY _ZTI9S20997C10[];
extern  VTBL_ENTRY _ZTV9S20997C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C10[];
extern Class_Descriptor cd_S20997C20;
extern VTBL_ENTRY _ZTI9S20997C20[];
extern  VTBL_ENTRY _ZTV9S20997C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C20[];
extern Class_Descriptor cd_S20997C16;
extern VTBL_ENTRY _ZTI9S20997C16[];
extern  VTBL_ENTRY _ZTV9S20997C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C16[];
extern Class_Descriptor cd_S20997C37;
extern VTBL_ENTRY _ZTI9S20997C37[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C35;
extern VTBL_ENTRY _ZTI9S20997C35[];
extern  VTBL_ENTRY _ZTV9S20997C35[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C35[];
extern Class_Descriptor cd_S20997C36;
extern VTBL_ENTRY _ZTI9S20997C36[];
extern  VTBL_ENTRY _ZTV9S20997C36[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C36[];
extern Class_Descriptor cd_S20997C33;
extern VTBL_ENTRY _ZTI9S20997C33[];
extern  VTBL_ENTRY _ZTV9S20997C33[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C33[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C39;
extern VTBL_ENTRY _ZTI9S20997C39[];
extern Class_Descriptor cd_S20997C38;
extern VTBL_ENTRY _ZTI9S20997C38[];
extern  VTBL_ENTRY _ZTV9S20997C38[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C38[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C35;
extern VTBL_ENTRY _ZTI9S20997C35[];
extern  VTBL_ENTRY _ZTV9S20997C35[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C35[];
extern Class_Descriptor cd_S20997C41;
extern VTBL_ENTRY _ZTI9S20997C41[];
extern  VTBL_ENTRY _ZTV9S20997C41[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C41[];
extern Class_Descriptor cd_S20997C19;
extern VTBL_ENTRY _ZTI9S20997C19[];
extern  VTBL_ENTRY _ZTV9S20997C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C19[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20997C7;
extern VTBL_ENTRY _ZTI8S20997C7[];
extern  VTBL_ENTRY _ZTV8S20997C7[];
extern Class_Descriptor cd_S20997C21;
extern VTBL_ENTRY _ZTI9S20997C21[];
extern  VTBL_ENTRY _ZTV9S20997C21[];
extern Class_Descriptor cd_S20997C43;
extern VTBL_ENTRY _ZTI9S20997C43[];
extern  VTBL_ENTRY _ZTV9S20997C43[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C43[];
extern Class_Descriptor cd_S20997C18;
extern VTBL_ENTRY _ZTI9S20997C18[];
extern  VTBL_ENTRY _ZTV9S20997C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C18[];
extern Class_Descriptor cd_S20997C42;
extern VTBL_ENTRY _ZTI9S20997C42[];
extern  VTBL_ENTRY _ZTV9S20997C42[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C42[];
extern Class_Descriptor cd_S20997C40;
extern VTBL_ENTRY _ZTI9S20997C40[];
extern  VTBL_ENTRY _ZTV9S20997C40[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20997C40[];
static Base_Class bases_S20997C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C6_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
    5, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(192,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(3080,2020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(3080,2020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20997C5,    ABISELECT(3080,2020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C3,    ABISELECT(3080,2020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    118, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4227C37,    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_S20997C10,    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
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C12,    ABISELECT(232,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1392,932), //bcp->offset
    104, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1400,936), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1400,936), //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
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1400,936), //bcp->offset
    112, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20997C11,    ABISELECT(232,172), //bcp->offset
    94, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20997C9,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    22, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1408,940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C5,    ABISELECT(1408,940), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20997C13,    ABISELECT(1408,940), //bcp->offset
    120, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20997C2,    ABISELECT(32,16), //bcp->offset
    79, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C7,    ABISELECT(1648,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1648,1100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    ABISELECT(1648,1100), //bcp->offset
    187, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    204, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    26, //immediately_derived
  0, 1},
  {&cd_S20997C17,    ABISELECT(1640,1096), //bcp->offset
    183, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    202, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(1488,1000), //bcp->offset
    -1, //bcp->virtual_function_table_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
    38, //immediately_derived
  0, 0},
  {&cd_S20997C19,    ABISELECT(1736,1144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    210, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S20997C12,    ABISELECT(1744,1148), //bcp->offset
    208, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    84, //bcp->index_in_construction_vtbl_array
    213, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S20997C18,    ABISELECT(1736,1144), //bcp->offset
    192, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    205, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1504,1008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(1496,1004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(1496,1004), //bcp->offset
    -1, //bcp->virtual_function_table_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
    37, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(1544,1048), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1544,1048), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(1544,1048), //bcp->offset
    179, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    86, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20997C20,    ABISELECT(1496,1004), //bcp->offset
    175, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    85, //bcp->index_in_construction_vtbl_array
    181, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20997C16,    ABISELECT(1488,1000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    180, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20997C15,    ABISELECT(1488,1000), //bcp->offset
    158, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    179, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    71, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(2992,1976), //bcp->offset
    -1, //bcp->virtual_function_table_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
    42, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2992,1976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    ABISELECT(2992,1976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    255, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20997C9,    ABISELECT(2992,1976), //bcp->offset
    262, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    254, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(2936,1924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(2928,1920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(2928,1920), //bcp->offset
    -1, //bcp->virtual_function_table_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
    47, //immediately_derived
  0, 0},
  {&cd_S20997C26,    ABISELECT(2928,1920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20997C25,    ABISELECT(2928,1920), //bcp->offset
    250, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    248, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    49, //immediately_derived
  0, 1},
  {&cd_S20997C24,    ABISELECT(2912,1912), //bcp->offset
    237, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    241, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S20997C23,    ABISELECT(2904,1908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    216, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2904,1908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(3096,2028), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C7,    ABISELECT(3088,2024), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(3088,2024), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20997C7,    ABISELECT(3136,2068), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(3136,2068), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C10,    ABISELECT(3136,2068), //bcp->offset
    293, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    93, //bcp->index_in_construction_vtbl_array
    268, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S20997C20,    ABISELECT(3088,2024), //bcp->offset
    288, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    92, //bcp->index_in_construction_vtbl_array
    267, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    62, //immediately_derived
  0, 1},
  {&cd_S4227C27,    ABISELECT(3080,2020), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S20997C29_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S20997C27,    ABISELECT(3080,2020), //bcp->offset
    273, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    260, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    63, //immediately_derived
  0, 1},
  {&cd_S20997C22,    ABISELECT(2904,1908), //bcp->offset
    213, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    215, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    71, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1432,948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(1424,944), //bcp->offset
    -1, //bcp->virtual_function_table_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
    66, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(1424,944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S20997C26,    ABISELECT(1424,944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S20997C25,    ABISELECT(1424,944), //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
    48, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S20997C32,    ABISELECT(1424,944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S20997C31,    ABISELECT(1424,944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S20997C14,    ABISELECT(1424,944), //bcp->offset
    129, //bcp->virtual_function_table_offset
    25, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C19,    ABISELECT(3224,2112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    272, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S20997C35,    ABISELECT(3224,2112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    271, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S20997C34,    ABISELECT(3224,2112), //bcp->offset
    297, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    94, //bcp->index_in_construction_vtbl_array
    270, //bcp->base_subarray_index_in_construction_vtbl_array
    54, //init_seq
    88, //immediately_derived
  0, 1},
  {&cd_S20997C7,    ABISELECT(3240,2120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(3256,2128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(3248,2124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(3248,2124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(3296,2168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(3296,2168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    81, //immediately_derived
  0, 0},
  {&cd_S20997C10,    ABISELECT(3296,2168), //bcp->offset
    331, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    97, //bcp->index_in_construction_vtbl_array
    281, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S20997C20,    ABISELECT(3248,2124), //bcp->offset
    327, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    96, //bcp->index_in_construction_vtbl_array
    280, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    83, //immediately_derived
  0, 0},
  {&cd_S20997C16,    ABISELECT(3240,2120), //bcp->offset
    310, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    279, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    87, //immediately_derived
  0, 1},
  {&cd_S20997C37,    ABISELECT(3384,2212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S20997C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    69, //init_seq
    86, //immediately_derived
  0, 0},
  {&cd_S20997C35,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    70, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S20997C36,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    71, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S20997C33,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    72, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(3424,2232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    90, //immediately_derived
  0, 0},
  {&cd_S20997C39,    ABISELECT(3424,2232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    91, //immediately_derived
  0, 1},
  {&cd_S20997C38,    ABISELECT(3392,2216), //bcp->offset
    335, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    98, //bcp->index_in_construction_vtbl_array
    292, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C19,    ABISELECT(3464,2272), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    294, //bcp->base_subarray_index_in_construction_vtbl_array
    63, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S20997C35,    ABISELECT(3464,2272), //bcp->offset
    338, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    100, //bcp->index_in_construction_vtbl_array
    293, //bcp->base_subarray_index_in_construction_vtbl_array
    64, //init_seq
    102, //immediately_derived
  0, 1},
  {&cd_S20997C41,    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
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    73, //init_seq
    102, //immediately_derived
  0, 0},
  {&cd_S20997C19,    ABISELECT(3472,2276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    300, //bcp->base_subarray_index_in_construction_vtbl_array
    67, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(3488,2284), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    98, //immediately_derived
  0, 0},
  {&cd_S20997C7,    ABISELECT(3480,2280), //bcp->offset
    365, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    65, //init_seq
    98, //immediately_derived
  0, 0},
  {&cd_S20997C21,    ABISELECT(3480,2280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    103, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    66, //init_seq
    99, //immediately_derived
  0, 1},
  {&cd_S20997C43,    ABISELECT(3472,2276), //bcp->offset
    351, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    102, //bcp->index_in_construction_vtbl_array
    299, //bcp->base_subarray_index_in_construction_vtbl_array
    68, //init_seq
    101, //immediately_derived
  0, 1},
  {&cd_S20997C18,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    74, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S20997C42,    ABISELECT(24,12), //bcp->offset
    60, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    101, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    75, //init_seq
    102, //immediately_derived
  0, 0},
  {&cd_S20997C40,    ABISELECT(8,4), //bcp->offset
    42, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    99, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    76, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20997C1[];
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev)();
extern void _ZN8S20997C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev)();
extern void _ZN8S20997C1D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN9S20997C362v5Ev();
extern void _ZN9S20997C332v6Ev();
extern void _ZN8S20997C12v1Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn8_N8S20997C1D1Ev,_ZThn4_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20997C1D0Ev,_ZThn4_N8S20997C1D0Ev)();
extern void _ZN9S20997C402v8Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S20997C1D1Ev,_ZThn12_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S20997C1D0Ev,_ZThn12_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN9S20997C422v7Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n96_N8S20997C1D1Ev,_ZTv0_n48_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20997C1D1Ev,_ZThn16_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20997C1D0Ev,_ZTv0_n48_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20997C1D0Ev,_ZThn16_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C1D1Ev,_ZTv0_n28_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn232_N8S20997C1D1Ev,_ZThn172_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C1D0Ev,_ZTv0_n28_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn232_N8S20997C1D0Ev,_ZThn172_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C1D1Ev,_ZTvn760_n28_N8S20997C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C1D0Ev,_ZTvn760_n28_N8S20997C1D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C1D1Ev,_ZTvn764_n28_N8S20997C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C1D0Ev,_ZTvn764_n28_N8S20997C1D0Ev)();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn1408_N8S20997C1D1Ev,_ZThn940_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn1408_N8S20997C1D0Ev,_ZThn940_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n192_N8S20997C1D1Ev,_ZTv0_n96_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn1424_N8S20997C1D1Ev,_ZThn944_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n192_N8S20997C1D0Ev,_ZTv0_n96_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn1424_N8S20997C1D0Ev,_ZThn944_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN9S20997C322v4Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n112_N8S20997C1D1Ev,_ZTv0_n56_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn1488_N8S20997C1D1Ev,_ZThn1000_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S20997C1D0Ev,_ZTv0_n56_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn1488_N8S20997C1D0Ev,_ZThn1000_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn1736_N8S20997C1D1Ev,_ZThn1144_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn1736_N8S20997C1D0Ev,_ZThn1144_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n168_N8S20997C1D1Ev,_ZTv0_n84_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn2904_N8S20997C1D1Ev,_ZThn1908_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N8S20997C1D0Ev,_ZTv0_n84_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn2904_N8S20997C1D0Ev,_ZThn1908_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n80_N8S20997C1D1Ev,_ZTv0_n40_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn2912_N8S20997C1D1Ev,_ZThn1912_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S20997C1D0Ev,_ZTv0_n40_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn2912_N8S20997C1D0Ev,_ZThn1912_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S20997C1D1Ev,_ZTv0_n36_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn2928_N8S20997C1D1Ev,_ZThn1920_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20997C1D0Ev,_ZTv0_n36_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn2928_N8S20997C1D0Ev,_ZThn1920_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S20997C1D1Ev,_ZTv0_n32_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn2992_N8S20997C1D1Ev,_ZThn1976_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20997C1D0Ev,_ZTv0_n32_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn2992_N8S20997C1D0Ev,_ZThn1976_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn3080_N8S20997C1D1Ev,_ZThn2020_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn3080_N8S20997C1D0Ev,_ZThn2020_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn3224_N8S20997C1D1Ev,_ZThn2112_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn3224_N8S20997C1D0Ev,_ZThn2112_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n112_N8S20997C1D1Ev,_ZTv0_n56_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn3240_N8S20997C1D1Ev,_ZThn2120_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S20997C1D0Ev,_ZTv0_n56_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn3240_N8S20997C1D0Ev,_ZThn2120_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn3464_N8S20997C1D1Ev,_ZThn2272_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn3464_N8S20997C1D0Ev,_ZThn2272_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev)();
extern void ABISELECT(_ZThn3472_N8S20997C1D1Ev,_ZThn2276_N8S20997C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev)();
extern void ABISELECT(_ZThn3472_N8S20997C1D0Ev,_ZThn2276_N8S20997C1D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY vtc_S20997C1[] = {
  ABISELECT(3480,2280),
  ABISELECT(3472,2276),
  ABISELECT(3464,2272),
  ABISELECT(3424,2232),
  ABISELECT(3392,2216),
  0,
  ABISELECT(3088,2024),
  ABISELECT(3080,2020),
  ABISELECT(2992,1976),
  ABISELECT(2928,1920),
  ABISELECT(2912,1912),
  ABISELECT(2904,1908),
  ABISELECT(1488,1000),
  ABISELECT(1424,944),
  ABISELECT(3224,2112),
  ABISELECT(3384,2212),
  ABISELECT(1744,1148),
  ABISELECT(1736,1144),
  ABISELECT(1736,1144),
  ABISELECT(1648,1100),
  ABISELECT(1640,1096),
  ABISELECT(3240,2120),
  ABISELECT(1408,940),
  ABISELECT(232,172),
  ABISELECT(160,100),
  ABISELECT(3080,2020),
  ABISELECT(32,16),
  ABISELECT(3080,2020),
  0,
  0,
  ABISELECT(3080,2020),
  ABISELECT(192,132),
  ABISELECT(3080,2020),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  (VTBL_ENTRY)&_ZN9S20997C362v5Ev,
  (VTBL_ENTRY)&_ZN9S20997C332v6Ev,
  (VTBL_ENTRY)&_ZN8S20997C12v1Ev,
  ABISELECT(1728,1140),
  ABISELECT(152,96),
  ABISELECT(3472,2276),
  ABISELECT(3464,2272),
  ABISELECT(3072,2016),
  ABISELECT(3456,2268),
  ABISELECT(184,128),
  ABISELECT(-8,-4),
  ABISELECT(224,168),
  ABISELECT(3072,2016),
  ABISELECT(1736,1144),
  ABISELECT(3072,2016),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S20997C1D1Ev,_ZThn4_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S20997C1D0Ev,_ZThn4_N8S20997C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C402v8Ev,
  ABISELECT(3456,2268),
  ABISELECT(3448,2264),
  ABISELECT(1720,1136),
  ABISELECT(1712,1132),
  ABISELECT(136,88),
  ABISELECT(1712,1132),
  ABISELECT(3056,2008),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(3056,2008),
  ABISELECT(168,120),
  ABISELECT(3056,2008),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  (VTBL_ENTRY)&_ZN9S20997C422v7Ev,
  ABISELECT(-32,-16),
  0,
  ABISELECT(1376,924),
  ABISELECT(3048,2004),
  ABISELECT(128,84),
  ABISELECT(3048,2004),
  ABISELECT(-32,-16),
  ABISELECT(200,156),
  ABISELECT(3048,2004),
  ABISELECT(160,116),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20997C1D1Ev,_ZTv0_n48_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20997C1D0Ev,_ZTv0_n48_N8S20997C1D0Ev),
  ABISELECT(-232,-172),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(-232,-172),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C1D1Ev,_ZTv0_n28_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C1D0Ev,_ZTv0_n28_N8S20997C1D0Ev),
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(-1392,-932),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C1D1Ev,_ZTvn760_n28_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C1D0Ev,_ZTvn760_n28_N8S20997C1D0Ev),
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(-1400,-936),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C1D1Ev,_ZTvn764_n28_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C1D0Ev,_ZTvn764_n28_N8S20997C1D0Ev),
  ABISELECT(-1408,-940),
  ABISELECT(1672,1080),
  ABISELECT(-1216,-808),
  ABISELECT(1672,1080),
  ABISELECT(-1408,-940),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev),
  0,
  ABISELECT(-1424,-944),
  0,
  ABISELECT(-1424,-944),
  ABISELECT(1664,1080),
  ABISELECT(1656,1076),
  ABISELECT(1656,1076),
  ABISELECT(1504,976),
  ABISELECT(1488,968),
  ABISELECT(1480,964),
  ABISELECT(320,204),
  ABISELECT(312,200),
  ABISELECT(1656,1076),
  ABISELECT(312,200),
  ABISELECT(-1264,-844),
  ABISELECT(224,156),
  ABISELECT(216,152),
  ABISELECT(64,56),
  ABISELECT(-1424,-944),
  ABISELECT(-1192,-772),
  ABISELECT(-1232,-812),
  ABISELECT(1656,1076),
  ABISELECT(1568,1032),
  ABISELECT(-1424,-944),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N8S20997C1D1Ev,_ZTv0_n96_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n192_N8S20997C1D0Ev,_ZTv0_n96_N8S20997C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C322v4Ev,
  ABISELECT(-1488,-1000),
  0,
  ABISELECT(256,148),
  ABISELECT(-1488,-1000),
  ABISELECT(248,144),
  ABISELECT(1592,1020),
  ABISELECT(1592,1020),
  ABISELECT(248,144),
  ABISELECT(-1328,-900),
  ABISELECT(-1296,-868),
  ABISELECT(160,100),
  ABISELECT(152,96),
  ABISELECT(-1488,-1000),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20997C1D1Ev,_ZTv0_n56_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20997C1D0Ev,_ZTv0_n56_N8S20997C1D0Ev),
  ABISELECT(-1304,-872),
  ABISELECT(-1496,-1004),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-1352,-916),
  ABISELECT(-1544,-1048),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-1448,-964),
  ABISELECT(8,4),
  ABISELECT(-1640,-1096),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  0,
  ABISELECT(-1456,-968),
  ABISELECT(-1648,-1100),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-1576,-1044),
  0,
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  ABISELECT(-1736,-1144),
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(-1744,-1148),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-2904,-1908),
  ABISELECT(-1160,-760),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  ABISELECT(-2904,-1908),
  ABISELECT(184,116),
  ABISELECT(176,112),
  ABISELECT(-2744,-1808),
  ABISELECT(176,112),
  ABISELECT(176,112),
  ABISELECT(88,68),
  ABISELECT(24,12),
  ABISELECT(176,112),
  ABISELECT(-2904,-1908),
  ABISELECT(-2672,-1736),
  ABISELECT(8,4),
  ABISELECT(-2712,-1776),
  ABISELECT(-1256,-808),
  ABISELECT(176,112),
  ABISELECT(-2904,-1908),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20997C1D1Ev,_ZTv0_n84_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S20997C1D0Ev,_ZTv0_n84_N8S20997C1D0Ev),
  ABISELECT(-2912,-1912),
  ABISELECT(80,64),
  ABISELECT(16,8),
  ABISELECT(168,108),
  ABISELECT(-2912,-1912),
  ABISELECT(-2680,-1740),
  ABISELECT(-2720,-1780),
  ABISELECT(168,108),
  ABISELECT(-2912,-1912),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20997C1D1Ev,_ZTv0_n40_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S20997C1D0Ev,_ZTv0_n40_N8S20997C1D0Ev),
  ABISELECT(-2928,-1920),
  0,
  ABISELECT(-2928,-1920),
  ABISELECT(-2696,-1748),
  ABISELECT(-2736,-1788),
  ABISELECT(152,100),
  ABISELECT(64,56),
  ABISELECT(-2928,-1920),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20997C1D1Ev,_ZTv0_n36_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20997C1D0Ev,_ZTv0_n36_N8S20997C1D0Ev),
  ABISELECT(-2992,-1976),
  0,
  ABISELECT(-2992,-1976),
  ABISELECT(-2760,-1804),
  ABISELECT(88,44),
  ABISELECT(-2800,-1844),
  ABISELECT(-2992,-1976),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20997C1D1Ev,_ZTv0_n32_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20997C1D0Ev,_ZTv0_n32_N8S20997C1D0Ev),
  ABISELECT(-3080,-2020),
  ABISELECT(8,4),
  0,
  ABISELECT(-1432,-920),
  0,
  ABISELECT(-2920,-1920),
  ABISELECT(-3080,-2020),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-3080,-2020),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev),
  0,
  ABISELECT(-2896,-1892),
  ABISELECT(-3088,-2024),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-2944,-1936),
  ABISELECT(-3136,-2068),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  0,
  ABISELECT(-144,-92),
  ABISELECT(-3224,-2112),
  ABISELECT(-3224,-2112),
  ABISELECT(-144,-92),
  ABISELECT(-3032,-1980),
  ABISELECT(-144,-92),
  ABISELECT(-3224,-2112),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  ABISELECT(-3240,-2120),
  0,
  ABISELECT(-1496,-972),
  ABISELECT(-3240,-2120),
  ABISELECT(-1504,-976),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-1504,-976),
  ABISELECT(-3080,-2020),
  ABISELECT(-3048,-1988),
  ABISELECT(-1592,-1020),
  ABISELECT(-1600,-1024),
  ABISELECT(-3240,-2120),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20997C1D1Ev,_ZTv0_n56_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S20997C1D0Ev,_ZTv0_n56_N8S20997C1D0Ev),
  ABISELECT(-3056,-1992),
  ABISELECT(-3248,-2124),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(-3104,-2036),
  ABISELECT(-3296,-2168),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  ABISELECT(32,16),
  ABISELECT(-3392,-2216),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  0,
  ABISELECT(-384,-252),
  ABISELECT(-3464,-2272),
  ABISELECT(-3464,-2272),
  ABISELECT(-384,-252),
  ABISELECT(-3272,-2140),
  ABISELECT(-384,-252),
  ABISELECT(-3464,-2272),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-392,-256),
  ABISELECT(-3472,-2276),
  ABISELECT(-3472,-2276),
  ABISELECT(-392,-256),
  ABISELECT(-3280,-2144),
  ABISELECT(-392,-256),
  ABISELECT(-3472,-2276),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  0,
  ABISELECT(-3480,-2280),
  (VTBL_ENTRY)&(_ZTI8S20997C1[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern VTBL_ENTRY _ZTV8S20997C1[];
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev)();
extern void _ZN9S20997C33D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev)();
extern void _ZN9S20997C33D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN9S20997C362v5Ev();
extern void _ZN9S20997C332v6Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C33__8S20997C1[] = {
  ABISELECT(3224,2112),
  ABISELECT(3384,2212),
  ABISELECT(1744,1148),
  ABISELECT(1736,1144),
  ABISELECT(1736,1144),
  ABISELECT(1648,1100),
  ABISELECT(1640,1096),
  ABISELECT(3240,2120),
  ABISELECT(1408,940),
  ABISELECT(232,172),
  ABISELECT(160,100),
  ABISELECT(3080,2020),
  ABISELECT(32,16),
  ABISELECT(3080,2020),
  0,
  0,
  ABISELECT(3080,2020),
  ABISELECT(192,132),
  ABISELECT(3080,2020),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  (VTBL_ENTRY)&_ZN9S20997C362v5Ev,
  (VTBL_ENTRY)&_ZN9S20997C332v6Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void _ZN9S20997C36D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void _ZN9S20997C36D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN9S20997C362v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C369S20997C33__8S20997C1[] = {
  ABISELECT(3384,2212),
  ABISELECT(1744,1148),
  ABISELECT(1736,1144),
  ABISELECT(1736,1144),
  ABISELECT(1648,1100),
  ABISELECT(1640,1096),
  ABISELECT(3240,2120),
  ABISELECT(1408,940),
  ABISELECT(232,172),
  ABISELECT(160,100),
  ABISELECT(3080,2020),
  ABISELECT(32,16),
  ABISELECT(3080,2020),
  0,
  0,
  ABISELECT(3080,2020),
  ABISELECT(192,132),
  ABISELECT(3080,2020),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  (VTBL_ENTRY)&_ZN9S20997C362v5Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev)();
extern void _ZN9S20997C35D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev)();
extern void _ZN9S20997C35D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C359S20997C369S20997C33__A1__8S20997C1[] = {
  ABISELECT(3080,2020),
  0,
  0,
  ABISELECT(3080,2020),
  ABISELECT(192,132),
  ABISELECT(3080,2020),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C199S20997C359S20997C369S20997C33__A2__8S20997C1[] = {
  ABISELECT(3080,2020),
  0,
  0,
  ABISELECT(3080,2020),
  ABISELECT(192,132),
  ABISELECT(3080,2020),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZThn3080_N9S20997C19D1Ev,_ZThn2020_N9S20997C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void ABISELECT(_ZThn3080_N9S20997C19D0Ev,_ZThn2020_N9S20997C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C199S20997C359S20997C369S20997C33__A2__8S20997C1[] = {
  ABISELECT(-3080,-2020),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-3080,-2020),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev)();
extern void ABISELECT(_ZThn3080_N9S20997C35D1Ev,_ZThn2020_N9S20997C35D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev)();
extern void ABISELECT(_ZThn3080_N9S20997C35D0Ev,_ZThn2020_N9S20997C35D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C359S20997C369S20997C33__A1__8S20997C1[] = {
  ABISELECT(-3080,-2020),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-3080,-2020),
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S20997C36D1Ev,_ZTv0_n48_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn32_N9S20997C36D1Ev,_ZThn16_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20997C36D0Ev,_ZTv0_n48_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn32_N9S20997C36D0Ev,_ZThn16_N9S20997C36D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C2__9S20997C369S20997C33__8S20997C1[] = {
  ABISELECT(-32,-16),
  0,
  ABISELECT(1376,924),
  ABISELECT(3048,2004),
  ABISELECT(128,84),
  ABISELECT(3048,2004),
  ABISELECT(-32,-16),
  ABISELECT(200,156),
  ABISELECT(3048,2004),
  ABISELECT(160,116),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20997C36D1Ev,_ZTv0_n48_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20997C36D0Ev,_ZTv0_n48_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn3080_N9S20997C36D1Ev,_ZThn2020_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn3080_N9S20997C36D0Ev,_ZThn2020_N9S20997C36D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__9S20997C369S20997C33__8S20997C1[] = {
  0,
  ABISELECT(-2920,-1920),
  ABISELECT(-3080,-2020),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-3080,-2020),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C36D1Ev,_ZTv0_n28_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn232_N9S20997C36D1Ev,_ZThn172_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C36D0Ev,_ZTv0_n28_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn232_N9S20997C36D0Ev,_ZThn172_N9S20997C36D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C369S20997C33__8S20997C1[] = {
  ABISELECT(-232,-172),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(-232,-172),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C36D1Ev,_ZTv0_n28_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C36D0Ev,_ZTv0_n28_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C36D1Ev,_ZTvn760_n28_N9S20997C36D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C36D0Ev,_ZTvn760_n28_N9S20997C36D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__A1__9S20997C369S20997C33__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(-1392,-932),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C36D1Ev,_ZTvn760_n28_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C36D0Ev,_ZTvn760_n28_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C36D1Ev,_ZTvn764_n28_N9S20997C36D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C36D0Ev,_ZTvn764_n28_N9S20997C36D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C369S20997C33__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(-1400,-936),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C36D1Ev,_ZTvn764_n28_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C36D0Ev,_ZTvn764_n28_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn1408_N9S20997C36D1Ev,_ZThn940_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn1408_N9S20997C36D0Ev,_ZThn940_N9S20997C36D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C13__A1__9S20997C369S20997C33__8S20997C1[] = {
  ABISELECT(-1408,-940),
  ABISELECT(1672,1080),
  ABISELECT(-1216,-808),
  ABISELECT(1672,1080),
  ABISELECT(-1408,-940),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n112_N9S20997C36D1Ev,_ZTv0_n56_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn3240_N9S20997C36D1Ev,_ZThn2120_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S20997C36D0Ev,_ZTv0_n56_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn3240_N9S20997C36D0Ev,_ZThn2120_N9S20997C36D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C16__9S20997C369S20997C33__8S20997C1[] = {
  ABISELECT(-3240,-2120),
  0,
  ABISELECT(-1496,-972),
  ABISELECT(-3240,-2120),
  ABISELECT(-1504,-976),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-1504,-976),
  ABISELECT(-3080,-2020),
  ABISELECT(-3048,-1988),
  ABISELECT(-1592,-1020),
  ABISELECT(-1600,-1024),
  ABISELECT(-3240,-2120),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C36D1Ev,_ZTv0_n56_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C36D0Ev,_ZTv0_n56_N9S20997C36D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C369S20997C33__8S20997C1[] = {
  ABISELECT(-1448,-964),
  ABISELECT(8,4),
  ABISELECT(-1640,-1096),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__A1__9S20997C369S20997C33__8S20997C1[] = {
  0,
  ABISELECT(-1456,-968),
  ABISELECT(-1648,-1100),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev)();
extern void ABISELECT(_ZThn1736_N9S20997C36D1Ev,_ZThn1144_N9S20997C36D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev)();
extern void ABISELECT(_ZThn1736_N9S20997C36D0Ev,_ZThn1144_N9S20997C36D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C369S20997C33__8S20997C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1576,-1044),
  0,
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  ABISELECT(-1736,-1144),
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__A1__9S20997C369S20997C33__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(-1744,-1148),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C209S20997C16__9S20997C369S20997C33__8S20997C1[] = {
  ABISELECT(-3056,-1992),
  ABISELECT(-3248,-2124),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C209S20997C16__A2__9S20997C369S20997C33__8S20997C1[] = {
  ABISELECT(-3104,-2036),
  ABISELECT(-3296,-2168),
  (VTBL_ENTRY)&(_ZTI9S20997C36[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn3224_N9S20997C33D1Ev,_ZThn2112_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn3224_N9S20997C33D0Ev,_ZThn2112_N9S20997C33D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C34__9S20997C33__8S20997C1[] = {
  0,
  ABISELECT(-144,-92),
  ABISELECT(-3224,-2112),
  ABISELECT(-3224,-2112),
  ABISELECT(-144,-92),
  ABISELECT(-3032,-1980),
  ABISELECT(-144,-92),
  ABISELECT(-3224,-2112),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn3080_N9S20997C33D1Ev,_ZThn2020_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn3080_N9S20997C33D0Ev,_ZThn2020_N9S20997C33D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__9S20997C33__8S20997C1[] = {
  0,
  ABISELECT(-2920,-1920),
  ABISELECT(-3080,-2020),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-3080,-2020),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n96_N9S20997C33D1Ev,_ZTv0_n48_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn32_N9S20997C33D1Ev,_ZThn16_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20997C33D0Ev,_ZTv0_n48_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn32_N9S20997C33D0Ev,_ZThn16_N9S20997C33D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C2__9S20997C33__8S20997C1[] = {
  ABISELECT(-32,-16),
  0,
  ABISELECT(1376,924),
  ABISELECT(3048,2004),
  ABISELECT(128,84),
  ABISELECT(3048,2004),
  ABISELECT(-32,-16),
  ABISELECT(200,156),
  ABISELECT(3048,2004),
  ABISELECT(160,116),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20997C33D1Ev,_ZTv0_n48_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20997C33D0Ev,_ZTv0_n48_N9S20997C33D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C33D1Ev,_ZTv0_n28_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn232_N9S20997C33D1Ev,_ZThn172_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C33D0Ev,_ZTv0_n28_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn232_N9S20997C33D0Ev,_ZThn172_N9S20997C33D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C33__8S20997C1[] = {
  ABISELECT(-232,-172),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(-232,-172),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C33D1Ev,_ZTv0_n28_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C33D0Ev,_ZTv0_n28_N9S20997C33D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C33D1Ev,_ZTvn760_n28_N9S20997C33D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C33D0Ev,_ZTvn760_n28_N9S20997C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__A1__9S20997C33__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(-1392,-932),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C33D1Ev,_ZTvn760_n28_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C33D0Ev,_ZTvn760_n28_N9S20997C33D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C33D1Ev,_ZTvn764_n28_N9S20997C33D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C33D0Ev,_ZTvn764_n28_N9S20997C33D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C33__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(-1400,-936),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C33D1Ev,_ZTvn764_n28_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C33D0Ev,_ZTvn764_n28_N9S20997C33D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn1408_N9S20997C33D1Ev,_ZThn940_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn1408_N9S20997C33D0Ev,_ZThn940_N9S20997C33D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C13__A1__9S20997C33__8S20997C1[] = {
  ABISELECT(-1408,-940),
  ABISELECT(1672,1080),
  ABISELECT(-1216,-808),
  ABISELECT(1672,1080),
  ABISELECT(-1408,-940),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n112_N9S20997C33D1Ev,_ZTv0_n56_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn3240_N9S20997C33D1Ev,_ZThn2120_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S20997C33D0Ev,_ZTv0_n56_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn3240_N9S20997C33D0Ev,_ZThn2120_N9S20997C33D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C16__9S20997C33__8S20997C1[] = {
  ABISELECT(-3240,-2120),
  0,
  ABISELECT(-1496,-972),
  ABISELECT(-3240,-2120),
  ABISELECT(-1504,-976),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-1504,-976),
  ABISELECT(-3080,-2020),
  ABISELECT(-3048,-1988),
  ABISELECT(-1592,-1020),
  ABISELECT(-1600,-1024),
  ABISELECT(-3240,-2120),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C33D1Ev,_ZTv0_n56_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C33D0Ev,_ZTv0_n56_N9S20997C33D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C33__8S20997C1[] = {
  ABISELECT(-1448,-964),
  ABISELECT(8,4),
  ABISELECT(-1640,-1096),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__A1__9S20997C33__8S20997C1[] = {
  0,
  ABISELECT(-1456,-968),
  ABISELECT(-1648,-1100),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev)();
extern void ABISELECT(_ZThn1736_N9S20997C33D1Ev,_ZThn1144_N9S20997C33D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev)();
extern void ABISELECT(_ZThn1736_N9S20997C33D0Ev,_ZThn1144_N9S20997C33D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C33__8S20997C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1576,-1044),
  0,
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  ABISELECT(-1736,-1144),
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__A1__9S20997C33__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(-1744,-1148),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C209S20997C16__9S20997C33__8S20997C1[] = {
  ABISELECT(-3056,-1992),
  ABISELECT(-3248,-2124),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C209S20997C16__A2__9S20997C33__8S20997C1[] = {
  ABISELECT(-3104,-2036),
  ABISELECT(-3296,-2168),
  (VTBL_ENTRY)&(_ZTI9S20997C33[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C40D1Ev();
extern void _ZN9S20997C40D0Ev();
extern void _ZN9S20997C402v8Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C40__8S20997C1[] = {
  ABISELECT(1728,1140),
  ABISELECT(152,96),
  ABISELECT(3472,2276),
  ABISELECT(3464,2272),
  ABISELECT(3072,2016),
  ABISELECT(3456,2268),
  ABISELECT(184,128),
  ABISELECT(-8,-4),
  ABISELECT(224,168),
  ABISELECT(3072,2016),
  ABISELECT(1736,1144),
  ABISELECT(3072,2016),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C40D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C40D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C402v8Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C419S20997C40__8S20997C1[] = {
  ABISELECT(3072,2016),
  ABISELECT(1736,1144),
  ABISELECT(3072,2016),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C41[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C419S20997C40__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(-1736,-1144),
  (VTBL_ENTRY)&(_ZTI9S20997C41[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C419S20997C40__8S20997C1[] = {
  0,
  ABISELECT(-3072,-2016),
  (VTBL_ENTRY)&(_ZTI9S20997C41[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev)();
extern void _ZN9S20997C42D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev)();
extern void _ZN9S20997C42D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN9S20997C422v7Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C429S20997C40__8S20997C1[] = {
  ABISELECT(3456,2268),
  ABISELECT(3448,2264),
  ABISELECT(1720,1136),
  ABISELECT(1712,1132),
  ABISELECT(136,88),
  ABISELECT(1712,1132),
  ABISELECT(3056,2008),
  ABISELECT(-24,-12),
  0,
  ABISELECT(3056,2008),
  ABISELECT(168,120),
  ABISELECT(3056,2008),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  (VTBL_ENTRY)&_ZN9S20997C422v7Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void _ZN9S20997C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void _ZN9S20997C18D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C189S20997C429S20997C40__A1__8S20997C1[] = {
  ABISELECT(1720,1136),
  ABISELECT(1712,1132),
  ABISELECT(136,88),
  ABISELECT(1712,1132),
  ABISELECT(3056,2008),
  ABISELECT(-24,-12),
  0,
  ABISELECT(3056,2008),
  ABISELECT(168,120),
  ABISELECT(3056,2008),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void ABISELECT(_ZThn3056_N9S20997C18D1Ev,_ZThn2008_N9S20997C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void ABISELECT(_ZThn3056_N9S20997C18D0Ev,_ZThn2008_N9S20997C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C189S20997C429S20997C40__A1__8S20997C1[] = {
  ABISELECT(-3056,-2008),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-3056,-2008),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void ABISELECT(_ZThn1712_N9S20997C18D1Ev,_ZThn1132_N9S20997C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void ABISELECT(_ZThn1712_N9S20997C18D0Ev,_ZThn1132_N9S20997C18D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__9S20997C189S20997C429S20997C40__A1__8S20997C1[] = {
  0,
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  ABISELECT(-1712,-1132),
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  ABISELECT(-1712,-1132),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C189S20997C429S20997C40__A1__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(-1720,-1136),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev)();
extern void ABISELECT(_ZThn3448_N9S20997C42D1Ev,_ZThn2264_N9S20997C42D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev)();
extern void ABISELECT(_ZThn3448_N9S20997C42D0Ev,_ZThn2264_N9S20997C42D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C43__9S20997C429S20997C40__8S20997C1[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-392,-256),
  ABISELECT(-3472,-2276),
  ABISELECT(-3448,-2264),
  ABISELECT(-392,-256),
  ABISELECT(-3280,-2144),
  ABISELECT(-392,-256),
  ABISELECT(-3448,-2264),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev)();
extern void ABISELECT(_ZThn3056_N9S20997C42D1Ev,_ZThn2008_N9S20997C42D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev)();
extern void ABISELECT(_ZThn3056_N9S20997C42D0Ev,_ZThn2008_N9S20997C42D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C429S20997C40__8S20997C1[] = {
  ABISELECT(-3056,-2008),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-3056,-2008),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C79S20997C21__A1__9S20997C429S20997C40__8S20997C1[] = {
  0,
  ABISELECT(-3456,-2268),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev)();
extern void ABISELECT(_ZThn1712_N9S20997C42D1Ev,_ZThn1132_N9S20997C42D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev)();
extern void ABISELECT(_ZThn1712_N9S20997C42D0Ev,_ZThn1132_N9S20997C42D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__A1__9S20997C429S20997C40__8S20997C1[] = {
  0,
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  ABISELECT(-1712,-1132),
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  ABISELECT(-1712,-1132),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C429S20997C40__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(-1720,-1136),
  (VTBL_ENTRY)&(_ZTI9S20997C42[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C40D1Ev,_ZTv0_n28_N9S20997C40D1Ev)();
extern void ABISELECT(_ZThn224_N9S20997C40D1Ev,_ZThn168_N9S20997C40D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20997C40D0Ev,_ZTv0_n28_N9S20997C40D0Ev)();
extern void ABISELECT(_ZThn224_N9S20997C40D0Ev,_ZThn168_N9S20997C40D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C40__8S20997C1[] = {
  ABISELECT(-224,-168),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(-224,-168),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C40D1Ev,_ZTv0_n28_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C40D0Ev,_ZTv0_n28_N9S20997C40D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev)();
extern void ABISELECT(_ZThn3072_N9S20997C40D1Ev,_ZThn2016_N9S20997C40D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev)();
extern void ABISELECT(_ZThn3072_N9S20997C40D0Ev,_ZThn2016_N9S20997C40D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__A2__9S20997C40__8S20997C1[] = {
  ABISELECT(-3072,-2016),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-3072,-2016),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C40D1Ev,_ZTvn760_n28_N9S20997C40D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C40D0Ev,_ZTvn760_n28_N9S20997C40D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C40__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(-1384,-928),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C40D1Ev,_ZTvn760_n28_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C40D0Ev,_ZTvn760_n28_N9S20997C40D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C40D1Ev,_ZTvn764_n28_N9S20997C40D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C40D0Ev,_ZTvn764_n28_N9S20997C40D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C40__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(-1392,-932),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C40D1Ev,_ZTvn764_n28_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C40D0Ev,_ZTvn764_n28_N9S20997C40D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev)();
extern void ABISELECT(_ZThn3456_N9S20997C40D1Ev,_ZThn2268_N9S20997C40D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev)();
extern void ABISELECT(_ZThn3456_N9S20997C40D0Ev,_ZThn2268_N9S20997C40D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C35__9S20997C40__8S20997C1[] = {
  0,
  ABISELECT(-384,-252),
  ABISELECT(-3464,-2272),
  ABISELECT(-3456,-2268),
  ABISELECT(-384,-252),
  ABISELECT(-3272,-2140),
  ABISELECT(-384,-252),
  ABISELECT(-3456,-2268),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__A1__9S20997C40__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(-1736,-1144),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev)();
extern void ABISELECT(_ZThn16_N9S20997C40D1Ev,_ZThn8_N9S20997C40D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev)();
extern void ABISELECT(_ZThn16_N9S20997C40D0Ev,_ZThn8_N9S20997C40D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
extern void _ZN9S20997C422v7Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C42__9S20997C40__8S20997C1[] = {
  ABISELECT(3456,2268),
  ABISELECT(3448,2264),
  ABISELECT(1720,1136),
  ABISELECT(1712,1132),
  ABISELECT(136,88),
  ABISELECT(1712,1132),
  ABISELECT(3056,2008),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  ABISELECT(3056,2008),
  ABISELECT(168,120),
  ABISELECT(3056,2008),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
  (VTBL_ENTRY)&_ZN9S20997C422v7Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev)();
extern void ABISELECT(_ZThn3464_N9S20997C40D1Ev,_ZThn2272_N9S20997C40D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev)();
extern void ABISELECT(_ZThn3464_N9S20997C40D0Ev,_ZThn2272_N9S20997C40D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C43__9S20997C40__8S20997C1[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-392,-256),
  ABISELECT(-3472,-2276),
  ABISELECT(-3464,-2272),
  ABISELECT(-392,-256),
  ABISELECT(-3280,-2144),
  ABISELECT(-392,-256),
  ABISELECT(-3464,-2272),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C79S20997C21__A1__9S20997C40__8S20997C1[] = {
  0,
  ABISELECT(-3472,-2276),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev)();
extern void ABISELECT(_ZThn1728_N9S20997C40D1Ev,_ZThn1140_N9S20997C40D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev)();
extern void ABISELECT(_ZThn1728_N9S20997C40D0Ev,_ZThn1140_N9S20997C40D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__A2__9S20997C40__8S20997C1[] = {
  0,
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  ABISELECT(-1728,-1140),
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  ABISELECT(-1728,-1140),
  (VTBL_ENTRY)&(_ZTI9S20997C40[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C2D1Ev();
extern void _ZN8S20997C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C2__8S20997C1[] = {
  ABISELECT(1376,924),
  ABISELECT(3048,2004),
  ABISELECT(128,84),
  ABISELECT(3048,2004),
  ABISELECT(-32,-16),
  ABISELECT(200,156),
  ABISELECT(3048,2004),
  ABISELECT(160,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C2D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C98S20997C2__8S20997C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(200,156),
  ABISELECT(3048,2004),
  ABISELECT(160,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C108S20997C98S20997C2__8S20997C1[] = {
  ABISELECT(160,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C98S20997C2__8S20997C1[] = {
  0,
  ABISELECT(-3048,-2004),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZThn200_N8S20997C9D1Ev,_ZThn156_N8S20997C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
extern void ABISELECT(_ZThn200_N8S20997C9D0Ev,_ZThn156_N8S20997C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C98S20997C2__8S20997C1[] = {
  ABISELECT(-200,-156),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(-200,-156),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C98S20997C2__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(-1360,-916),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C98S20997C2__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(-1368,-920),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev)();
extern void ABISELECT(_ZThn3048_N8S20997C2D1Ev,_ZThn2004_N8S20997C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev)();
extern void ABISELECT(_ZThn3048_N8S20997C2D0Ev,_ZThn2004_N8S20997C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__8S20997C2__8S20997C1[] = {
  0,
  ABISELECT(-2920,-1920),
  ABISELECT(-3048,-2004),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-3048,-2004),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C2D1Ev,_ZTv0_n28_N8S20997C2D1Ev)();
extern void ABISELECT(_ZThn200_N8S20997C2D1Ev,_ZThn156_N8S20997C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20997C2D0Ev,_ZTv0_n28_N8S20997C2D0Ev)();
extern void ABISELECT(_ZThn200_N8S20997C2D0Ev,_ZThn156_N8S20997C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C2__8S20997C1[] = {
  ABISELECT(-200,-156),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(-200,-156),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C2D1Ev,_ZTv0_n28_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C2D0Ev,_ZTv0_n28_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C2D1Ev,_ZTvn760_n28_N8S20997C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C2D0Ev,_ZTvn760_n28_N8S20997C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__A1__8S20997C2__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(-1360,-916),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C2D1Ev,_ZTvn760_n28_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C2D0Ev,_ZTvn760_n28_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C2D1Ev,_ZTvn764_n28_N8S20997C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C2D0Ev,_ZTvn764_n28_N8S20997C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C2__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(-1368,-920),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C2D1Ev,_ZTvn764_n28_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C2D0Ev,_ZTvn764_n28_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev)();
extern void ABISELECT(_ZThn1376_N8S20997C2D1Ev,_ZThn924_N8S20997C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev)();
extern void ABISELECT(_ZThn1376_N8S20997C2D0Ev,_ZThn924_N8S20997C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C13__A1__8S20997C2__8S20997C1[] = {
  ABISELECT(-1376,-924),
  ABISELECT(1672,1080),
  ABISELECT(-1216,-808),
  ABISELECT(1672,1080),
  ABISELECT(-1376,-924),
  (VTBL_ENTRY)&(_ZTI8S20997C2[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev)();
extern void _ZN8S20997C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev)();
extern void _ZN8S20997C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C3__8S20997C1[] = {
  0,
  ABISELECT(-2920,-1920),
  0,
  0,
  ABISELECT(-2888,-1888),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C3[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C5__8S20997C1[] = {
  0,
  ABISELECT(-2888,-1888),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C11D1Ev();
extern void _ZN9S20997C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C1[] = {
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C11D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C129S20997C11__8S20997C1[] = {
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C129S20997C11__8S20997C1[] = {
  0,
  ABISELECT(-2848,-1848),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__A1__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C11__A1__8S20997C1[] = {
  0,
  ABISELECT(-1688,-1088),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C139S20997C11__A2__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A2__8S20997C1[] = {
  0,
  ABISELECT(-1680,-1084),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C139S20997C11__8S20997C1[] = {
  0,
  ABISELECT(-1680,-1084),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C11__8S20997C1[] = {
  0,
  ABISELECT(-2848,-1848),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C11__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D1Ev,_ZThn760_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20997C11D0Ev,_ZThn760_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C13__9S20997C11__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20997C11[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D1Ev,_ZThn764_N9S20997C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20997C11D0Ev,_ZThn764_N9S20997C11D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C13D1Ev();
extern void _ZN9S20997C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C13__A1__8S20997C1[] = {
  ABISELECT(1672,1080),
  ABISELECT(-1216,-808),
  ABISELECT(1672,1080),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C13D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C5D1Ev();
extern void _ZN8S20997C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C13__A3__8S20997C1[] = {
  ABISELECT(1672,1080),
  ABISELECT(-1216,-808),
  ABISELECT(1672,1080),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C5D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C59S20997C13__A3__8S20997C1[] = {
  0,
  ABISELECT(-1672,-1080),
  (VTBL_ENTRY)&(_ZTI8S20997C5[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C13__A1__8S20997C1[] = {
  0,
  ABISELECT(-1672,-1080),
  (VTBL_ENTRY)&(_ZTI9S20997C13[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C14D1Ev();
extern void _ZN9S20997C14D0Ev();
extern void _ZN9S20997C322v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C14__8S20997C1[] = {
  ABISELECT(-1424,-944),
  ABISELECT(1664,1080),
  ABISELECT(1656,1076),
  ABISELECT(1656,1076),
  ABISELECT(1504,976),
  ABISELECT(1488,968),
  ABISELECT(1480,964),
  ABISELECT(320,204),
  ABISELECT(312,200),
  ABISELECT(1656,1076),
  ABISELECT(312,200),
  ABISELECT(-1264,-844),
  ABISELECT(224,156),
  ABISELECT(216,152),
  ABISELECT(64,56),
  ABISELECT(-1424,-944),
  ABISELECT(-1192,-772),
  ABISELECT(-1232,-812),
  ABISELECT(1656,1076),
  ABISELECT(1568,1032),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C14D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C322v4Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C31D1Ev();
extern void _ZN9S20997C31D0Ev();
extern void _ZN9S20997C322v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C319S20997C14__8S20997C1[] = {
  ABISELECT(-1424,-944),
  ABISELECT(-1192,-772),
  ABISELECT(-1232,-812),
  ABISELECT(1656,1076),
  ABISELECT(1568,1032),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C31D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C31D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C322v4Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C32D1Ev();
extern void _ZN9S20997C32D0Ev();
extern void _ZN9S20997C322v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C329S20997C319S20997C14__8S20997C1[] = {
  ABISELECT(-1424,-944),
  ABISELECT(-1192,-772),
  ABISELECT(-1232,-812),
  ABISELECT(1656,1076),
  ABISELECT(1568,1032),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C32D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C32D0Ev,
  (VTBL_ENTRY)&_ZN9S20997C322v4Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C25D1Ev();
extern void _ZN9S20997C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C259S20997C329S20997C319S20997C14__A1__8S20997C1[] = {
  ABISELECT(-1424,-944),
  ABISELECT(-1192,-772),
  ABISELECT(-1232,-812),
  ABISELECT(1656,1076),
  ABISELECT(1568,1032),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn1568_N9S20997C25D1Ev,_ZThn1032_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn1568_N9S20997C25D0Ev,_ZThn1032_N9S20997C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C259S20997C329S20997C319S20997C14__A1__8S20997C1[] = {
  ABISELECT(-1568,-1032),
  0,
  ABISELECT(-2992,-1976),
  ABISELECT(-2760,-1804),
  ABISELECT(88,44),
  ABISELECT(-2800,-1844),
  ABISELECT(-1568,-1032),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C259S20997C329S20997C319S20997C14__A1__8S20997C1[] = {
  0,
  ABISELECT(-1656,-1076),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C259S20997C329S20997C319S20997C14__A1__8S20997C1[] = {
  ABISELECT(1192,772),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(1192,772),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C259S20997C329S20997C319S20997C14__A1__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C259S20997C329S20997C319S20997C14__A1__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C32D1Ev,_ZTv0_n32_N9S20997C32D1Ev)();
extern void ABISELECT(_ZThn1568_N9S20997C32D1Ev,_ZThn1032_N9S20997C32D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C32D0Ev,_ZTv0_n32_N9S20997C32D0Ev)();
extern void ABISELECT(_ZThn1568_N9S20997C32D0Ev,_ZThn1032_N9S20997C32D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C329S20997C319S20997C14__8S20997C1[] = {
  ABISELECT(-1568,-1032),
  0,
  ABISELECT(-2992,-1976),
  ABISELECT(-2760,-1804),
  ABISELECT(88,44),
  ABISELECT(-2800,-1844),
  ABISELECT(-1568,-1032),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C32D1Ev,_ZTv0_n32_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C32D0Ev,_ZTv0_n32_N9S20997C32D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C329S20997C319S20997C14__8S20997C1[] = {
  0,
  ABISELECT(-1656,-1076),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C32D1Ev,_ZTv0_n28_N9S20997C32D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20997C32D0Ev,_ZTv0_n28_N9S20997C32D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C329S20997C319S20997C14__8S20997C1[] = {
  ABISELECT(1192,772),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(1192,772),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C32D1Ev,_ZTv0_n28_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C32D0Ev,_ZTv0_n28_N9S20997C32D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C32D1Ev,_ZTvn760_n28_N9S20997C32D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C32D0Ev,_ZTvn760_n28_N9S20997C32D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C329S20997C319S20997C14__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C32D1Ev,_ZTvn760_n28_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C32D0Ev,_ZTvn760_n28_N9S20997C32D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C32D1Ev,_ZTvn764_n28_N9S20997C32D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C32D0Ev,_ZTvn764_n28_N9S20997C32D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C329S20997C319S20997C14__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S20997C32[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C32D1Ev,_ZTvn764_n28_N9S20997C32D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C32D0Ev,_ZTvn764_n28_N9S20997C32D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C31D1Ev,_ZTv0_n32_N9S20997C31D1Ev)();
extern void ABISELECT(_ZThn1568_N9S20997C31D1Ev,_ZThn1032_N9S20997C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C31D0Ev,_ZTv0_n32_N9S20997C31D0Ev)();
extern void ABISELECT(_ZThn1568_N9S20997C31D0Ev,_ZThn1032_N9S20997C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C319S20997C14__8S20997C1[] = {
  ABISELECT(-1568,-1032),
  0,
  ABISELECT(-2992,-1976),
  ABISELECT(-2760,-1804),
  ABISELECT(88,44),
  ABISELECT(-2800,-1844),
  ABISELECT(-1568,-1032),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C31D1Ev,_ZTv0_n32_N9S20997C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C31D0Ev,_ZTv0_n32_N9S20997C31D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C319S20997C14__8S20997C1[] = {
  0,
  ABISELECT(-1656,-1076),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C31D1Ev,_ZTv0_n28_N9S20997C31D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20997C31D0Ev,_ZTv0_n28_N9S20997C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C319S20997C14__8S20997C1[] = {
  ABISELECT(1192,772),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(1192,772),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C31D1Ev,_ZTv0_n28_N9S20997C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C31D0Ev,_ZTv0_n28_N9S20997C31D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C31D1Ev,_ZTvn760_n28_N9S20997C31D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C31D0Ev,_ZTvn760_n28_N9S20997C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C319S20997C14__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C31D1Ev,_ZTvn760_n28_N9S20997C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C31D0Ev,_ZTvn760_n28_N9S20997C31D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C31D1Ev,_ZTvn764_n28_N9S20997C31D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C31D0Ev,_ZTvn764_n28_N9S20997C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C319S20997C14__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S20997C31[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C31D1Ev,_ZTvn764_n28_N9S20997C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C31D0Ev,_ZTvn764_n28_N9S20997C31D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n112_N9S20997C14D1Ev,_ZTv0_n56_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C14D1Ev,_ZThn56_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N9S20997C14D0Ev,_ZTv0_n56_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C14D0Ev,_ZThn56_N9S20997C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C15__9S20997C14__8S20997C1[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(256,148),
  ABISELECT(-1488,-1000),
  ABISELECT(248,144),
  ABISELECT(1592,1020),
  ABISELECT(1592,1020),
  ABISELECT(248,144),
  ABISELECT(-1328,-900),
  ABISELECT(-1296,-868),
  ABISELECT(160,100),
  ABISELECT(152,96),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C14D1Ev,_ZTv0_n56_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N9S20997C14D0Ev,_ZTv0_n56_N9S20997C14D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C14__8S20997C1[] = {
  ABISELECT(-1448,-964),
  ABISELECT(8,4),
  ABISELECT(-216,-152),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C14__8S20997C1[] = {
  0,
  ABISELECT(-1456,-968),
  ABISELECT(-224,-156),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C14D1Ev,_ZTv0_n24_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn312_N9S20997C14D1Ev,_ZThn200_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C14D0Ev,_ZTv0_n24_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn312_N9S20997C14D0Ev,_ZThn200_N9S20997C14D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C14__8S20997C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1576,-1044),
  0,
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  ABISELECT(-312,-200),
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  ABISELECT(-312,-200),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C14D1Ev,_ZTv0_n24_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C14D0Ev,_ZTv0_n24_N9S20997C14D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C14D1Ev,_ZTv0_n24_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn1656_N9S20997C14D1Ev,_ZThn1076_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C14D0Ev,_ZTv0_n24_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn1656_N9S20997C14D0Ev,_ZThn1076_N9S20997C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C27__9S20997C14__8S20997C1[] = {
  ABISELECT(-3080,-2020),
  ABISELECT(8,4),
  0,
  ABISELECT(-1432,-920),
  0,
  ABISELECT(-2920,-1920),
  ABISELECT(-1656,-1076),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-1656,-1076),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C14D1Ev,_ZTv0_n24_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C14D0Ev,_ZTv0_n24_N9S20997C14D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C14__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(-320,-204),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C209S20997C169S20997C15__9S20997C14__8S20997C1[] = {
  ABISELECT(-1304,-872),
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C209S20997C169S20997C15__A1__9S20997C14__8S20997C1[] = {
  ABISELECT(-1352,-916),
  ABISELECT(-120,-104),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n168_N9S20997C14D1Ev,_ZTv0_n84_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn1480_N9S20997C14D1Ev,_ZThn964_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N9S20997C14D0Ev,_ZTv0_n84_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn1480_N9S20997C14D0Ev,_ZThn964_N9S20997C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C22__9S20997C14__8S20997C1[] = {
  ABISELECT(-1480,-964),
  ABISELECT(-1160,-760),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  ABISELECT(-2904,-1908),
  ABISELECT(184,116),
  ABISELECT(176,112),
  ABISELECT(-2744,-1808),
  ABISELECT(176,112),
  ABISELECT(176,112),
  ABISELECT(88,68),
  ABISELECT(24,12),
  ABISELECT(176,112),
  ABISELECT(-2904,-1908),
  ABISELECT(-2672,-1736),
  ABISELECT(8,4),
  ABISELECT(-2712,-1776),
  ABISELECT(-1256,-808),
  ABISELECT(176,112),
  ABISELECT(-1480,-964),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N9S20997C14D1Ev,_ZTv0_n84_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N9S20997C14D0Ev,_ZTv0_n84_N9S20997C14D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n80_N9S20997C14D1Ev,_ZTv0_n40_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn1488_N9S20997C14D1Ev,_ZThn968_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20997C14D0Ev,_ZTv0_n40_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn1488_N9S20997C14D0Ev,_ZThn968_N9S20997C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C24__9S20997C14__8S20997C1[] = {
  ABISELECT(-1488,-968),
  ABISELECT(80,64),
  ABISELECT(16,8),
  ABISELECT(168,108),
  ABISELECT(-2912,-1912),
  ABISELECT(-2680,-1740),
  ABISELECT(-2720,-1780),
  ABISELECT(168,108),
  ABISELECT(-1488,-968),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C14D1Ev,_ZTv0_n40_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C14D0Ev,_ZTv0_n40_N9S20997C14D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C14D1Ev,_ZTv0_n28_N9S20997C14D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20997C14D0Ev,_ZTv0_n28_N9S20997C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C14__8S20997C1[] = {
  ABISELECT(1192,772),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(1192,772),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C14D1Ev,_ZTv0_n28_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C14D0Ev,_ZTv0_n28_N9S20997C14D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C14D1Ev,_ZTvn760_n28_N9S20997C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C14D0Ev,_ZTvn760_n28_N9S20997C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__A1__9S20997C14__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(32,12),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C14D1Ev,_ZTvn760_n28_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C14D0Ev,_ZTvn760_n28_N9S20997C14D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C14D1Ev,_ZTvn764_n28_N9S20997C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C14D0Ev,_ZTvn764_n28_N9S20997C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C14__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C14D1Ev,_ZTvn764_n28_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C14D0Ev,_ZTvn764_n28_N9S20997C14D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C14D1Ev,_ZTv0_n36_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn1504_N9S20997C14D1Ev,_ZThn976_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C14D0Ev,_ZTv0_n36_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn1504_N9S20997C14D0Ev,_ZThn976_N9S20997C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C14__8S20997C1[] = {
  ABISELECT(-1504,-976),
  0,
  ABISELECT(-2928,-1920),
  ABISELECT(-2696,-1748),
  ABISELECT(-2736,-1788),
  ABISELECT(152,100),
  ABISELECT(64,56),
  ABISELECT(-1504,-976),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C14D1Ev,_ZTv0_n36_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C14D0Ev,_ZTv0_n36_N9S20997C14D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C14D1Ev,_ZTv0_n32_N9S20997C14D1Ev)();
extern void ABISELECT(_ZThn1568_N9S20997C14D1Ev,_ZThn1032_N9S20997C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C14D0Ev,_ZTv0_n32_N9S20997C14D0Ev)();
extern void ABISELECT(_ZThn1568_N9S20997C14D0Ev,_ZThn1032_N9S20997C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C14__8S20997C1[] = {
  ABISELECT(-1568,-1032),
  0,
  ABISELECT(-2992,-1976),
  ABISELECT(-2760,-1804),
  ABISELECT(88,44),
  ABISELECT(-2800,-1844),
  ABISELECT(-1568,-1032),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C14D1Ev,_ZTv0_n32_N9S20997C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C14D0Ev,_ZTv0_n32_N9S20997C14D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__A1__9S20997C14__8S20997C1[] = {
  0,
  ABISELECT(-2896,-1892),
  ABISELECT(-1664,-1080),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A3__9S20997C14__8S20997C1[] = {
  ABISELECT(-2944,-1936),
  ABISELECT(-1712,-1124),
  (VTBL_ENTRY)&(_ZTI9S20997C14[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C15D1Ev();
extern void _ZN9S20997C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C15__8S20997C1[] = {
  ABISELECT(256,148),
  ABISELECT(-1488,-1000),
  ABISELECT(248,144),
  ABISELECT(1592,1020),
  ABISELECT(1592,1020),
  ABISELECT(248,144),
  ABISELECT(-1328,-900),
  ABISELECT(-1296,-868),
  ABISELECT(160,100),
  ABISELECT(152,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C15D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C16D1Ev();
extern void _ZN9S20997C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C169S20997C15__8S20997C1[] = {
  ABISELECT(256,148),
  ABISELECT(-1488,-1000),
  ABISELECT(248,144),
  ABISELECT(1592,1020),
  ABISELECT(1592,1020),
  ABISELECT(248,144),
  ABISELECT(-1328,-900),
  ABISELECT(-1296,-868),
  ABISELECT(160,100),
  ABISELECT(152,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C209S20997C169S20997C15__8S20997C1[] = {
  ABISELECT(-1304,-872),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C209S20997C169S20997C15__A2__8S20997C1[] = {
  ABISELECT(-1352,-916),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C209S20997C169S20997C15__8S20997C1[] = {
  ABISELECT(-1352,-916),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C169S20997C15__8S20997C1[] = {
  ABISELECT(-1448,-964),
  ABISELECT(8,4),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C169S20997C15__8S20997C1[] = {
  0,
  ABISELECT(-1456,-968),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev)();
extern void ABISELECT(_ZThn248_N9S20997C16D1Ev,_ZThn144_N9S20997C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev)();
extern void ABISELECT(_ZThn248_N9S20997C16D0Ev,_ZThn144_N9S20997C16D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C169S20997C15__8S20997C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1576,-1044),
  0,
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  ABISELECT(-248,-144),
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev)();
extern void ABISELECT(_ZThn1592_N9S20997C16D1Ev,_ZThn1020_N9S20997C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev)();
extern void ABISELECT(_ZThn1592_N9S20997C16D0Ev,_ZThn1020_N9S20997C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C169S20997C15__8S20997C1[] = {
  ABISELECT(-1592,-1020),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-1592,-1020),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C169S20997C15__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C169S20997C15__8S20997C1[] = {
  ABISELECT(-1304,-872),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A1__9S20997C169S20997C15__8S20997C1[] = {
  ABISELECT(-1352,-916),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C15__8S20997C1[] = {
  ABISELECT(-1448,-964),
  ABISELECT(8,4),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C15__8S20997C1[] = {
  0,
  ABISELECT(-1456,-968),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C15D1Ev,_ZTv0_n24_N9S20997C15D1Ev)();
extern void ABISELECT(_ZThn248_N9S20997C15D1Ev,_ZThn144_N9S20997C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C15D0Ev,_ZTv0_n24_N9S20997C15D0Ev)();
extern void ABISELECT(_ZThn248_N9S20997C15D0Ev,_ZThn144_N9S20997C15D0Ev)() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C15__8S20997C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1576,-1044),
  0,
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  ABISELECT(-248,-144),
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C15D1Ev,_ZTv0_n24_N9S20997C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C15D0Ev,_ZTv0_n24_N9S20997C15D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C15D1Ev,_ZTv0_n24_N9S20997C15D1Ev)();
extern void ABISELECT(_ZThn1592_N9S20997C15D1Ev,_ZThn1020_N9S20997C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C15D0Ev,_ZTv0_n24_N9S20997C15D0Ev)();
extern void ABISELECT(_ZThn1592_N9S20997C15D0Ev,_ZThn1020_N9S20997C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C15__8S20997C1[] = {
  ABISELECT(-1592,-1020),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-1592,-1020),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C15D1Ev,_ZTv0_n24_N9S20997C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C15D0Ev,_ZTv0_n24_N9S20997C15D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C15__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C209S20997C16__9S20997C15__8S20997C1[] = {
  ABISELECT(-1304,-872),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C209S20997C16__A1__9S20997C15__8S20997C1[] = {
  ABISELECT(-1352,-916),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C15[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__8S20997C1[] = {
  ABISELECT(-1448,-964),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C17__8S20997C1[] = {
  0,
  ABISELECT(-1456,-968),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C17[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__A1__8S20997C1[] = {
  ABISELECT(-1456,-968),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void _ZN9S20997C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void _ZN9S20997C18D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__8S20997C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1576,-1044),
  0,
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  0,
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev)();
extern void ABISELECT(_ZThn1344_N9S20997C18D1Ev,_ZThn876_N9S20997C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev)();
extern void ABISELECT(_ZThn1344_N9S20997C18D0Ev,_ZThn876_N9S20997C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C18__8S20997C1[] = {
  ABISELECT(-1344,-876),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-1344,-876),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C18__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C18[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C19__8S20997C1[] = {
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  0,
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZThn1344_N9S20997C19D1Ev,_ZThn876_N9S20997C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void ABISELECT(_ZThn1344_N9S20997C19D0Ev,_ZThn876_N9S20997C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C19__8S20997C1[] = {
  ABISELECT(-1344,-876),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-1344,-876),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__A1__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C12__A1__8S20997C1[] = {
  0,
  ABISELECT(-1336,-872),
  (VTBL_ENTRY)&(_ZTI9S20997C12[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C22D1Ev();
extern void _ZN9S20997C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C22__8S20997C1[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  ABISELECT(-2904,-1908),
  ABISELECT(184,116),
  ABISELECT(176,112),
  ABISELECT(-2744,-1808),
  ABISELECT(176,112),
  ABISELECT(176,112),
  ABISELECT(88,68),
  ABISELECT(24,12),
  ABISELECT(176,112),
  ABISELECT(-2904,-1908),
  ABISELECT(-2672,-1736),
  ABISELECT(8,4),
  ABISELECT(-2712,-1776),
  ABISELECT(-1256,-808),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C22D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C23D1Ev();
extern void _ZN9S20997C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C239S20997C22__8S20997C1[] = {
  ABISELECT(88,68),
  ABISELECT(24,12),
  ABISELECT(176,112),
  ABISELECT(-2904,-1908),
  ABISELECT(-2672,-1736),
  ABISELECT(8,4),
  ABISELECT(-2712,-1776),
  ABISELECT(-1256,-808),
  ABISELECT(176,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C23D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C239S20997C22__8S20997C1[] = {
  0,
  ABISELECT(-1456,-968),
  ABISELECT(1256,808),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n80_N9S20997C23D1Ev,_ZTv0_n40_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn8_N9S20997C23D1Ev,_ZThn4_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20997C23D0Ev,_ZTv0_n40_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn8_N9S20997C23D0Ev,_ZThn4_N9S20997C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C24__9S20997C239S20997C22__8S20997C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(80,64),
  ABISELECT(16,8),
  ABISELECT(168,108),
  ABISELECT(-2912,-1912),
  ABISELECT(-2680,-1740),
  ABISELECT(-2720,-1780),
  ABISELECT(168,108),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C23D1Ev,_ZTv0_n40_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C23D0Ev,_ZTv0_n40_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C23D1Ev,_ZTv0_n28_N9S20997C23D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20997C23D0Ev,_ZTv0_n28_N9S20997C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C239S20997C22__8S20997C1[] = {
  ABISELECT(2672,1736),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(2672,1736),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C23D1Ev,_ZTv0_n28_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C23D0Ev,_ZTv0_n28_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__A1__9S20997C239S20997C22__8S20997C1[] = {
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C23D1Ev,_ZTvn760_n28_N9S20997C23D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C23D0Ev,_ZTvn760_n28_N9S20997C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C239S20997C22__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(1512,976),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C23D1Ev,_ZTvn760_n28_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C23D0Ev,_ZTvn760_n28_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C23D1Ev,_ZTvn764_n28_N9S20997C23D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C23D0Ev,_ZTvn764_n28_N9S20997C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C239S20997C22__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(1504,972),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C23D1Ev,_ZTvn764_n28_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C23D0Ev,_ZTvn764_n28_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C23D1Ev,_ZTv0_n36_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn24_N9S20997C23D1Ev,_ZThn12_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C23D0Ev,_ZTv0_n36_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn24_N9S20997C23D0Ev,_ZThn12_N9S20997C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C239S20997C22__8S20997C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-2928,-1920),
  ABISELECT(-2696,-1748),
  ABISELECT(-2736,-1788),
  ABISELECT(152,100),
  ABISELECT(64,56),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C23D1Ev,_ZTv0_n36_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C23D0Ev,_ZTv0_n36_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C23D1Ev,_ZTv0_n32_N9S20997C23D1Ev)();
extern void ABISELECT(_ZThn88_N9S20997C23D1Ev,_ZThn68_N9S20997C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C23D0Ev,_ZTv0_n32_N9S20997C23D0Ev)();
extern void ABISELECT(_ZThn88_N9S20997C23D0Ev,_ZThn68_N9S20997C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C239S20997C22__8S20997C1[] = {
  ABISELECT(-88,-68),
  0,
  ABISELECT(-2992,-1976),
  ABISELECT(-2760,-1804),
  ABISELECT(88,44),
  ABISELECT(-2800,-1844),
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S20997C23[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C23D1Ev,_ZTv0_n32_N9S20997C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C23D0Ev,_ZTv0_n32_N9S20997C23D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C22__8S20997C1[] = {
  0,
  ABISELECT(-1456,-968),
  ABISELECT(1256,808),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n80_N9S20997C22D1Ev,_ZTv0_n40_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn8_N9S20997C22D1Ev,_ZThn4_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S20997C22D0Ev,_ZTv0_n40_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn8_N9S20997C22D0Ev,_ZThn4_N9S20997C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C24__9S20997C22__8S20997C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(80,64),
  ABISELECT(16,8),
  ABISELECT(168,108),
  ABISELECT(-2912,-1912),
  ABISELECT(-2680,-1740),
  ABISELECT(-2720,-1780),
  ABISELECT(168,108),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C22D1Ev,_ZTv0_n40_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S20997C22D0Ev,_ZTv0_n40_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C22D1Ev,_ZTv0_n28_N9S20997C22D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20997C22D0Ev,_ZTv0_n28_N9S20997C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C22__8S20997C1[] = {
  ABISELECT(2672,1736),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(2672,1736),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C22D1Ev,_ZTv0_n28_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C22D0Ev,_ZTv0_n28_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn176_N9S20997C22D1Ev,_ZThn112_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn176_N9S20997C22D0Ev,_ZThn112_N9S20997C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C27__9S20997C22__8S20997C1[] = {
  ABISELECT(-3080,-2020),
  ABISELECT(8,4),
  0,
  ABISELECT(-1432,-920),
  0,
  ABISELECT(-2920,-1920),
  ABISELECT(-176,-112),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(-176,-112),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C22D1Ev,_ZTvn760_n28_N9S20997C22D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C22D0Ev,_ZTvn760_n28_N9S20997C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C22__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(1512,976),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C22D1Ev,_ZTvn760_n28_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C22D0Ev,_ZTvn760_n28_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C22D1Ev,_ZTvn764_n28_N9S20997C22D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C22D0Ev,_ZTvn764_n28_N9S20997C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C22__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(1504,972),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C22D1Ev,_ZTvn764_n28_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C22D0Ev,_ZTvn764_n28_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C22D1Ev,_ZTv0_n36_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn24_N9S20997C22D1Ev,_ZThn12_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C22D0Ev,_ZTv0_n36_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn24_N9S20997C22D0Ev,_ZThn12_N9S20997C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C22__8S20997C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-2928,-1920),
  ABISELECT(-2696,-1748),
  ABISELECT(-2736,-1788),
  ABISELECT(152,100),
  ABISELECT(64,56),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C22D1Ev,_ZTv0_n36_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C22D0Ev,_ZTv0_n36_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C22D1Ev,_ZTv0_n32_N9S20997C22D1Ev)();
extern void ABISELECT(_ZThn88_N9S20997C22D1Ev,_ZThn68_N9S20997C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C22D0Ev,_ZTv0_n32_N9S20997C22D0Ev)();
extern void ABISELECT(_ZThn88_N9S20997C22D0Ev,_ZThn68_N9S20997C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C22__8S20997C1[] = {
  ABISELECT(-88,-68),
  0,
  ABISELECT(-2992,-1976),
  ABISELECT(-2760,-1804),
  ABISELECT(88,44),
  ABISELECT(-2800,-1844),
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C22D1Ev,_ZTv0_n32_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C22D0Ev,_ZTv0_n32_N9S20997C22D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C22__8S20997C1[] = {
  0,
  ABISELECT(-2896,-1892),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A2__9S20997C22__8S20997C1[] = {
  ABISELECT(-2944,-1936),
  ABISELECT(-232,-160),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev)();
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C22__8S20997C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1576,-1044),
  0,
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  ABISELECT(1168,764),
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__A1__9S20997C22__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S20997C22[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C24D1Ev();
extern void _ZN9S20997C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C24__8S20997C1[] = {
  ABISELECT(80,64),
  ABISELECT(16,8),
  ABISELECT(168,108),
  ABISELECT(-2912,-1912),
  ABISELECT(-2680,-1740),
  ABISELECT(-2720,-1780),
  ABISELECT(168,108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C24D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C24__8S20997C1[] = {
  ABISELECT(2680,1740),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(2680,1740),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C24D1Ev,_ZTv0_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C24D0Ev,_ZTv0_n28_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C24__8S20997C1[] = {
  0,
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C24D1Ev,_ZTvn760_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C24D0Ev,_ZTvn760_n28_N9S20997C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C24__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(1520,980),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C24D1Ev,_ZTvn760_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C24D0Ev,_ZTvn760_n28_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C24D1Ev,_ZTvn764_n28_N9S20997C24D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C24D0Ev,_ZTvn764_n28_N9S20997C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C24__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(1512,976),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C24D1Ev,_ZTvn764_n28_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C24D0Ev,_ZTvn764_n28_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn16_N9S20997C24D1Ev,_ZThn8_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn16_N9S20997C24D0Ev,_ZThn8_N9S20997C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C25__9S20997C24__8S20997C1[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-2928,-1920),
  ABISELECT(-2696,-1748),
  ABISELECT(-2736,-1788),
  ABISELECT(152,100),
  ABISELECT(64,56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev)();
extern void ABISELECT(_ZThn80_N9S20997C24D1Ev,_ZThn64_N9S20997C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev)();
extern void ABISELECT(_ZThn80_N9S20997C24D0Ev,_ZThn64_N9S20997C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C24__8S20997C1[] = {
  ABISELECT(-80,-64),
  0,
  ABISELECT(-2992,-1976),
  ABISELECT(-2760,-1804),
  ABISELECT(88,44),
  ABISELECT(-2800,-1844),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI9S20997C24[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C25D1Ev();
extern void _ZN9S20997C25D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C25__8S20997C1[] = {
  ABISELECT(-2928,-1920),
  ABISELECT(-2696,-1748),
  ABISELECT(-2736,-1788),
  ABISELECT(152,100),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C25D0Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev)();
extern void ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20997C9__9S20997C25__8S20997C1[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-2992,-1976),
  ABISELECT(-2760,-1804),
  ABISELECT(88,44),
  ABISELECT(-2800,-1844),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__9S20997C25__8S20997C1[] = {
  0,
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__9S20997C25__8S20997C1[] = {
  ABISELECT(2696,1748),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(2696,1748),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D1Ev,_ZTv0_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20997C25D0Ev,_ZTv0_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__9S20997C25__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(1536,988),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D1Ev,_ZTvn760_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20997C25D0Ev,_ZTvn760_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__9S20997C25__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(1528,984),
  (VTBL_ENTRY)&(_ZTI9S20997C25[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D1Ev,_ZTvn764_n28_N9S20997C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20997C25D0Ev,_ZTvn764_n28_N9S20997C25D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN8S20997C9D1Ev();
extern void _ZN8S20997C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C9__A1__8S20997C1[] = {
  ABISELECT(-2992,-1976),
  ABISELECT(-2760,-1804),
  ABISELECT(88,44),
  ABISELECT(-2800,-1844),
  0,
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20997C9D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C108S20997C9__A3__8S20997C1[] = {
  ABISELECT(-2800,-1844),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C7__8S20997C9__A1__8S20997C1[] = {
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C11__8S20997C9__A1__8S20997C1[] = {
  ABISELECT(2760,1804),
  -40,
  ABISELECT(-232,-172),
  ABISELECT(2848,1848),
  ABISELECT(2848,1848),
  ABISELECT(2760,1804),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C59S20997C11__8S20997C9__A1__8S20997C1[] = {
  ABISELECT(1688,1088),
  ABISELECT(-1200,-800),
  ABISELECT(1688,1088),
  ABISELECT(1600,1044),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D1Ev,_ZTvn760_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20997C9D0Ev,_ZTvn760_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20997C139S20997C11__8S20997C9__A1__8S20997C1[] = {
  ABISELECT(1680,1084),
  ABISELECT(-1208,-804),
  ABISELECT(1680,1084),
  ABISELECT(1592,1040),
  (VTBL_ENTRY)&(_ZTI8S20997C9[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D1Ev,_ZTvn764_n28_N8S20997C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20997C9D0Ev,_ZTvn764_n28_N8S20997C9D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C27D1Ev,_ZTv0_n24_N9S20997C27D1Ev)();
extern void _ZN9S20997C27D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C27D0Ev,_ZTv0_n24_N9S20997C27D0Ev)();
extern void _ZN9S20997C27D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20997C27__8S20997C1[] = {
  ABISELECT(-3080,-2020),
  ABISELECT(8,4),
  0,
  ABISELECT(-1432,-920),
  0,
  ABISELECT(-2920,-1920),
  0,
  0,
  ABISELECT(-2888,-1888),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C27D1Ev,_ZTv0_n24_N9S20997C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C27D0Ev,_ZTv0_n24_N9S20997C27D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C27__8S20997C1[] = {
  0,
  ABISELECT(-1456,-968),
  ABISELECT(1432,920),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C27__8S20997C1[] = {
  0,
  ABISELECT(-2896,-1892),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A1__9S20997C27__8S20997C1[] = {
  ABISELECT(-2944,-1936),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C27[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__A1__8S20997C1[] = {
  ABISELECT(-2896,-1892),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A4__8S20997C1[] = {
  ABISELECT(-2944,-1936),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C20__A1__8S20997C1[] = {
  ABISELECT(-2944,-1936),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C34D1Ev,_ZTv0_n24_N9S20997C34D1Ev)();
extern void _ZN9S20997C34D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C34D0Ev,_ZTv0_n24_N9S20997C34D0Ev)();
extern void _ZN9S20997C34D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C34__8S20997C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-3224,-2112),
  0,
  ABISELECT(-144,-92),
  ABISELECT(-3032,-1980),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C34[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C34D1Ev,_ZTv0_n24_N9S20997C34D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C34D0Ev,_ZTv0_n24_N9S20997C34D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev)();
extern void _ZN9S20997C35D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev)();
extern void _ZN9S20997C35D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C359S20997C34__8S20997C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-3224,-2112),
  0,
  ABISELECT(-144,-92),
  ABISELECT(-3032,-1980),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C199S20997C359S20997C34__A1__8S20997C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-3224,-2112),
  0,
  ABISELECT(-144,-92),
  ABISELECT(-3032,-1980),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C199S20997C359S20997C34__A1__8S20997C1[] = {
  ABISELECT(144,92),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C359S20997C34__8S20997C1[] = {
  ABISELECT(144,92),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C34D1Ev,_ZTv0_n24_N9S20997C34D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C34D0Ev,_ZTv0_n24_N9S20997C34D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C34__8S20997C1[] = {
  ABISELECT(144,92),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S20997C34[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C34D1Ev,_ZTv0_n24_N9S20997C34D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C34D0Ev,_ZTv0_n24_N9S20997C34D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void _ZN9S20997C16D1Ev();
extern void _ZN9S20997C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C16__A1__8S20997C1[] = {
  ABISELECT(-1496,-972),
  ABISELECT(-3240,-2120),
  ABISELECT(-1504,-976),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-1504,-976),
  ABISELECT(-3080,-2020),
  ABISELECT(-3048,-1988),
  ABISELECT(-1592,-1020),
  ABISELECT(-1600,-1024),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20997C16D0Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C209S20997C16__A2__8S20997C1[] = {
  ABISELECT(-3056,-1992),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C209S20997C16__A5__8S20997C1[] = {
  ABISELECT(-3104,-2036),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C10[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C209S20997C16__A2__8S20997C1[] = {
  ABISELECT(-3104,-2036),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20997C20[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C17__9S20997C16__A1__8S20997C1[] = {
  ABISELECT(-1448,-964),
  ABISELECT(8,4),
  ABISELECT(1600,1024),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C10__9S20997C16__A1__8S20997C1[] = {
  0,
  ABISELECT(-1456,-968),
  ABISELECT(1592,1020),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev)();
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C18__9S20997C16__A1__8S20997C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-1576,-1044),
  0,
  ABISELECT(1344,876),
  ABISELECT(-1736,-1144),
  ABISELECT(1504,976),
  ABISELECT(1344,876),
  ABISELECT(-1544,-1012),
  ABISELECT(1344,876),
  ABISELECT(1504,976),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C16__A1__8S20997C1[] = {
  ABISELECT(160,100),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C12__9S20997C16__A1__8S20997C1[] = {
  ABISELECT(1336,872),
  ABISELECT(1336,872),
  ABISELECT(1496,972),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C20__9S20997C16__A1__8S20997C1[] = {
  ABISELECT(-3056,-1992),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C109S20997C20__A1__9S20997C16__A1__8S20997C1[] = {
  ABISELECT(-3104,-2036),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20997C16[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20997C38__8S20997C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C38[0]),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev)();
extern void _ZN9S20997C35D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev)();
extern void _ZN9S20997C35D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C35__A2__8S20997C1[] = {
  ABISELECT(-384,-252),
  ABISELECT(-3464,-2272),
  0,
  ABISELECT(-384,-252),
  ABISELECT(-3272,-2140),
  ABISELECT(-384,-252),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C199S20997C35__A3__8S20997C1[] = {
  ABISELECT(-384,-252),
  ABISELECT(-3464,-2272),
  0,
  ABISELECT(-384,-252),
  ABISELECT(-3272,-2140),
  ABISELECT(-384,-252),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C199S20997C35__A3__8S20997C1[] = {
  ABISELECT(384,252),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(384,252),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C35__A2__8S20997C1[] = {
  ABISELECT(384,252),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(384,252),
  (VTBL_ENTRY)&(_ZTI9S20997C35[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev)();
extern void _ZN9S20997C43D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev)();
extern void _ZN9S20997C43D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C43__8S20997C1[] = {
  ABISELECT(8,4),
  ABISELECT(-392,-256),
  ABISELECT(-3472,-2276),
  0,
  ABISELECT(-392,-256),
  ABISELECT(-3280,-2144),
  ABISELECT(-392,-256),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C43[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void _ZN9S20997C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
extern void _ZN9S20997C19D0Ev() __attribute__((weak));
extern void _ZN9S20997C192v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20997C199S20997C43__A4__8S20997C1[] = {
  ABISELECT(-392,-256),
  ABISELECT(-3472,-2276),
  0,
  ABISELECT(-392,-256),
  ABISELECT(-3280,-2144),
  ABISELECT(-392,-256),
  0,
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
  (VTBL_ENTRY)&_ZN9S20997C192v3Ev,
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C199S20997C43__A4__8S20997C1[] = {
  ABISELECT(392,256),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(392,256),
  (VTBL_ENTRY)&(_ZTI9S20997C19[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev),
};
extern void _ZN8S20997C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20997C5__9S20997C43__8S20997C1[] = {
  ABISELECT(392,256),
  0,
  ABISELECT(-2888,-1888),
  0,
  ABISELECT(392,256),
  (VTBL_ENTRY)&(_ZTI9S20997C43[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev),
};
extern void _ZN8S20997C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20997C79S20997C21__A1__9S20997C43__8S20997C1[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20997C43[0]),
  (VTBL_ENTRY)&_ZN8S20997C72v2Ev,
};
static  VTT_ENTRY vtt_S20997C1[] = {
  {&(_ZTV8S20997C1[35]),  35,369},
  {&(_tg__ZTV9S20997C33__8S20997C1[21]),  21,27},
  {&(_tg__ZTV9S20997C369S20997C33__8S20997C1[20]),  20,25},
  {&(_tg__ZTV9S20997C359S20997C369S20997C33__A1__8S20997C1[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C359S20997C369S20997C33__A2__8S20997C1[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C359S20997C369S20997C33__A2__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C359S20997C369S20997C33__A2__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C359S20997C369S20997C33__A1__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C359S20997C369S20997C33__A1__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C2__9S20997C369S20997C33__8S20997C1[12]),  12,15},
  {&(_tg__ZTV8S20997C3__9S20997C369S20997C33__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C3__9S20997C369S20997C33__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C3__9S20997C369S20997C33__8S20997C1[8]),  8,11},
  {&(_tg__ZTV9S20997C11__9S20997C369S20997C33__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__A1__9S20997C369S20997C33__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C369S20997C33__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C13__A1__9S20997C369S20997C33__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C16__9S20997C369S20997C33__8S20997C1[14]),  14,17},
  {&(_tg__ZTV9S20997C17__9S20997C369S20997C33__8S20997C1[4]),  4,4},
  {&(_tg__ZTV9S20997C10__A1__9S20997C369S20997C33__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C18__9S20997C369S20997C33__8S20997C1[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C369S20997C33__8S20997C1[12]),  12,16},
  {&(_tg__ZTV9S20997C12__A1__9S20997C369S20997C33__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C209S20997C16__9S20997C369S20997C33__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C209S20997C16__A2__9S20997C369S20997C33__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C34__9S20997C33__8S20997C1[9]),  9,13},
  {&(_tg__ZTV8S20997C3__9S20997C33__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C3__9S20997C33__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C2__9S20997C33__8S20997C1[12]),  12,15},
  {&(_tg__ZTV8S20997C3__9S20997C33__8S20997C1[8]),  8,11},
  {&(_tg__ZTV9S20997C11__9S20997C33__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__A1__9S20997C33__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C33__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C13__A1__9S20997C33__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C16__9S20997C33__8S20997C1[14]),  14,17},
  {&(_tg__ZTV9S20997C17__9S20997C33__8S20997C1[4]),  4,4},
  {&(_tg__ZTV9S20997C10__A1__9S20997C33__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C18__9S20997C33__8S20997C1[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C33__8S20997C1[12]),  12,16},
  {&(_tg__ZTV9S20997C12__A1__9S20997C33__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C209S20997C16__9S20997C33__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C209S20997C16__A2__9S20997C33__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C40__8S20997C1[14]),  14,18},
  {&(_tg__ZTV9S20997C419S20997C40__8S20997C1[5]),  5,6},
  {&(_tg__ZTV9S20997C12__9S20997C419S20997C40__8S20997C1[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C419S20997C40__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C429S20997C40__8S20997C1[14]),  14,19},
  {&(_tg__ZTV9S20997C189S20997C429S20997C40__A1__8S20997C1[12]),  12,16},
  {&(_tg__ZTV8S20997C5__9S20997C189S20997C429S20997C40__A1__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C189S20997C429S20997C40__A1__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C19__9S20997C189S20997C429S20997C40__A1__8S20997C1[9]),  9,13},
  {&(_tg__ZTV9S20997C12__9S20997C189S20997C429S20997C40__A1__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C43__9S20997C429S20997C40__8S20997C1[10]),  10,14},
  {&(_tg__ZTV8S20997C5__9S20997C429S20997C40__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C429S20997C40__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C79S20997C21__A1__9S20997C429S20997C40__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C19__A1__9S20997C429S20997C40__8S20997C1[9]),  9,13},
  {&(_tg__ZTV9S20997C12__9S20997C429S20997C40__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C11__9S20997C40__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C5__A2__9S20997C40__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C40__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C40__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C35__9S20997C40__8S20997C1[9]),  9,13},
  {&(_tg__ZTV8S20997C5__A2__9S20997C40__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C12__A1__9S20997C40__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C42__9S20997C40__8S20997C1[14]),  14,19},
  {&(_tg__ZTV9S20997C43__9S20997C40__8S20997C1[10]),  10,14},
  {&(_tg__ZTV8S20997C79S20997C21__A1__9S20997C40__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C19__A2__9S20997C40__8S20997C1[9]),  9,13},
  {&(_ZTV8S20997C1[91]),  91,369},
  {&(_ZTV8S20997C1[285]),  285,369},
  {&(_ZTV8S20997C1[285]),  285,369},
  {&(_ZTV8S20997C1[285]),  285,369},
  {&(_ZTV8S20997C1[101]),  101,369},
  {&(_ZTV8S20997C1[109]),  109,369},
  {&(_ZTV8S20997C1[117]),  117,369},
  {&(_ZTV8S20997C1[126]),  126,369},
  {&(_ZTV8S20997C1[154]),  154,369},
  {&(_ZTV8S20997C1[172]),  172,369},
  {&(_ZTV8S20997C1[187]),  187,369},
  {&(_ZTV8S20997C1[191]),  191,369},
  {&(_ZTV8S20997C1[204]),  204,369},
  {&(_ZTV8S20997C1[204]),  204,369},
  {&(_ZTV8S20997C1[212]),  212,369},
  {&(_ZTV8S20997C1[178]),  178,369},
  {&(_ZTV8S20997C1[182]),  182,369},
  {&(_ZTV8S20997C1[234]),  234,369},
  {&(_ZTV8S20997C1[247]),  247,369},
  {&(_ZTV8S20997C1[259]),  259,369},
  {&(_ZTV8S20997C1[270]),  270,369},
  {&(_ZTV8S20997C1[285]),  285,369},
  {&(_ZTV8S20997C1[292]),  292,369},
  {&(_ZTV8S20997C1[296]),  296,369},
  {&(_ZTV8S20997C1[306]),  306,369},
  {&(_ZTV8S20997C1[324]),  324,369},
  {&(_ZTV8S20997C1[330]),  330,369},
  {&(_ZTV8S20997C1[334]),  334,369},
  {&(_ZTV8S20997C1[338]),  338,369},
  {&(_ZTV8S20997C1[56]),  56,369},
  {&(_ZTV8S20997C1[347]),  347,369},
  {&(_ZTV8S20997C1[74]),  74,369},
  {&(_ZTV8S20997C1[361]),  361,369},
  {&(_ZTV8S20997C1[368]),  368,369},
  {&(_tg__ZTV8S20997C2__8S20997C1[10]),  10,13},
  {&(_tg__ZTV8S20997C98S20997C2__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C108S20997C98S20997C2__8S20997C1[3]),  3,4},
  {&(_tg__ZTV8S20997C7__8S20997C98S20997C2__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C98S20997C2__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C98S20997C2__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C98S20997C2__8S20997C1[5]),  5,8},
  {&(_tg__ZTV8S20997C3__8S20997C2__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C3__8S20997C2__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C3__8S20997C2__8S20997C1[8]),  8,11},
  {&(_tg__ZTV9S20997C11__8S20997C2__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__A1__8S20997C2__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C2__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C13__A1__8S20997C2__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C3__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C3__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C3__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C5__8S20997C1[5]),  5,8},
  {&(_tg__ZTV8S20997C5__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C11__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C129S20997C11__8S20997C1[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C129S20997C11__8S20997C1[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__A1__8S20997C1[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C11__A1__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C1[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C139S20997C11__A2__8S20997C1[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C139S20997C11__A2__8S20997C1[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C139S20997C11__8S20997C1[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C11__8S20997C1[3]),  3,4},
  {&(_tg__ZTV8S20997C5__9S20997C11__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C13__9S20997C11__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C13__A1__8S20997C1[5]),  5,8},
  {&(_tg__ZTV8S20997C59S20997C13__A3__8S20997C1[5]),  5,8},
  {&(_tg__ZTV8S20997C7__8S20997C59S20997C13__A3__8S20997C1[3]),  3,4},
  {&(_tg__ZTV8S20997C7__9S20997C13__A1__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C14__8S20997C1[22]),  22,26},
  {&(_tg__ZTV9S20997C319S20997C14__8S20997C1[7]),  7,11},
  {&(_tg__ZTV9S20997C329S20997C319S20997C14__8S20997C1[7]),  7,11},
  {&(_tg__ZTV9S20997C259S20997C329S20997C319S20997C14__A1__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C9__9S20997C259S20997C329S20997C319S20997C14__A1__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C7__9S20997C259S20997C329S20997C319S20997C14__A1__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C259S20997C329S20997C319S20997C14__A1__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C259S20997C329S20997C319S20997C14__A1__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C259S20997C329S20997C319S20997C14__A1__8S20997C1[5]),  5,8},
  {&(_tg__ZTV8S20997C9__9S20997C329S20997C319S20997C14__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C7__9S20997C329S20997C319S20997C14__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C329S20997C319S20997C14__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C329S20997C319S20997C14__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C329S20997C319S20997C14__8S20997C1[5]),  5,8},
  {&(_tg__ZTV8S20997C9__9S20997C319S20997C14__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C7__9S20997C319S20997C14__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C319S20997C14__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C319S20997C14__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C319S20997C14__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C15__9S20997C14__8S20997C1[14]),  14,17},
  {&(_tg__ZTV9S20997C17__9S20997C14__8S20997C1[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C14__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C18__9S20997C14__8S20997C1[12]),  12,16},
  {&(_tg__ZTV9S20997C27__9S20997C14__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C27__9S20997C14__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C18__9S20997C14__8S20997C1[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C14__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C209S20997C169S20997C15__9S20997C14__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C209S20997C169S20997C15__A1__9S20997C14__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C22__9S20997C14__8S20997C1[21]),  21,24},
  {&(_tg__ZTV9S20997C24__9S20997C14__8S20997C1[10]),  10,13},
  {&(_tg__ZTV9S20997C11__9S20997C14__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__A1__9S20997C14__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C14__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C14__8S20997C1[9]),  9,12},
  {&(_tg__ZTV8S20997C9__9S20997C14__8S20997C1[8]),  8,11},
  {&(_tg__ZTV9S20997C27__9S20997C14__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C27__9S20997C14__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C20__A1__9S20997C14__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C109S20997C20__A3__9S20997C14__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C15__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C169S20997C15__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C209S20997C169S20997C15__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C209S20997C169S20997C15__A2__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C10__9S20997C209S20997C169S20997C15__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C17__9S20997C169S20997C15__8S20997C1[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C169S20997C15__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C18__9S20997C169S20997C15__8S20997C1[12]),  12,16},
  {&(_tg__ZTV8S20997C5__9S20997C169S20997C15__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C169S20997C15__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C18__9S20997C169S20997C15__8S20997C1[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C169S20997C15__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C20__9S20997C169S20997C15__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C20__A1__9S20997C169S20997C15__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C17__9S20997C15__8S20997C1[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C15__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C18__9S20997C15__8S20997C1[12]),  12,16},
  {&(_tg__ZTV8S20997C5__9S20997C15__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C15__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C18__9S20997C15__8S20997C1[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C15__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C209S20997C16__9S20997C15__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C209S20997C16__A1__9S20997C15__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C17__8S20997C1[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C17__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C10__A1__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C18__8S20997C1[12]),  12,16},
  {&(_tg__ZTV8S20997C5__9S20997C18__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C18__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C18__8S20997C1[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C18__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C19__8S20997C1[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C19__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C19__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C12__A1__8S20997C1[4]),  4,5},
  {&(_tg__ZTV8S20997C7__9S20997C12__A1__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C22__8S20997C1[20]),  20,23},
  {&(_tg__ZTV9S20997C239S20997C22__8S20997C1[11]),  11,14},
  {&(_tg__ZTV9S20997C10__9S20997C239S20997C22__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C24__9S20997C239S20997C22__8S20997C1[10]),  10,13},
  {&(_tg__ZTV9S20997C11__9S20997C239S20997C22__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C7__A1__9S20997C239S20997C22__8S20997C1[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C239S20997C22__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C239S20997C22__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C239S20997C22__8S20997C1[9]),  9,12},
  {&(_tg__ZTV8S20997C9__9S20997C239S20997C22__8S20997C1[8]),  8,11},
  {&(_tg__ZTV9S20997C10__9S20997C22__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C24__9S20997C22__8S20997C1[10]),  10,13},
  {&(_tg__ZTV9S20997C11__9S20997C22__8S20997C1[7]),  7,10},
  {&(_tg__ZTV9S20997C27__9S20997C22__8S20997C1[12]),  12,15},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C22__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C22__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C22__8S20997C1[9]),  9,12},
  {&(_tg__ZTV8S20997C9__9S20997C22__8S20997C1[8]),  8,11},
  {&(_tg__ZTV9S20997C27__9S20997C22__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C27__9S20997C22__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C27__9S20997C22__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C20__9S20997C22__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C109S20997C20__A2__9S20997C22__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C18__9S20997C22__8S20997C1[12]),  12,16},
  {&(_tg__ZTV9S20997C18__9S20997C22__8S20997C1[12]),  12,16},
  {&(_tg__ZTV9S20997C12__A1__9S20997C22__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C24__8S20997C1[9]),  9,12},
  {&(_tg__ZTV9S20997C11__9S20997C24__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C7__9S20997C24__8S20997C1[3]),  3,4},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C24__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C24__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C25__9S20997C24__8S20997C1[9]),  9,12},
  {&(_tg__ZTV8S20997C9__9S20997C24__8S20997C1[8]),  8,11},
  {&(_tg__ZTV9S20997C25__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C9__9S20997C25__8S20997C1[8]),  8,11},
  {&(_tg__ZTV8S20997C7__9S20997C25__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C11__9S20997C25__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__9S20997C25__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__9S20997C25__8S20997C1[5]),  5,8},
  {&(_tg__ZTV8S20997C9__A1__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C108S20997C9__A3__8S20997C1[3]),  3,4},
  {&(_tg__ZTV8S20997C7__8S20997C9__A1__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C11__8S20997C9__A1__8S20997C1[7]),  7,10},
  {&(_tg__ZTV8S20997C59S20997C11__8S20997C9__A1__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C139S20997C11__8S20997C9__A1__8S20997C1[5]),  5,8},
  {&(_tg__ZTV9S20997C27__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C10__9S20997C27__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C27__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C27__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C27__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C20__9S20997C27__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C109S20997C20__A1__9S20997C27__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C20__A1__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C20__A4__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C10__9S20997C20__A1__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C34__8S20997C1[8]),  8,12},
  {&(_tg__ZTV9S20997C359S20997C34__8S20997C1[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C359S20997C34__A1__8S20997C1[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C359S20997C34__A1__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C359S20997C34__A1__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C359S20997C34__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C359S20997C34__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C34__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C34__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C16__A1__8S20997C1[12]),  12,15},
  {&(_tg__ZTV9S20997C209S20997C16__A2__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C209S20997C16__A5__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C10__9S20997C209S20997C16__A2__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C17__9S20997C16__A1__8S20997C1[4]),  4,4},
  {&(_tg__ZTV9S20997C10__9S20997C16__A1__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C18__9S20997C16__A1__8S20997C1[12]),  12,16},
  {&(_tg__ZTV8S20997C5__9S20997C16__A1__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C16__A1__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C18__9S20997C16__A1__8S20997C1[12]),  12,16},
  {&(_tg__ZTV9S20997C12__9S20997C16__A1__8S20997C1[4]),  4,5},
  {&(_tg__ZTV9S20997C20__9S20997C16__A1__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C109S20997C20__A1__9S20997C16__A1__8S20997C1[3]),  3,4},
  {&(_tg__ZTV9S20997C38__8S20997C1[3]),  3,3},
  {&(_tg__ZTV9S20997C35__A2__8S20997C1[8]),  8,12},
  {&(_tg__ZTV9S20997C199S20997C35__A3__8S20997C1[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C35__A3__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C35__A3__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C35__A2__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C35__A2__8S20997C1[6]),  6,9},
  {&(_tg__ZTV9S20997C43__8S20997C1[9]),  9,13},
  {&(_tg__ZTV9S20997C199S20997C43__A4__8S20997C1[8]),  8,12},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C43__A4__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C199S20997C43__A4__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C43__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C5__9S20997C43__8S20997C1[6]),  6,9},
  {&(_tg__ZTV8S20997C79S20997C21__A1__9S20997C43__8S20997C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20997C1[];
extern  VTBL_ENTRY _ZTV8S20997C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20997C1[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C43D0Ev,_ZTv0_n24_N9S20997C43D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C43D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C43D1Ev,_ZTv0_n24_N9S20997C43D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C43D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C34D0Ev,_ZTv0_n24_N9S20997C34D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C34D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C34D1Ev,_ZTv0_n24_N9S20997C34D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C34D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C27D0Ev,_ZTv0_n24_N9S20997C27D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C27D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C27D1Ev,_ZTv0_n24_N9S20997C27D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C27D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C24D0Ev,_ZTv0_n32_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20997C24D0Ev,_ZThn64_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C24D1Ev,_ZTv0_n32_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20997C24D1Ev,_ZThn64_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C24D0Ev,_ZTv0_n36_N9S20997C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20997C24D0Ev,_ZThn8_N9S20997C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C24D1Ev,_ZTv0_n36_N9S20997C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20997C24D1Ev,_ZThn8_N9S20997C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C22D0Ev,_ZTv0_n32_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20997C22D0Ev,_ZThn68_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C22D1Ev,_ZTv0_n32_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20997C22D1Ev,_ZThn68_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C22D0Ev,_ZTv0_n36_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20997C22D0Ev,_ZThn12_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C22D1Ev,_ZTv0_n36_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20997C22D1Ev,_ZThn12_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C22D0Ev,_ZTv0_n24_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20997C22D0Ev,_ZThn112_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C22D1Ev,_ZTv0_n24_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20997C22D1Ev,_ZThn112_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C22D0Ev,_ZTv0_n40_N9S20997C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C22D0Ev,_ZThn4_N9S20997C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C22D1Ev,_ZTv0_n40_N9S20997C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C22D1Ev,_ZThn4_N9S20997C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C23D0Ev,_ZTv0_n32_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20997C23D0Ev,_ZThn68_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C23D1Ev,_ZTv0_n32_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20997C23D1Ev,_ZThn68_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C23D0Ev,_ZTv0_n36_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20997C23D0Ev,_ZThn12_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C23D1Ev,_ZTv0_n36_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20997C23D1Ev,_ZThn12_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C23D0Ev,_ZTv0_n40_N9S20997C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C23D0Ev,_ZThn4_N9S20997C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C23D1Ev,_ZTv0_n40_N9S20997C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20997C23D1Ev,_ZThn4_N9S20997C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C15D0Ev,_ZTv0_n24_N9S20997C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1592_N9S20997C15D0Ev,_ZThn1020_N9S20997C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20997C15D0Ev,_ZThn144_N9S20997C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C15D1Ev,_ZTv0_n24_N9S20997C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1592_N9S20997C15D1Ev,_ZThn1020_N9S20997C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20997C15D1Ev,_ZThn144_N9S20997C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C16D0Ev,_ZTv0_n24_N9S20997C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1592_N9S20997C16D0Ev,_ZThn1020_N9S20997C16D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20997C16D0Ev,_ZThn144_N9S20997C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C16D1Ev,_ZTv0_n24_N9S20997C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1592_N9S20997C16D1Ev,_ZThn1020_N9S20997C16D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20997C16D1Ev,_ZThn144_N9S20997C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C14D0Ev,_ZTv0_n32_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S20997C14D0Ev,_ZThn1032_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C14D1Ev,_ZTv0_n32_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S20997C14D1Ev,_ZThn1032_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C14D0Ev,_ZTv0_n36_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1504_N9S20997C14D0Ev,_ZThn976_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20997C14D1Ev,_ZTv0_n36_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1504_N9S20997C14D1Ev,_ZThn976_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C14D0Ev,_ZTv0_n40_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N9S20997C14D0Ev,_ZThn968_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S20997C14D1Ev,_ZTv0_n40_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N9S20997C14D1Ev,_ZThn968_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N9S20997C14D0Ev,_ZTv0_n84_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1480_N9S20997C14D0Ev,_ZThn964_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N9S20997C14D1Ev,_ZTv0_n84_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1480_N9S20997C14D1Ev,_ZThn964_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C14D0Ev,_ZTv0_n24_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N9S20997C14D0Ev,_ZThn1076_N9S20997C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S20997C14D0Ev,_ZThn200_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C14D1Ev,_ZTv0_n24_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N9S20997C14D1Ev,_ZThn1076_N9S20997C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S20997C14D1Ev,_ZThn200_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C14D0Ev,_ZTv0_n56_N9S20997C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C14D0Ev,_ZThn56_N9S20997C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C14D1Ev,_ZTv0_n56_N9S20997C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C14D1Ev,_ZThn56_N9S20997C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C31D0Ev,_ZTv0_n32_N9S20997C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S20997C31D0Ev,_ZThn1032_N9S20997C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C31D1Ev,_ZTv0_n32_N9S20997C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S20997C31D1Ev,_ZThn1032_N9S20997C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C32D0Ev,_ZTv0_n32_N9S20997C32D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S20997C32D0Ev,_ZThn1032_N9S20997C32D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C32D1Ev,_ZTv0_n32_N9S20997C32D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S20997C32D1Ev,_ZThn1032_N9S20997C32D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D0Ev,_ZTv0_n32_N9S20997C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D0Ev,_ZThn56_N9S20997C25D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S20997C25D0Ev,_ZThn1032_N9S20997C25D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20997C25D1Ev,_ZTv0_n32_N9S20997C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20997C25D1Ev,_ZThn56_N9S20997C25D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N9S20997C25D1Ev,_ZThn1032_N9S20997C25D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D0Ev,_ZTv0_n24_N8S20997C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C3D1Ev,_ZTv0_n24_N8S20997C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20997C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C2D0Ev,_ZTv0_n28_N8S20997C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20997C2D0Ev,_ZThn156_N8S20997C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C2D1Ev,_ZTv0_n28_N8S20997C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20997C2D1Ev,_ZThn156_N8S20997C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C2D0Ev,_ZTv0_n24_N8S20997C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N8S20997C2D0Ev,_ZThn924_N8S20997C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3048_N8S20997C2D0Ev,_ZThn2004_N8S20997C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C2D1Ev,_ZTv0_n24_N8S20997C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N8S20997C2D1Ev,_ZThn924_N8S20997C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3048_N8S20997C2D1Ev,_ZThn2004_N8S20997C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D0Ev,_ZTv0_n28_N8S20997C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20997C9D0Ev,_ZThn156_N8S20997C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C9D1Ev,_ZTv0_n28_N8S20997C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20997C9D1Ev,_ZThn156_N8S20997C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C40D0Ev,_ZTv0_n24_N9S20997C40D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1728_N9S20997C40D0Ev,_ZThn1140_N9S20997C40D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3464_N9S20997C40D0Ev,_ZThn2272_N9S20997C40D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20997C40D0Ev,_ZThn8_N9S20997C40D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3456_N9S20997C40D0Ev,_ZThn2268_N9S20997C40D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3072_N9S20997C40D0Ev,_ZThn2016_N9S20997C40D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C40D1Ev,_ZTv0_n24_N9S20997C40D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1728_N9S20997C40D1Ev,_ZThn1140_N9S20997C40D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3464_N9S20997C40D1Ev,_ZThn2272_N9S20997C40D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20997C40D1Ev,_ZThn8_N9S20997C40D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3456_N9S20997C40D1Ev,_ZThn2268_N9S20997C40D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3072_N9S20997C40D1Ev,_ZThn2016_N9S20997C40D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C40D0Ev,_ZTv0_n28_N9S20997C40D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20997C40D0Ev,_ZThn168_N9S20997C40D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C40D1Ev,_ZTv0_n28_N9S20997C40D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20997C40D1Ev,_ZThn168_N9S20997C40D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D0Ev,_ZTv0_n24_N9S20997C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N9S20997C18D0Ev,_ZThn876_N9S20997C18D0Ev),
  (VTBL_ENTRY)_ZN9S20997C18D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn1712_N9S20997C18D0Ev,_ZThn1132_N9S20997C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3056_N9S20997C18D0Ev,_ZThn2008_N9S20997C18D0Ev),
  (VTBL_ENTRY)_ZN9S20997C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C18D1Ev,_ZTv0_n24_N9S20997C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N9S20997C18D1Ev,_ZThn876_N9S20997C18D1Ev),
  (VTBL_ENTRY)_ZN9S20997C18D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn1712_N9S20997C18D1Ev,_ZThn1132_N9S20997C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3056_N9S20997C18D1Ev,_ZThn2008_N9S20997C18D1Ev),
  (VTBL_ENTRY)_ZN9S20997C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C42D0Ev,_ZTv0_n24_N9S20997C42D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1712_N9S20997C42D0Ev,_ZThn1132_N9S20997C42D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3056_N9S20997C42D0Ev,_ZThn2008_N9S20997C42D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3448_N9S20997C42D0Ev,_ZThn2264_N9S20997C42D0Ev),
  (VTBL_ENTRY)_ZN9S20997C42D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C42D1Ev,_ZTv0_n24_N9S20997C42D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1712_N9S20997C42D1Ev,_ZThn1132_N9S20997C42D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3056_N9S20997C42D1Ev,_ZThn2008_N9S20997C42D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3448_N9S20997C42D1Ev,_ZThn2264_N9S20997C42D1Ev),
  (VTBL_ENTRY)_ZN9S20997C42D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C33D0Ev,_ZTv0_n56_N9S20997C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N9S20997C33D0Ev,_ZThn2120_N9S20997C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C33D1Ev,_ZTv0_n56_N9S20997C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N9S20997C33D1Ev,_ZThn2120_N9S20997C33D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C33D0Ev,_ZTv0_n28_N9S20997C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20997C33D0Ev,_ZThn172_N9S20997C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C33D1Ev,_ZTv0_n28_N9S20997C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20997C33D1Ev,_ZThn172_N9S20997C33D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20997C33D0Ev,_ZTv0_n48_N9S20997C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20997C33D0Ev,_ZThn16_N9S20997C33D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20997C33D1Ev,_ZTv0_n48_N9S20997C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20997C33D1Ev,_ZThn16_N9S20997C33D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C36D0Ev,_ZTv0_n56_N9S20997C36D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N9S20997C36D0Ev,_ZThn2120_N9S20997C36D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N9S20997C36D1Ev,_ZTv0_n56_N9S20997C36D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N9S20997C36D1Ev,_ZThn2120_N9S20997C36D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C36D0Ev,_ZTv0_n28_N9S20997C36D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20997C36D0Ev,_ZThn172_N9S20997C36D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20997C36D1Ev,_ZTv0_n28_N9S20997C36D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S20997C36D1Ev,_ZThn172_N9S20997C36D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20997C36D0Ev,_ZTv0_n48_N9S20997C36D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20997C36D0Ev,_ZThn16_N9S20997C36D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20997C36D1Ev,_ZTv0_n48_N9S20997C36D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20997C36D1Ev,_ZThn16_N9S20997C36D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D0Ev,_ZTv0_n24_N9S20997C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N9S20997C19D0Ev,_ZThn876_N9S20997C19D0Ev),
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn3080_N9S20997C19D0Ev,_ZThn2020_N9S20997C19D0Ev),
  (VTBL_ENTRY)_ZN9S20997C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C19D1Ev,_ZTv0_n24_N9S20997C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N9S20997C19D1Ev,_ZThn876_N9S20997C19D1Ev),
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn3080_N9S20997C19D1Ev,_ZThn2020_N9S20997C19D1Ev),
  (VTBL_ENTRY)_ZN9S20997C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C35D0Ev,_ZTv0_n24_N9S20997C35D0Ev), // 
  (VTBL_ENTRY)_ZN9S20997C35D0Ev,
  (VTBL_ENTRY)_ZN9S20997C35D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn3080_N9S20997C35D0Ev,_ZThn2020_N9S20997C35D0Ev),
  (VTBL_ENTRY)_ZN9S20997C35D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C35D1Ev,_ZTv0_n24_N9S20997C35D1Ev), // 
  (VTBL_ENTRY)_ZN9S20997C35D1Ev,
  (VTBL_ENTRY)_ZN9S20997C35D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn3080_N9S20997C35D1Ev,_ZThn2020_N9S20997C35D1Ev),
  (VTBL_ENTRY)_ZN9S20997C35D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C36D0Ev,_ZTv0_n24_N9S20997C36D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1736_N9S20997C36D0Ev,_ZThn1144_N9S20997C36D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S20997C36D0Ev,_ZThn940_N9S20997C36D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3080_N9S20997C36D0Ev,_ZThn2020_N9S20997C36D0Ev),
  (VTBL_ENTRY)_ZN9S20997C36D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C36D1Ev,_ZTv0_n24_N9S20997C36D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1736_N9S20997C36D1Ev,_ZThn1144_N9S20997C36D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S20997C36D1Ev,_ZThn940_N9S20997C36D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3080_N9S20997C36D1Ev,_ZThn2020_N9S20997C36D1Ev),
  (VTBL_ENTRY)_ZN9S20997C36D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C33D0Ev,_ZTv0_n24_N9S20997C33D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1736_N9S20997C33D0Ev,_ZThn1144_N9S20997C33D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S20997C33D0Ev,_ZThn940_N9S20997C33D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3080_N9S20997C33D0Ev,_ZThn2020_N9S20997C33D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3224_N9S20997C33D0Ev,_ZThn2112_N9S20997C33D0Ev),
  (VTBL_ENTRY)_ZN9S20997C33D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20997C33D1Ev,_ZTv0_n24_N9S20997C33D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1736_N9S20997C33D1Ev,_ZThn1144_N9S20997C33D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S20997C33D1Ev,_ZThn940_N9S20997C33D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3080_N9S20997C33D1Ev,_ZThn2020_N9S20997C33D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3224_N9S20997C33D1Ev,_ZThn2112_N9S20997C33D1Ev),
  (VTBL_ENTRY)_ZN9S20997C33D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20997C1D0Ev,_ZTv0_n32_N8S20997C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2992_N8S20997C1D0Ev,_ZThn1976_N8S20997C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20997C1D1Ev,_ZTv0_n32_N8S20997C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2992_N8S20997C1D1Ev,_ZThn1976_N8S20997C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20997C1D0Ev,_ZTv0_n36_N8S20997C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N8S20997C1D0Ev,_ZThn1920_N8S20997C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20997C1D1Ev,_ZTv0_n36_N8S20997C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2928_N8S20997C1D1Ev,_ZThn1920_N8S20997C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20997C1D0Ev,_ZTv0_n40_N8S20997C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2912_N8S20997C1D0Ev,_ZThn1912_N8S20997C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S20997C1D1Ev,_ZTv0_n40_N8S20997C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2912_N8S20997C1D1Ev,_ZThn1912_N8S20997C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20997C1D0Ev,_ZTv0_n84_N8S20997C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N8S20997C1D0Ev,_ZThn1908_N8S20997C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S20997C1D1Ev,_ZTv0_n84_N8S20997C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2904_N8S20997C1D1Ev,_ZThn1908_N8S20997C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S20997C1D0Ev,_ZTv0_n56_N8S20997C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N8S20997C1D0Ev,_ZThn2120_N8S20997C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S20997C1D0Ev,_ZThn1000_N8S20997C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S20997C1D1Ev,_ZTv0_n56_N8S20997C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3240_N8S20997C1D1Ev,_ZThn2120_N8S20997C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S20997C1D1Ev,_ZThn1000_N8S20997C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N8S20997C1D0Ev,_ZTv0_n96_N8S20997C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1424_N8S20997C1D0Ev,_ZThn944_N8S20997C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n192_N8S20997C1D1Ev,_ZTv0_n96_N8S20997C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1424_N8S20997C1D1Ev,_ZThn944_N8S20997C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C1D0Ev,_ZTv0_n28_N8S20997C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S20997C1D0Ev,_ZThn172_N8S20997C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20997C1D1Ev,_ZTv0_n28_N8S20997C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S20997C1D1Ev,_ZThn172_N8S20997C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20997C1D0Ev,_ZTv0_n48_N8S20997C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20997C1D0Ev,_ZThn16_N8S20997C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20997C1D1Ev,_ZTv0_n48_N8S20997C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20997C1D1Ev,_ZThn16_N8S20997C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C1D0Ev,_ZTv0_n24_N8S20997C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3472_N8S20997C1D0Ev,_ZThn2276_N8S20997C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3464_N8S20997C1D0Ev,_ZThn2272_N8S20997C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3224_N8S20997C1D0Ev,_ZThn2112_N8S20997C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3080_N8S20997C1D0Ev,_ZThn2020_N8S20997C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1736_N8S20997C1D0Ev,_ZThn1144_N8S20997C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S20997C1D0Ev,_ZThn940_N8S20997C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20997C1D0Ev,_ZThn12_N8S20997C1D0Ev),
  (VTBL_ENTRY)_ZN8S20997C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20997C1D1Ev,_ZTv0_n24_N8S20997C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3472_N8S20997C1D1Ev,_ZThn2276_N8S20997C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3464_N8S20997C1D1Ev,_ZThn2272_N8S20997C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3224_N8S20997C1D1Ev,_ZThn2112_N8S20997C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn3080_N8S20997C1D1Ev,_ZThn2020_N8S20997C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1736_N8S20997C1D1Ev,_ZThn1144_N8S20997C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S20997C1D1Ev,_ZThn940_N8S20997C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20997C1D1Ev,_ZThn12_N8S20997C1D1Ev),
  (VTBL_ENTRY)_ZN8S20997C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20997C1 = {  "S20997C1", // class name
  bases_S20997C1, 103,
  &(vtc_S20997C1[0]), // expected_vtbl_contents
  &(vtt_S20997C1[0]), // expected_vtt_contents
  ABISELECT(3536,2324), // object size
  NSPAIRA(_ZTI8S20997C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20997C1),369, //virtual function table var
  35, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20997C1),305, //virtual table table var
  76, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3444C3  {
  int s3444c3f0;
  __tsi64 s3444c3f1;
  void *s3444c3f2[4];
  int s3444c3f3[2];
  void *s3444c3f4;
  ::S3214C4_nt s3444c3f5;
  void *s3444c3f6[2];
  virtual  ~S3444C3(); // _ZN7S3444C3D1Ev
  virtual void  v9(); // _ZN7S3444C32v9Ev
  virtual void  v10(); // _ZN7S3444C33v10Ev
  virtual void  v11(); // _ZN7S3444C33v11Ev
  virtual void  v12(); // _ZN7S3444C33v12Ev
  virtual void  v13(); // _ZN7S3444C33v13Ev
  virtual void  v14(); // _ZN7S3444C33v14Ev
  virtual void  v15(); // _ZN7S3444C33v15Ev
  virtual void  v16(); // _ZN7S3444C33v16Ev
  virtual void  v17(); // _ZN7S3444C33v17Ev
  virtual void  v18(); // _ZN7S3444C33v18Ev
  virtual void  v19(); // _ZN7S3444C33v19Ev
  virtual void  v20(); // _ZN7S3444C33v20Ev
  virtual void  v21(); // _ZN7S3444C33v21Ev
  virtual void  v22(); // _ZN7S3444C33v22Ev
  virtual void  v23(); // _ZN7S3444C33v23Ev
  virtual void  v24(); // _ZN7S3444C33v24Ev
  virtual void  v25(); // _ZN7S3444C33v25Ev
  virtual void  v26(); // _ZN7S3444C33v26Ev
  virtual void  v27(); // _ZN7S3444C33v27Ev
  virtual void  v28(); // _ZN7S3444C33v28Ev
  virtual void  v29(); // _ZN7S3444C33v29Ev
  virtual void  v30(); // _ZN7S3444C33v30Ev
  virtual void  v31(); // _ZN7S3444C33v31Ev
  virtual void  v32(); // _ZN7S3444C33v32Ev
  virtual void  v33(); // _ZN7S3444C33v33Ev
  virtual void  v34(); // _ZN7S3444C33v34Ev
  virtual void  v35(); // _ZN7S3444C33v35Ev
  virtual void  v36(); // _ZN7S3444C33v36Ev
  virtual void  v37(); // _ZN7S3444C33v37Ev
  virtual void  v38(); // _ZN7S3444C33v38Ev
  virtual void  v39(); // _ZN7S3444C33v39Ev
  virtual void  v40(); // _ZN7S3444C33v40Ev
  virtual void  v41(); // _ZN7S3444C33v41Ev
  virtual void  v42(); // _ZN7S3444C33v42Ev
  virtual void  v43(); // _ZN7S3444C33v43Ev
  virtual void  v44(); // _ZN7S3444C33v44Ev
  virtual void  v45(); // _ZN7S3444C33v45Ev
  virtual void  v46(); // _ZN7S3444C33v46Ev
  virtual void  v47(); // _ZN7S3444C33v47Ev
  virtual void  v48(); // _ZN7S3444C33v48Ev
  virtual void  v49(); // _ZN7S3444C33v49Ev
  virtual void  v50(); // _ZN7S3444C33v50Ev
  virtual void  v51(); // _ZN7S3444C33v51Ev
  virtual void  v52(); // _ZN7S3444C33v52Ev
  virtual void  v53(); // _ZN7S3444C33v53Ev
  virtual void  v54(); // _ZN7S3444C33v54Ev
  virtual void  v55(); // _ZN7S3444C33v55Ev
  virtual void  v56(); // _ZN7S3444C33v56Ev
  virtual void  v57(); // _ZN7S3444C33v57Ev
  virtual void  v58(); // _ZN7S3444C33v58Ev
  virtual void  v59(); // _ZN7S3444C33v59Ev
  virtual void  v60(); // _ZN7S3444C33v60Ev
  virtual void  v61(); // _ZN7S3444C33v61Ev
  virtual void  v62(); // _ZN7S3444C33v62Ev
  virtual void  v63(); // _ZN7S3444C33v63Ev
  virtual void  v64(); // _ZN7S3444C33v64Ev
  virtual void  v65(); // _ZN7S3444C33v65Ev
  virtual void  v66(); // _ZN7S3444C33v66Ev
  virtual void  v67(); // _ZN7S3444C33v67Ev
  virtual void  v68(); // _ZN7S3444C33v68Ev
  virtual void  v69(); // _ZN7S3444C33v69Ev
  virtual void  v70(); // _ZN7S3444C33v70Ev
  virtual void  v71(); // _ZN7S3444C33v71Ev
  virtual void  v72(); // _ZN7S3444C33v72Ev
  S3444C3(); // tgen
};
//SIG(-1 S3444C3) 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]}


 S3444C3 ::~S3444C3(){ note_dtor("S3444C3", this);}
void  S3444C3 ::v9(){vfunc_called(this, "_ZN7S3444C32v9Ev");}
void  S3444C3 ::v10(){vfunc_called(this, "_ZN7S3444C33v10Ev");}
void  S3444C3 ::v11(){vfunc_called(this, "_ZN7S3444C33v11Ev");}
void  S3444C3 ::v12(){vfunc_called(this, "_ZN7S3444C33v12Ev");}
void  S3444C3 ::v13(){vfunc_called(this, "_ZN7S3444C33v13Ev");}
void  S3444C3 ::v14(){vfunc_called(this, "_ZN7S3444C33v14Ev");}
void  S3444C3 ::v15(){vfunc_called(this, "_ZN7S3444C33v15Ev");}
void  S3444C3 ::v16(){vfunc_called(this, "_ZN7S3444C33v16Ev");}
void  S3444C3 ::v17(){vfunc_called(this, "_ZN7S3444C33v17Ev");}
void  S3444C3 ::v18(){vfunc_called(this, "_ZN7S3444C33v18Ev");}
void  S3444C3 ::v19(){vfunc_called(this, "_ZN7S3444C33v19Ev");}
void  S3444C3 ::v20(){vfunc_called(this, "_ZN7S3444C33v20Ev");}
void  S3444C3 ::v21(){vfunc_called(this, "_ZN7S3444C33v21Ev");}
void  S3444C3 ::v22(){vfunc_called(this, "_ZN7S3444C33v22Ev");}
void  S3444C3 ::v23(){vfunc_called(this, "_ZN7S3444C33v23Ev");}
void  S3444C3 ::v24(){vfunc_called(this, "_ZN7S3444C33v24Ev");}
void  S3444C3 ::v25(){vfunc_called(this, "_ZN7S3444C33v25Ev");}
void  S3444C3 ::v26(){vfunc_called(this, "_ZN7S3444C33v26Ev");}
void  S3444C3 ::v27(){vfunc_called(this, "_ZN7S3444C33v27Ev");}
void  S3444C3 ::v28(){vfunc_called(this, "_ZN7S3444C33v28Ev");}
void  S3444C3 ::v29(){vfunc_called(this, "_ZN7S3444C33v29Ev");}
void  S3444C3 ::v30(){vfunc_called(this, "_ZN7S3444C33v30Ev");}
void  S3444C3 ::v31(){vfunc_called(this, "_ZN7S3444C33v31Ev");}
void  S3444C3 ::v32(){vfunc_called(this, "_ZN7S3444C33v32Ev");}
void  S3444C3 ::v33(){vfunc_called(this, "_ZN7S3444C33v33Ev");}
void  S3444C3 ::v34(){vfunc_called(this, "_ZN7S3444C33v34Ev");}
void  S3444C3 ::v35(){vfunc_called(this, "_ZN7S3444C33v35Ev");}
void  S3444C3 ::v36(){vfunc_called(this, "_ZN7S3444C33v36Ev");}
void  S3444C3 ::v37(){vfunc_called(this, "_ZN7S3444C33v37Ev");}
void  S3444C3 ::v38(){vfunc_called(this, "_ZN7S3444C33v38Ev");}
void  S3444C3 ::v39(){vfunc_called(this, "_ZN7S3444C33v39Ev");}
void  S3444C3 ::v40(){vfunc_called(this, "_ZN7S3444C33v40Ev");}
void  S3444C3 ::v41(){vfunc_called(this, "_ZN7S3444C33v41Ev");}
void  S3444C3 ::v42(){vfunc_called(this, "_ZN7S3444C33v42Ev");}
void  S3444C3 ::v43(){vfunc_called(this, "_ZN7S3444C33v43Ev");}
void  S3444C3 ::v44(){vfunc_called(this, "_ZN7S3444C33v44Ev");}
void  S3444C3 ::v45(){vfunc_called(this, "_ZN7S3444C33v45Ev");}
void  S3444C3 ::v46(){vfunc_called(this, "_ZN7S3444C33v46Ev");}
void  S3444C3 ::v47(){vfunc_called(this, "_ZN7S3444C33v47Ev");}
void  S3444C3 ::v48(){vfunc_called(this, "_ZN7S3444C33v48Ev");}
void  S3444C3 ::v49(){vfunc_called(this, "_ZN7S3444C33v49Ev");}
void  S3444C3 ::v50(){vfunc_called(this, "_ZN7S3444C33v50Ev");}
void  S3444C3 ::v51(){vfunc_called(this, "_ZN7S3444C33v51Ev");}
void  S3444C3 ::v52(){vfunc_called(this, "_ZN7S3444C33v52Ev");}
void  S3444C3 ::v53(){vfunc_called(this, "_ZN7S3444C33v53Ev");}
void  S3444C3 ::v54(){vfunc_called(this, "_ZN7S3444C33v54Ev");}
void  S3444C3 ::v55(){vfunc_called(this, "_ZN7S3444C33v55Ev");}
void  S3444C3 ::v56(){vfunc_called(this, "_ZN7S3444C33v56Ev");}
void  S3444C3 ::v57(){vfunc_called(this, "_ZN7S3444C33v57Ev");}
void  S3444C3 ::v58(){vfunc_called(this, "_ZN7S3444C33v58Ev");}
void  S3444C3 ::v59(){vfunc_called(this, "_ZN7S3444C33v59Ev");}
void  S3444C3 ::v60(){vfunc_called(this, "_ZN7S3444C33v60Ev");}
void  S3444C3 ::v61(){vfunc_called(this, "_ZN7S3444C33v61Ev");}
void  S3444C3 ::v62(){vfunc_called(this, "_ZN7S3444C33v62Ev");}
void  S3444C3 ::v63(){vfunc_called(this, "_ZN7S3444C33v63Ev");}
void  S3444C3 ::v64(){vfunc_called(this, "_ZN7S3444C33v64Ev");}
void  S3444C3 ::v65(){vfunc_called(this, "_ZN7S3444C33v65Ev");}
void  S3444C3 ::v66(){vfunc_called(this, "_ZN7S3444C33v66Ev");}
void  S3444C3 ::v67(){vfunc_called(this, "_ZN7S3444C33v67Ev");}
void  S3444C3 ::v68(){vfunc_called(this, "_ZN7S3444C33v68Ev");}
void  S3444C3 ::v69(){vfunc_called(this, "_ZN7S3444C33v69Ev");}
void  S3444C3 ::v70(){vfunc_called(this, "_ZN7S3444C33v70Ev");}
void  S3444C3 ::v71(){vfunc_called(this, "_ZN7S3444C33v71Ev");}
void  S3444C3 ::v72(){vfunc_called(this, "_ZN7S3444C33v72Ev");}
S3444C3 ::S3444C3(){ note_ctor("S3444C3", this);} // tgen

static void Test_S3444C3()
{
  extern Class_Descriptor cd_S3444C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3444C3, buf);
    S3444C3 *dp, &lv = *(dp=new (buf) S3444C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3444C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3444C3)");
    check_field_offset(lv, s3444c3f0, ABISELECT(8,4), "S3444C3.s3444c3f0");
    check_field_offset(lv, s3444c3f1, ABISELECT(16,8), "S3444C3.s3444c3f1");
    check_field_offset(lv, s3444c3f2, ABISELECT(24,16), "S3444C3.s3444c3f2");
    check_field_offset(lv, s3444c3f3, ABISELECT(56,32), "S3444C3.s3444c3f3");
    check_field_offset(lv, s3444c3f4, ABISELECT(64,40), "S3444C3.s3444c3f4");
    check_field_offset(lv, s3444c3f5, ABISELECT(72,44), "S3444C3.s3444c3f5");
    check_field_offset(lv, s3444c3f6, ABISELECT(80,52), "S3444C3.s3444c3f6");
    test_class_info(&lv, &cd_S3444C3);
    dp->~S3444C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3444C3(Test_S3444C3, "S3444C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3444C3C1Ev();
extern void _ZN7S3444C3D1Ev();
Name_Map name_map_S3444C3[] = {
  NSPAIR(_ZN7S3444C3C1Ev),
  NSPAIR(_ZN7S3444C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3444C3[];
extern void _ZN7S3444C3D1Ev();
extern void _ZN7S3444C3D0Ev();
extern void _ZN7S3444C32v9Ev();
extern void _ZN7S3444C33v10Ev();
extern void _ZN7S3444C33v11Ev();
extern void _ZN7S3444C33v12Ev();
extern void _ZN7S3444C33v13Ev();
extern void _ZN7S3444C33v14Ev();
extern void _ZN7S3444C33v15Ev();
extern void _ZN7S3444C33v16Ev();
extern void _ZN7S3444C33v17Ev();
extern void _ZN7S3444C33v18Ev();
extern void _ZN7S3444C33v19Ev();
extern void _ZN7S3444C33v20Ev();
extern void _ZN7S3444C33v21Ev();
extern void _ZN7S3444C33v22Ev();
extern void _ZN7S3444C33v23Ev();
extern void _ZN7S3444C33v24Ev();
extern void _ZN7S3444C33v25Ev();
extern void _ZN7S3444C33v26Ev();
extern void _ZN7S3444C33v27Ev();
extern void _ZN7S3444C33v28Ev();
extern void _ZN7S3444C33v29Ev();
extern void _ZN7S3444C33v30Ev();
extern void _ZN7S3444C33v31Ev();
extern void _ZN7S3444C33v32Ev();
extern void _ZN7S3444C33v33Ev();
extern void _ZN7S3444C33v34Ev();
extern void _ZN7S3444C33v35Ev();
extern void _ZN7S3444C33v36Ev();
extern void _ZN7S3444C33v37Ev();
extern void _ZN7S3444C33v38Ev();
extern void _ZN7S3444C33v39Ev();
extern void _ZN7S3444C33v40Ev();
extern void _ZN7S3444C33v41Ev();
extern void _ZN7S3444C33v42Ev();
extern void _ZN7S3444C33v43Ev();
extern void _ZN7S3444C33v44Ev();
extern void _ZN7S3444C33v45Ev();
extern void _ZN7S3444C33v46Ev();
extern void _ZN7S3444C33v47Ev();
extern void _ZN7S3444C33v48Ev();
extern void _ZN7S3444C33v49Ev();
extern void _ZN7S3444C33v50Ev();
extern void _ZN7S3444C33v51Ev();
extern void _ZN7S3444C33v52Ev();
extern void _ZN7S3444C33v53Ev();
extern void _ZN7S3444C33v54Ev();
extern void _ZN7S3444C33v55Ev();
extern void _ZN7S3444C33v56Ev();
extern void _ZN7S3444C33v57Ev();
extern void _ZN7S3444C33v58Ev();
extern void _ZN7S3444C33v59Ev();
extern void _ZN7S3444C33v60Ev();
extern void _ZN7S3444C33v61Ev();
extern void _ZN7S3444C33v62Ev();
extern void _ZN7S3444C33v63Ev();
extern void _ZN7S3444C33v64Ev();
extern void _ZN7S3444C33v65Ev();
extern void _ZN7S3444C33v66Ev();
extern void _ZN7S3444C33v67Ev();
extern void _ZN7S3444C33v68Ev();
extern void _ZN7S3444C33v69Ev();
extern void _ZN7S3444C33v70Ev();
extern void _ZN7S3444C33v71Ev();
extern void _ZN7S3444C33v72Ev();
static  VTBL_ENTRY vtc_S3444C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3444C3[0]),
  (VTBL_ENTRY)&_ZN7S3444C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3444C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3444C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v72Ev,
};
extern VTBL_ENTRY _ZTI7S3444C3[];
extern  VTBL_ENTRY _ZTV7S3444C3[];
Class_Descriptor cd_S3444C3 = {  "S3444C3", // class name
  0,0,//no base classes
  &(vtc_S3444C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3444C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3444C3),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  S3444C17_nt  {
  int s3444c17f0[4];
  void  mf3444c17(); // _ZN11S3444C17_nt9mf3444c17Ev
};
//SIG(-1 S3444C17_nt) C1{ m Fi[4]}


void  S3444C17_nt ::mf3444c17(){}

//skip512 S3444C17_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3444C13  {
  ::S3214C21_nt s3444c13f0;
  int s3444c13f1;
  unsigned int s3444c13f2:1;
  unsigned int s3444c13f3:1;
  unsigned int s3444c13f4:1;
  unsigned int s3444c13f5:1;
  char s3444c13f6;
  ::S3214C21_nt s3444c13f7;
  ::S3214C21_nt s3444c13f8;
  ::S3214C21_nt s3444c13f9;
  ::S3214C21_nt s3444c13f10;
  unsigned int s3444c13f11:1;
  ::S3444C17_nt s3444c13f12;
  unsigned int s3444c13f13:1;
  int s3444c13f14[8];
  unsigned int s3444c13f15:1;
  int s3444c13f16;
  void  mf3444c13(); // _ZN8S3444C139mf3444c13Ev
};
//SIG(-1 S3444C13) C1{ m FC2{ BC3{ BC4{ BC5{ m Fp Fi[2]}}}} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fc FC2 FC2 FC2 FC2 Fi:1 FC6{ m Fi[4]} Fi:1 Fi[8] Fi:1 Fi}


void  S3444C13 ::mf3444c13(){}

static void Test_S3444C13()
{
  {
    init_simple_test("S3444C13");
    static S3444C13 lv;
    check2(sizeof(lv), ABISELECT(152,132), "sizeof(S3444C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3444C13)");
    check_field_offset(lv, s3444c13f0, 0, "S3444C13.s3444c13f0");
    check_field_offset(lv, s3444c13f1, ABISELECT(16,12), "S3444C13.s3444c13f1");
    set_bf_and_test(lv, s3444c13f2, ABISELECT(20,16), 0, 1, 1, "S3444C13");
    set_bf_and_test(lv, s3444c13f3, ABISELECT(20,16), 1, 1, 1, "S3444C13");
    set_bf_and_test(lv, s3444c13f4, ABISELECT(20,16), 2, 1, 1, "S3444C13");
    set_bf_and_test(lv, s3444c13f5, ABISELECT(20,16), 3, 1, 1, "S3444C13");
    check_field_offset(lv, s3444c13f6, ABISELECT(21,17), "S3444C13.s3444c13f6");
    check_field_offset(lv, s3444c13f7, ABISELECT(24,20), "S3444C13.s3444c13f7");
    check_field_offset(lv, s3444c13f8, ABISELECT(40,32), "S3444C13.s3444c13f8");
    check_field_offset(lv, s3444c13f9, ABISELECT(56,44), "S3444C13.s3444c13f9");
    check_field_offset(lv, s3444c13f10, ABISELECT(72,56), "S3444C13.s3444c13f10");
    set_bf_and_test(lv, s3444c13f11, ABISELECT(88,68), 0, 1, 1, "S3444C13");
    check_field_offset(lv, s3444c13f12, ABISELECT(92,72), "S3444C13.s3444c13f12");
    set_bf_and_test(lv, s3444c13f13, ABISELECT(108,88), 0, 1, 1, "S3444C13");
    check_field_offset(lv, s3444c13f14, ABISELECT(112,92), "S3444C13.s3444c13f14");
    set_bf_and_test(lv, s3444c13f15, ABISELECT(144,124), 0, 1, 1, "S3444C13");
    check_field_offset(lv, s3444c13f16, ABISELECT(148,128), "S3444C13.s3444c13f16");
  }
}
static Arrange_To_Call_Me vS3444C13(Test_S3444C13, "S3444C13", ABISELECT(152,132));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3444C2  : S3444C3 {
  ::S3214C22 s3444c2f0;
  ::S3214C17 s3444c2f1;
  ::S675C20_nt s3444c2f2;
  int s3444c2f3[2];
  ::S3444C13 s3444c2f4;
  int s3444c2f5;
  virtual  ~S3444C2(); // _ZN7S3444C2D1Ev
  virtual void  v73(); // _ZN7S3444C23v73Ev
  virtual void  v74(); // _ZN7S3444C23v74Ev
  virtual void  v75(); // _ZN7S3444C23v75Ev
  virtual void  v76(); // _ZN7S3444C23v76Ev
  virtual void  v77(); // _ZN7S3444C23v77Ev
  virtual void  v78(); // _ZN7S3444C23v78Ev
  virtual void  v79(); // _ZN7S3444C23v79Ev
  virtual void  v80(); // _ZN7S3444C23v80Ev
  virtual void  v81(); // _ZN7S3444C23v81Ev
  S3444C2(); // tgen
};
//SIG(-1 S3444C2) C1{ BC2{ vd 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 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC4{ BC5{ BC6{ m Fp Fi[2]}}} FC7{ BC8{ BC6}} FC9{ BC10{ m FC5 Fp Fi}} Fi[2] FC11{ m FC12{ BC4} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fc FC12 FC12 FC12 FC12 Fi:1 FC13{ m Fi[4]} Fi:1 Fi[8] Fi:1 Fi} Fi}


 S3444C2 ::~S3444C2(){ note_dtor("S3444C2", this);}
void  S3444C2 ::v73(){vfunc_called(this, "_ZN7S3444C23v73Ev");}
void  S3444C2 ::v74(){vfunc_called(this, "_ZN7S3444C23v74Ev");}
void  S3444C2 ::v75(){vfunc_called(this, "_ZN7S3444C23v75Ev");}
void  S3444C2 ::v76(){vfunc_called(this, "_ZN7S3444C23v76Ev");}
void  S3444C2 ::v77(){vfunc_called(this, "_ZN7S3444C23v77Ev");}
void  S3444C2 ::v78(){vfunc_called(this, "_ZN7S3444C23v78Ev");}
void  S3444C2 ::v79(){vfunc_called(this, "_ZN7S3444C23v79Ev");}
void  S3444C2 ::v80(){vfunc_called(this, "_ZN7S3444C23v80Ev");}
void  S3444C2 ::v81(){vfunc_called(this, "_ZN7S3444C23v81Ev");}
S3444C2 ::S3444C2(){ note_ctor("S3444C2", this);} // tgen

static void Test_S3444C2()
{
  extern Class_Descriptor cd_S3444C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,63)];
    init_test(&cd_S3444C2, buf);
    S3444C2 *dp, &lv = *(dp=new (buf) S3444C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,248), "sizeof(S3444C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3444C2)");
    check_base_class_offset(lv, (S3444C3*), 0, "S3444C2");
    check_field_offset(lv, s3444c2f0, ABISELECT(96,60), "S3444C2.s3444c2f0");
    check_field_offset(lv, s3444c2f1, ABISELECT(112,72), "S3444C2.s3444c2f1");
    check_field_offset(lv, s3444c2f2, ABISELECT(128,84), "S3444C2.s3444c2f2");
    check_field_offset(lv, s3444c2f3, ABISELECT(160,104), "S3444C2.s3444c2f3");
    check_field_offset(lv, s3444c2f4, ABISELECT(168,112), "S3444C2.s3444c2f4");
    check_field_offset(lv, s3444c2f5, ABISELECT(320,244), "S3444C2.s3444c2f5");
    test_class_info(&lv, &cd_S3444C2);
    dp->~S3444C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3444C2(Test_S3444C2, "S3444C2", ABISELECT(328,248));

#else // __cplusplus

extern void _ZN7S3444C2C1Ev();
extern void _ZN7S3444C2D1Ev();
Name_Map name_map_S3444C2[] = {
  NSPAIR(_ZN7S3444C2C1Ev),
  NSPAIR(_ZN7S3444C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3444C3;
extern VTBL_ENTRY _ZTI7S3444C3[];
extern  VTBL_ENTRY _ZTV7S3444C3[];
static Base_Class bases_S3444C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3444C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3444C2[];
extern void _ZN7S3444C2D1Ev();
extern void _ZN7S3444C2D0Ev();
extern void _ZN7S3444C32v9Ev();
extern void _ZN7S3444C33v10Ev();
extern void _ZN7S3444C33v11Ev();
extern void _ZN7S3444C33v12Ev();
extern void _ZN7S3444C33v13Ev();
extern void _ZN7S3444C33v14Ev();
extern void _ZN7S3444C33v15Ev();
extern void _ZN7S3444C33v16Ev();
extern void _ZN7S3444C33v17Ev();
extern void _ZN7S3444C33v18Ev();
extern void _ZN7S3444C33v19Ev();
extern void _ZN7S3444C33v20Ev();
extern void _ZN7S3444C33v21Ev();
extern void _ZN7S3444C33v22Ev();
extern void _ZN7S3444C33v23Ev();
extern void _ZN7S3444C33v24Ev();
extern void _ZN7S3444C33v25Ev();
extern void _ZN7S3444C33v26Ev();
extern void _ZN7S3444C33v27Ev();
extern void _ZN7S3444C33v28Ev();
extern void _ZN7S3444C33v29Ev();
extern void _ZN7S3444C33v30Ev();
extern void _ZN7S3444C33v31Ev();
extern void _ZN7S3444C33v32Ev();
extern void _ZN7S3444C33v33Ev();
extern void _ZN7S3444C33v34Ev();
extern void _ZN7S3444C33v35Ev();
extern void _ZN7S3444C33v36Ev();
extern void _ZN7S3444C33v37Ev();
extern void _ZN7S3444C33v38Ev();
extern void _ZN7S3444C33v39Ev();
extern void _ZN7S3444C33v40Ev();
extern void _ZN7S3444C33v41Ev();
extern void _ZN7S3444C33v42Ev();
extern void _ZN7S3444C33v43Ev();
extern void _ZN7S3444C33v44Ev();
extern void _ZN7S3444C33v45Ev();
extern void _ZN7S3444C33v46Ev();
extern void _ZN7S3444C33v47Ev();
extern void _ZN7S3444C33v48Ev();
extern void _ZN7S3444C33v49Ev();
extern void _ZN7S3444C33v50Ev();
extern void _ZN7S3444C33v51Ev();
extern void _ZN7S3444C33v52Ev();
extern void _ZN7S3444C33v53Ev();
extern void _ZN7S3444C33v54Ev();
extern void _ZN7S3444C33v55Ev();
extern void _ZN7S3444C33v56Ev();
extern void _ZN7S3444C33v57Ev();
extern void _ZN7S3444C33v58Ev();
extern void _ZN7S3444C33v59Ev();
extern void _ZN7S3444C33v60Ev();
extern void _ZN7S3444C33v61Ev();
extern void _ZN7S3444C33v62Ev();
extern void _ZN7S3444C33v63Ev();
extern void _ZN7S3444C33v64Ev();
extern void _ZN7S3444C33v65Ev();
extern void _ZN7S3444C33v66Ev();
extern void _ZN7S3444C33v67Ev();
extern void _ZN7S3444C33v68Ev();
extern void _ZN7S3444C33v69Ev();
extern void _ZN7S3444C33v70Ev();
extern void _ZN7S3444C33v71Ev();
extern void _ZN7S3444C33v72Ev();
extern void _ZN7S3444C23v73Ev();
extern void _ZN7S3444C23v74Ev();
extern void _ZN7S3444C23v75Ev();
extern void _ZN7S3444C23v76Ev();
extern void _ZN7S3444C23v77Ev();
extern void _ZN7S3444C23v78Ev();
extern void _ZN7S3444C23v79Ev();
extern void _ZN7S3444C23v80Ev();
extern void _ZN7S3444C23v81Ev();
static  VTBL_ENTRY vtc_S3444C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3444C2[0]),
  (VTBL_ENTRY)&_ZN7S3444C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3444C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3444C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v80Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v81Ev,
};
extern VTBL_ENTRY _ZTI7S3444C2[];
extern  VTBL_ENTRY _ZTV7S3444C2[];
Class_Descriptor cd_S3444C2 = {  "S3444C2", // class name
  bases_S3444C2, 1,
  &(vtc_S3444C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(328,248), // object size
  NSPAIRA(_ZTI7S3444C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3444C2),77, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3444C1  : S3444C2 {
  ::S3214C11 s3444c1f0;
  virtual  ~S3444C1(); // _ZN7S3444C1D1Ev
  virtual void  v1(); // _ZN7S3444C12v1Ev
  virtual void  v2(); // _ZN7S3444C12v2Ev
  virtual void  v3(); // _ZN7S3444C12v3Ev
  virtual void  v4(); // _ZN7S3444C12v4Ev
  virtual void  v5(); // _ZN7S3444C12v5Ev
  virtual void  v6(); // _ZN7S3444C12v6Ev
  virtual void  v7(); // _ZN7S3444C12v7Ev
  virtual void  v8(); // _ZN7S3444C12v8Ev
  S3444C1(); // tgen
};
//SIG(1 S3444C1) 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 v76 v77 v78 v79 v80 v81 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC8{ BC9{ BC7}} FC10{ BC11{ m FC6 Fp Fi}} Fi[2] FC12{ m FC13{ BC5} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fc FC13 FC13 FC13 FC13 Fi:1 FC14{ m Fi[4]} Fi:1 Fi[8] Fi:1 Fi} Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 FC15{ BC16{ BC7}}}


 S3444C1 ::~S3444C1(){ note_dtor("S3444C1", this);}
void  S3444C1 ::v1(){vfunc_called(this, "_ZN7S3444C12v1Ev");}
void  S3444C1 ::v2(){vfunc_called(this, "_ZN7S3444C12v2Ev");}
void  S3444C1 ::v3(){vfunc_called(this, "_ZN7S3444C12v3Ev");}
void  S3444C1 ::v4(){vfunc_called(this, "_ZN7S3444C12v4Ev");}
void  S3444C1 ::v5(){vfunc_called(this, "_ZN7S3444C12v5Ev");}
void  S3444C1 ::v6(){vfunc_called(this, "_ZN7S3444C12v6Ev");}
void  S3444C1 ::v7(){vfunc_called(this, "_ZN7S3444C12v7Ev");}
void  S3444C1 ::v8(){vfunc_called(this, "_ZN7S3444C12v8Ev");}
S3444C1 ::S3444C1(){ note_ctor("S3444C1", this);} // tgen

static void Test_S3444C1()
{
  extern Class_Descriptor cd_S3444C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(44,66)];
    init_test(&cd_S3444C1, buf);
    S3444C1 *dp, &lv = *(dp=new (buf) S3444C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(344,260), "sizeof(S3444C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3444C1)");
    check_base_class_offset(lv, (S3444C3*)(S3444C2*), 0, "S3444C1");
    check_base_class_offset(lv, (S3444C2*), 0, "S3444C1");
    check_field_offset(lv, s3444c1f0, ABISELECT(328,248), "S3444C1.s3444c1f0");
    test_class_info(&lv, &cd_S3444C1);
    dp->~S3444C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3444C1(Test_S3444C1, "S3444C1", ABISELECT(344,260));

#else // __cplusplus

extern void _ZN7S3444C1C1Ev();
extern void _ZN7S3444C1D1Ev();
Name_Map name_map_S3444C1[] = {
  NSPAIR(_ZN7S3444C1C1Ev),
  NSPAIR(_ZN7S3444C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3444C3;
extern VTBL_ENTRY _ZTI7S3444C3[];
extern  VTBL_ENTRY _ZTV7S3444C3[];
extern Class_Descriptor cd_S3444C2;
extern VTBL_ENTRY _ZTI7S3444C2[];
extern  VTBL_ENTRY _ZTV7S3444C2[];
static Base_Class bases_S3444C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3444C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3444C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3444C1[];
extern void _ZN7S3444C1D1Ev();
extern void _ZN7S3444C1D0Ev();
extern void _ZN7S3444C32v9Ev();
extern void _ZN7S3444C33v10Ev();
extern void _ZN7S3444C33v11Ev();
extern void _ZN7S3444C33v12Ev();
extern void _ZN7S3444C33v13Ev();
extern void _ZN7S3444C33v14Ev();
extern void _ZN7S3444C33v15Ev();
extern void _ZN7S3444C33v16Ev();
extern void _ZN7S3444C33v17Ev();
extern void _ZN7S3444C33v18Ev();
extern void _ZN7S3444C33v19Ev();
extern void _ZN7S3444C33v20Ev();
extern void _ZN7S3444C33v21Ev();
extern void _ZN7S3444C33v22Ev();
extern void _ZN7S3444C33v23Ev();
extern void _ZN7S3444C33v24Ev();
extern void _ZN7S3444C33v25Ev();
extern void _ZN7S3444C33v26Ev();
extern void _ZN7S3444C33v27Ev();
extern void _ZN7S3444C33v28Ev();
extern void _ZN7S3444C33v29Ev();
extern void _ZN7S3444C33v30Ev();
extern void _ZN7S3444C33v31Ev();
extern void _ZN7S3444C33v32Ev();
extern void _ZN7S3444C33v33Ev();
extern void _ZN7S3444C33v34Ev();
extern void _ZN7S3444C33v35Ev();
extern void _ZN7S3444C33v36Ev();
extern void _ZN7S3444C33v37Ev();
extern void _ZN7S3444C33v38Ev();
extern void _ZN7S3444C33v39Ev();
extern void _ZN7S3444C33v40Ev();
extern void _ZN7S3444C33v41Ev();
extern void _ZN7S3444C33v42Ev();
extern void _ZN7S3444C33v43Ev();
extern void _ZN7S3444C33v44Ev();
extern void _ZN7S3444C33v45Ev();
extern void _ZN7S3444C33v46Ev();
extern void _ZN7S3444C33v47Ev();
extern void _ZN7S3444C33v48Ev();
extern void _ZN7S3444C33v49Ev();
extern void _ZN7S3444C33v50Ev();
extern void _ZN7S3444C33v51Ev();
extern void _ZN7S3444C33v52Ev();
extern void _ZN7S3444C33v53Ev();
extern void _ZN7S3444C33v54Ev();
extern void _ZN7S3444C33v55Ev();
extern void _ZN7S3444C33v56Ev();
extern void _ZN7S3444C33v57Ev();
extern void _ZN7S3444C33v58Ev();
extern void _ZN7S3444C33v59Ev();
extern void _ZN7S3444C33v60Ev();
extern void _ZN7S3444C33v61Ev();
extern void _ZN7S3444C33v62Ev();
extern void _ZN7S3444C33v63Ev();
extern void _ZN7S3444C33v64Ev();
extern void _ZN7S3444C33v65Ev();
extern void _ZN7S3444C33v66Ev();
extern void _ZN7S3444C33v67Ev();
extern void _ZN7S3444C33v68Ev();
extern void _ZN7S3444C33v69Ev();
extern void _ZN7S3444C33v70Ev();
extern void _ZN7S3444C33v71Ev();
extern void _ZN7S3444C33v72Ev();
extern void _ZN7S3444C23v73Ev();
extern void _ZN7S3444C23v74Ev();
extern void _ZN7S3444C23v75Ev();
extern void _ZN7S3444C23v76Ev();
extern void _ZN7S3444C23v77Ev();
extern void _ZN7S3444C23v78Ev();
extern void _ZN7S3444C23v79Ev();
extern void _ZN7S3444C23v80Ev();
extern void _ZN7S3444C23v81Ev();
extern void _ZN7S3444C12v1Ev();
extern void _ZN7S3444C12v2Ev();
extern void _ZN7S3444C12v3Ev();
extern void _ZN7S3444C12v4Ev();
extern void _ZN7S3444C12v5Ev();
extern void _ZN7S3444C12v6Ev();
extern void _ZN7S3444C12v7Ev();
extern void _ZN7S3444C12v8Ev();
static  VTBL_ENTRY vtc_S3444C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3444C1[0]),
  (VTBL_ENTRY)&_ZN7S3444C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3444C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3444C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v69Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v70Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v71Ev,
  (VTBL_ENTRY)&_ZN7S3444C33v72Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v74Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v75Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v76Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v77Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v78Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v79Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v80Ev,
  (VTBL_ENTRY)&_ZN7S3444C23v81Ev,
  (VTBL_ENTRY)&_ZN7S3444C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3444C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3444C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3444C12v4Ev,
  (VTBL_ENTRY)&_ZN7S3444C12v5Ev,
  (VTBL_ENTRY)&_ZN7S3444C12v6Ev,
  (VTBL_ENTRY)&_ZN7S3444C12v7Ev,
  (VTBL_ENTRY)&_ZN7S3444C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S3444C1[];
extern  VTBL_ENTRY _ZTV7S3444C1[];
Class_Descriptor cd_S3444C1 = {  "S3444C1", // class name
  bases_S3444C1, 2,
  &(vtc_S3444C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(344,260), // object size
  NSPAIRA(_ZTI7S3444C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3444C1),85, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S222C6  {
  int s222c6f0;
  __tsi64 s222c6f1;
  void *s222c6f2[4];
  int s222c6f3[2];
  void *s222c6f4;
  ::S3214C4_nt s222c6f5;
  void *s222c6f6[2];
  virtual  ~S222C6(); // _ZN6S222C6D1Ev
  virtual void  v4(); // _ZN6S222C62v4Ev
  virtual void  v5(); // _ZN6S222C62v5Ev
  virtual void  v6(); // _ZN6S222C62v6Ev
  virtual void  v7(); // _ZN6S222C62v7Ev
  virtual void  v8(); // _ZN6S222C62v8Ev
  virtual void  v9(); // _ZN6S222C62v9Ev
  virtual void  v10(); // _ZN6S222C63v10Ev
  virtual void  v11(); // _ZN6S222C63v11Ev
  virtual void  v12(); // _ZN6S222C63v12Ev
  virtual void  v13(); // _ZN6S222C63v13Ev
  virtual void  v14(); // _ZN6S222C63v14Ev
  virtual void  v15(); // _ZN6S222C63v15Ev
  virtual void  v16(); // _ZN6S222C63v16Ev
  virtual void  v17(); // _ZN6S222C63v17Ev
  virtual void  v18(); // _ZN6S222C63v18Ev
  virtual void  v19(); // _ZN6S222C63v19Ev
  virtual void  v20(); // _ZN6S222C63v20Ev
  virtual void  v21(); // _ZN6S222C63v21Ev
  virtual void  v22(); // _ZN6S222C63v22Ev
  virtual void  v23(); // _ZN6S222C63v23Ev
  virtual void  v24(); // _ZN6S222C63v24Ev
  virtual void  v25(); // _ZN6S222C63v25Ev
  virtual void  v26(); // _ZN6S222C63v26Ev
  virtual void  v27(); // _ZN6S222C63v27Ev
  virtual void  v28(); // _ZN6S222C63v28Ev
  virtual void  v29(); // _ZN6S222C63v29Ev
  virtual void  v30(); // _ZN6S222C63v30Ev
  virtual void  v31(); // _ZN6S222C63v31Ev
  virtual void  v32(); // _ZN6S222C63v32Ev
  virtual void  v33(); // _ZN6S222C63v33Ev
  virtual void  v34(); // _ZN6S222C63v34Ev
  virtual void  v35(); // _ZN6S222C63v35Ev
  virtual void  v36(); // _ZN6S222C63v36Ev
  virtual void  v37(); // _ZN6S222C63v37Ev
  virtual void  v38(); // _ZN6S222C63v38Ev
  virtual void  v39(); // _ZN6S222C63v39Ev
  virtual void  v40(); // _ZN6S222C63v40Ev
  virtual void  v41(); // _ZN6S222C63v41Ev
  virtual void  v42(); // _ZN6S222C63v42Ev
  virtual void  v43(); // _ZN6S222C63v43Ev
  virtual void  v44(); // _ZN6S222C63v44Ev
  virtual void  v45(); // _ZN6S222C63v45Ev
  virtual void  v46(); // _ZN6S222C63v46Ev
  virtual void  v47(); // _ZN6S222C63v47Ev
  virtual void  v48(); // _ZN6S222C63v48Ev
  virtual void  v49(); // _ZN6S222C63v49Ev
  virtual void  v50(); // _ZN6S222C63v50Ev
  virtual void  v51(); // _ZN6S222C63v51Ev
  virtual void  v52(); // _ZN6S222C63v52Ev
  virtual void  v53(); // _ZN6S222C63v53Ev
  virtual void  v54(); // _ZN6S222C63v54Ev
  virtual void  v55(); // _ZN6S222C63v55Ev
  virtual void  v56(); // _ZN6S222C63v56Ev
  virtual void  v57(); // _ZN6S222C63v57Ev
  virtual void  v58(); // _ZN6S222C63v58Ev
  virtual void  v59(); // _ZN6S222C63v59Ev
  virtual void  v60(); // _ZN6S222C63v60Ev
  virtual void  v61(); // _ZN6S222C63v61Ev
  virtual void  v62(); // _ZN6S222C63v62Ev
  virtual void  v63(); // _ZN6S222C63v63Ev
  virtual void  v64(); // _ZN6S222C63v64Ev
  virtual void  v65(); // _ZN6S222C63v65Ev
  virtual void  v66(); // _ZN6S222C63v66Ev
  virtual void  v67(); // _ZN6S222C63v67Ev
  S222C6(); // tgen
};
//SIG(-1 S222C6) 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]}


 S222C6 ::~S222C6(){ note_dtor("S222C6", this);}
void  S222C6 ::v4(){vfunc_called(this, "_ZN6S222C62v4Ev");}
void  S222C6 ::v5(){vfunc_called(this, "_ZN6S222C62v5Ev");}
void  S222C6 ::v6(){vfunc_called(this, "_ZN6S222C62v6Ev");}
void  S222C6 ::v7(){vfunc_called(this, "_ZN6S222C62v7Ev");}
void  S222C6 ::v8(){vfunc_called(this, "_ZN6S222C62v8Ev");}
void  S222C6 ::v9(){vfunc_called(this, "_ZN6S222C62v9Ev");}
void  S222C6 ::v10(){vfunc_called(this, "_ZN6S222C63v10Ev");}
void  S222C6 ::v11(){vfunc_called(this, "_ZN6S222C63v11Ev");}
void  S222C6 ::v12(){vfunc_called(this, "_ZN6S222C63v12Ev");}
void  S222C6 ::v13(){vfunc_called(this, "_ZN6S222C63v13Ev");}
void  S222C6 ::v14(){vfunc_called(this, "_ZN6S222C63v14Ev");}
void  S222C6 ::v15(){vfunc_called(this, "_ZN6S222C63v15Ev");}
void  S222C6 ::v16(){vfunc_called(this, "_ZN6S222C63v16Ev");}
void  S222C6 ::v17(){vfunc_called(this, "_ZN6S222C63v17Ev");}
void  S222C6 ::v18(){vfunc_called(this, "_ZN6S222C63v18Ev");}
void  S222C6 ::v19(){vfunc_called(this, "_ZN6S222C63v19Ev");}
void  S222C6 ::v20(){vfunc_called(this, "_ZN6S222C63v20Ev");}
void  S222C6 ::v21(){vfunc_called(this, "_ZN6S222C63v21Ev");}
void  S222C6 ::v22(){vfunc_called(this, "_ZN6S222C63v22Ev");}
void  S222C6 ::v23(){vfunc_called(this, "_ZN6S222C63v23Ev");}
void  S222C6 ::v24(){vfunc_called(this, "_ZN6S222C63v24Ev");}
void  S222C6 ::v25(){vfunc_called(this, "_ZN6S222C63v25Ev");}
void  S222C6 ::v26(){vfunc_called(this, "_ZN6S222C63v26Ev");}
void  S222C6 ::v27(){vfunc_called(this, "_ZN6S222C63v27Ev");}
void  S222C6 ::v28(){vfunc_called(this, "_ZN6S222C63v28Ev");}
void  S222C6 ::v29(){vfunc_called(this, "_ZN6S222C63v29Ev");}
void  S222C6 ::v30(){vfunc_called(this, "_ZN6S222C63v30Ev");}
void  S222C6 ::v31(){vfunc_called(this, "_ZN6S222C63v31Ev");}
void  S222C6 ::v32(){vfunc_called(this, "_ZN6S222C63v32Ev");}
void  S222C6 ::v33(){vfunc_called(this, "_ZN6S222C63v33Ev");}
void  S222C6 ::v34(){vfunc_called(this, "_ZN6S222C63v34Ev");}
void  S222C6 ::v35(){vfunc_called(this, "_ZN6S222C63v35Ev");}
void  S222C6 ::v36(){vfunc_called(this, "_ZN6S222C63v36Ev");}
void  S222C6 ::v37(){vfunc_called(this, "_ZN6S222C63v37Ev");}
void  S222C6 ::v38(){vfunc_called(this, "_ZN6S222C63v38Ev");}
void  S222C6 ::v39(){vfunc_called(this, "_ZN6S222C63v39Ev");}
void  S222C6 ::v40(){vfunc_called(this, "_ZN6S222C63v40Ev");}
void  S222C6 ::v41(){vfunc_called(this, "_ZN6S222C63v41Ev");}
void  S222C6 ::v42(){vfunc_called(this, "_ZN6S222C63v42Ev");}
void  S222C6 ::v43(){vfunc_called(this, "_ZN6S222C63v43Ev");}
void  S222C6 ::v44(){vfunc_called(this, "_ZN6S222C63v44Ev");}
void  S222C6 ::v45(){vfunc_called(this, "_ZN6S222C63v45Ev");}
void  S222C6 ::v46(){vfunc_called(this, "_ZN6S222C63v46Ev");}
void  S222C6 ::v47(){vfunc_called(this, "_ZN6S222C63v47Ev");}
void  S222C6 ::v48(){vfunc_called(this, "_ZN6S222C63v48Ev");}
void  S222C6 ::v49(){vfunc_called(this, "_ZN6S222C63v49Ev");}
void  S222C6 ::v50(){vfunc_called(this, "_ZN6S222C63v50Ev");}
void  S222C6 ::v51(){vfunc_called(this, "_ZN6S222C63v51Ev");}
void  S222C6 ::v52(){vfunc_called(this, "_ZN6S222C63v52Ev");}
void  S222C6 ::v53(){vfunc_called(this, "_ZN6S222C63v53Ev");}
void  S222C6 ::v54(){vfunc_called(this, "_ZN6S222C63v54Ev");}
void  S222C6 ::v55(){vfunc_called(this, "_ZN6S222C63v55Ev");}
void  S222C6 ::v56(){vfunc_called(this, "_ZN6S222C63v56Ev");}
void  S222C6 ::v57(){vfunc_called(this, "_ZN6S222C63v57Ev");}
void  S222C6 ::v58(){vfunc_called(this, "_ZN6S222C63v58Ev");}
void  S222C6 ::v59(){vfunc_called(this, "_ZN6S222C63v59Ev");}
void  S222C6 ::v60(){vfunc_called(this, "_ZN6S222C63v60Ev");}
void  S222C6 ::v61(){vfunc_called(this, "_ZN6S222C63v61Ev");}
void  S222C6 ::v62(){vfunc_called(this, "_ZN6S222C63v62Ev");}
void  S222C6 ::v63(){vfunc_called(this, "_ZN6S222C63v63Ev");}
void  S222C6 ::v64(){vfunc_called(this, "_ZN6S222C63v64Ev");}
void  S222C6 ::v65(){vfunc_called(this, "_ZN6S222C63v65Ev");}
void  S222C6 ::v66(){vfunc_called(this, "_ZN6S222C63v66Ev");}
void  S222C6 ::v67(){vfunc_called(this, "_ZN6S222C63v67Ev");}
S222C6 ::S222C6(){ note_ctor("S222C6", this);} // tgen

static void Test_S222C6()
{
  extern Class_Descriptor cd_S222C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S222C6, buf);
    S222C6 *dp, &lv = *(dp=new (buf) S222C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S222C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S222C6)");
    check_field_offset(lv, s222c6f0, ABISELECT(8,4), "S222C6.s222c6f0");
    check_field_offset(lv, s222c6f1, ABISELECT(16,8), "S222C6.s222c6f1");
    check_field_offset(lv, s222c6f2, ABISELECT(24,16), "S222C6.s222c6f2");
    check_field_offset(lv, s222c6f3, ABISELECT(56,32), "S222C6.s222c6f3");
    check_field_offset(lv, s222c6f4, ABISELECT(64,40), "S222C6.s222c6f4");
    check_field_offset(lv, s222c6f5, ABISELECT(72,44), "S222C6.s222c6f5");
    check_field_offset(lv, s222c6f6, ABISELECT(80,52), "S222C6.s222c6f6");
    test_class_info(&lv, &cd_S222C6);
    dp->~S222C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS222C6(Test_S222C6, "S222C6", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S222C6C1Ev();
extern void _ZN6S222C6D1Ev();
Name_Map name_map_S222C6[] = {
  NSPAIR(_ZN6S222C6C1Ev),
  NSPAIR(_ZN6S222C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S222C6[];
extern void _ZN6S222C6D1Ev();
extern void _ZN6S222C6D0Ev();
extern void _ZN6S222C62v4Ev();
extern void _ZN6S222C62v5Ev();
extern void _ZN6S222C62v6Ev();
extern void _ZN6S222C62v7Ev();
extern void _ZN6S222C62v8Ev();
extern void _ZN6S222C62v9Ev();
extern void _ZN6S222C63v10Ev();
extern void _ZN6S222C63v11Ev();
extern void _ZN6S222C63v12Ev();
extern void _ZN6S222C63v13Ev();
extern void _ZN6S222C63v14Ev();
extern void _ZN6S222C63v15Ev();
extern void _ZN6S222C63v16Ev();
extern void _ZN6S222C63v17Ev();
extern void _ZN6S222C63v18Ev();
extern void _ZN6S222C63v19Ev();
extern void _ZN6S222C63v20Ev();
extern void _ZN6S222C63v21Ev();
extern void _ZN6S222C63v22Ev();
extern void _ZN6S222C63v23Ev();
extern void _ZN6S222C63v24Ev();
extern void _ZN6S222C63v25Ev();
extern void _ZN6S222C63v26Ev();
extern void _ZN6S222C63v27Ev();
extern void _ZN6S222C63v28Ev();
extern void _ZN6S222C63v29Ev();
extern void _ZN6S222C63v30Ev();
extern void _ZN6S222C63v31Ev();
extern void _ZN6S222C63v32Ev();
extern void _ZN6S222C63v33Ev();
extern void _ZN6S222C63v34Ev();
extern void _ZN6S222C63v35Ev();
extern void _ZN6S222C63v36Ev();
extern void _ZN6S222C63v37Ev();
extern void _ZN6S222C63v38Ev();
extern void _ZN6S222C63v39Ev();
extern void _ZN6S222C63v40Ev();
extern void _ZN6S222C63v41Ev();
extern void _ZN6S222C63v42Ev();
extern void _ZN6S222C63v43Ev();
extern void _ZN6S222C63v44Ev();
extern void _ZN6S222C63v45Ev();
extern void _ZN6S222C63v46Ev();
extern void _ZN6S222C63v47Ev();
extern void _ZN6S222C63v48Ev();
extern void _ZN6S222C63v49Ev();
extern void _ZN6S222C63v50Ev();
extern void _ZN6S222C63v51Ev();
extern void _ZN6S222C63v52Ev();
extern void _ZN6S222C63v53Ev();
extern void _ZN6S222C63v54Ev();
extern void _ZN6S222C63v55Ev();
extern void _ZN6S222C63v56Ev();
extern void _ZN6S222C63v57Ev();
extern void _ZN6S222C63v58Ev();
extern void _ZN6S222C63v59Ev();
extern void _ZN6S222C63v60Ev();
extern void _ZN6S222C63v61Ev();
extern void _ZN6S222C63v62Ev();
extern void _ZN6S222C63v63Ev();
extern void _ZN6S222C63v64Ev();
extern void _ZN6S222C63v65Ev();
extern void _ZN6S222C63v66Ev();
extern void _ZN6S222C63v67Ev();
static  VTBL_ENTRY vtc_S222C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S222C6[0]),
  (VTBL_ENTRY)&_ZN6S222C6D1Ev,
  (VTBL_ENTRY)&_ZN6S222C6D0Ev,
  (VTBL_ENTRY)&_ZN6S222C62v4Ev,
  (VTBL_ENTRY)&_ZN6S222C62v5Ev,
  (VTBL_ENTRY)&_ZN6S222C62v6Ev,
  (VTBL_ENTRY)&_ZN6S222C62v7Ev,
  (VTBL_ENTRY)&_ZN6S222C62v8Ev,
  (VTBL_ENTRY)&_ZN6S222C62v9Ev,
  (VTBL_ENTRY)&_ZN6S222C63v10Ev,
  (VTBL_ENTRY)&_ZN6S222C63v11Ev,
  (VTBL_ENTRY)&_ZN6S222C63v12Ev,
  (VTBL_ENTRY)&_ZN6S222C63v13Ev,
  (VTBL_ENTRY)&_ZN6S222C63v14Ev,
  (VTBL_ENTRY)&_ZN6S222C63v15Ev,
  (VTBL_ENTRY)&_ZN6S222C63v16Ev,
  (VTBL_ENTRY)&_ZN6S222C63v17Ev,
  (VTBL_ENTRY)&_ZN6S222C63v18Ev,
  (VTBL_ENTRY)&_ZN6S222C63v19Ev,
  (VTBL_ENTRY)&_ZN6S222C63v20Ev,
  (VTBL_ENTRY)&_ZN6S222C63v21Ev,
  (VTBL_ENTRY)&_ZN6S222C63v22Ev,
  (VTBL_ENTRY)&_ZN6S222C63v23Ev,
  (VTBL_ENTRY)&_ZN6S222C63v24Ev,
  (VTBL_ENTRY)&_ZN6S222C63v25Ev,
  (VTBL_ENTRY)&_ZN6S222C63v26Ev,
  (VTBL_ENTRY)&_ZN6S222C63v27Ev,
  (VTBL_ENTRY)&_ZN6S222C63v28Ev,
  (VTBL_ENTRY)&_ZN6S222C63v29Ev,
  (VTBL_ENTRY)&_ZN6S222C63v30Ev,
  (VTBL_ENTRY)&_ZN6S222C63v31Ev,
  (VTBL_ENTRY)&_ZN6S222C63v32Ev,
  (VTBL_ENTRY)&_ZN6S222C63v33Ev,
  (VTBL_ENTRY)&_ZN6S222C63v34Ev,
  (VTBL_ENTRY)&_ZN6S222C63v35Ev,
  (VTBL_ENTRY)&_ZN6S222C63v36Ev,
  (VTBL_ENTRY)&_ZN6S222C63v37Ev,
  (VTBL_ENTRY)&_ZN6S222C63v38Ev,
  (VTBL_ENTRY)&_ZN6S222C63v39Ev,
  (VTBL_ENTRY)&_ZN6S222C63v40Ev,
  (VTBL_ENTRY)&_ZN6S222C63v41Ev,
  (VTBL_ENTRY)&_ZN6S222C63v42Ev,
  (VTBL_ENTRY)&_ZN6S222C63v43Ev,
  (VTBL_ENTRY)&_ZN6S222C63v44Ev,
  (VTBL_ENTRY)&_ZN6S222C63v45Ev,
  (VTBL_ENTRY)&_ZN6S222C63v46Ev,
  (VTBL_ENTRY)&_ZN6S222C63v47Ev,
  (VTBL_ENTRY)&_ZN6S222C63v48Ev,
  (VTBL_ENTRY)&_ZN6S222C63v49Ev,
  (VTBL_ENTRY)&_ZN6S222C63v50Ev,
  (VTBL_ENTRY)&_ZN6S222C63v51Ev,
  (VTBL_ENTRY)&_ZN6S222C63v52Ev,
  (VTBL_ENTRY)&_ZN6S222C63v53Ev,
  (VTBL_ENTRY)&_ZN6S222C63v54Ev,
  (VTBL_ENTRY)&_ZN6S222C63v55Ev,
  (VTBL_ENTRY)&_ZN6S222C63v56Ev,
  (VTBL_ENTRY)&_ZN6S222C63v57Ev,
  (VTBL_ENTRY)&_ZN6S222C63v58Ev,
  (VTBL_ENTRY)&_ZN6S222C63v59Ev,
  (VTBL_ENTRY)&_ZN6S222C63v60Ev,
  (VTBL_ENTRY)&_ZN6S222C63v61Ev,
  (VTBL_ENTRY)&_ZN6S222C63v62Ev,
  (VTBL_ENTRY)&_ZN6S222C63v63Ev,
  (VTBL_ENTRY)&_ZN6S222C63v64Ev,
  (VTBL_ENTRY)&_ZN6S222C63v65Ev,
  (VTBL_ENTRY)&_ZN6S222C63v66Ev,
  (VTBL_ENTRY)&_ZN6S222C63v67Ev,
};
extern VTBL_ENTRY _ZTI6S222C6[];
extern  VTBL_ENTRY _ZTV6S222C6[];
Class_Descriptor cd_S222C6 = {  "S222C6", // class name
  0,0,//no base classes
  &(vtc_S222C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S222C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S222C6),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  S222C5  : S222C6 {
  virtual  ~S222C5(); // _ZN6S222C5D1Ev
  virtual void  v68(); // _ZN6S222C53v68Ev
  virtual void  v69(); // _ZN6S222C53v69Ev
  S222C5(); // tgen
};
//SIG(-1 S222C5) 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}


 S222C5 ::~S222C5(){ note_dtor("S222C5", this);}
void  S222C5 ::v68(){vfunc_called(this, "_ZN6S222C53v68Ev");}
void  S222C5 ::v69(){vfunc_called(this, "_ZN6S222C53v69Ev");}
S222C5 ::S222C5(){ note_ctor("S222C5", this);} // tgen

static void Test_S222C5()
{
  extern Class_Descriptor cd_S222C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S222C5, buf);
    S222C5 *dp, &lv = *(dp=new (buf) S222C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S222C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S222C5)");
    check_base_class_offset(lv, (S222C6*), 0, "S222C5");
    test_class_info(&lv, &cd_S222C5);
    dp->~S222C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS222C5(Test_S222C5, "S222C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S222C5C1Ev();
extern void _ZN6S222C5D1Ev();
Name_Map name_map_S222C5[] = {
  NSPAIR(_ZN6S222C5C1Ev),
  NSPAIR(_ZN6S222C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S222C6;
extern VTBL_ENTRY _ZTI6S222C6[];
extern  VTBL_ENTRY _ZTV6S222C6[];
static Base_Class bases_S222C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S222C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI6S222C5[];
extern void _ZN6S222C5D1Ev();
extern void _ZN6S222C5D0Ev();
extern void _ZN6S222C62v4Ev();
extern void _ZN6S222C62v5Ev();
extern void _ZN6S222C62v6Ev();
extern void _ZN6S222C62v7Ev();
extern void _ZN6S222C62v8Ev();
extern void _ZN6S222C62v9Ev();
extern void _ZN6S222C63v10Ev();
extern void _ZN6S222C63v11Ev();
extern void _ZN6S222C63v12Ev();
extern void _ZN6S222C63v13Ev();
extern void _ZN6S222C63v14Ev();
extern void _ZN6S222C63v15Ev();
extern void _ZN6S222C63v16Ev();
extern void _ZN6S222C63v17Ev();
extern void _ZN6S222C63v18Ev();
extern void _ZN6S222C63v19Ev();
extern void _ZN6S222C63v20Ev();
extern void _ZN6S222C63v21Ev();
extern void _ZN6S222C63v22Ev();
extern void _ZN6S222C63v23Ev();
extern void _ZN6S222C63v24Ev();
extern void _ZN6S222C63v25Ev();
extern void _ZN6S222C63v26Ev();
extern void _ZN6S222C63v27Ev();
extern void _ZN6S222C63v28Ev();
extern void _ZN6S222C63v29Ev();
extern void _ZN6S222C63v30Ev();
extern void _ZN6S222C63v31Ev();
extern void _ZN6S222C63v32Ev();
extern void _ZN6S222C63v33Ev();
extern void _ZN6S222C63v34Ev();
extern void _ZN6S222C63v35Ev();
extern void _ZN6S222C63v36Ev();
extern void _ZN6S222C63v37Ev();
extern void _ZN6S222C63v38Ev();
extern void _ZN6S222C63v39Ev();
extern void _ZN6S222C63v40Ev();
extern void _ZN6S222C63v41Ev();
extern void _ZN6S222C63v42Ev();
extern void _ZN6S222C63v43Ev();
extern void _ZN6S222C63v44Ev();
extern void _ZN6S222C63v45Ev();
extern void _ZN6S222C63v46Ev();
extern void _ZN6S222C63v47Ev();
extern void _ZN6S222C63v48Ev();
extern void _ZN6S222C63v49Ev();
extern void _ZN6S222C63v50Ev();
extern void _ZN6S222C63v51Ev();
extern void _ZN6S222C63v52Ev();
extern void _ZN6S222C63v53Ev();
extern void _ZN6S222C63v54Ev();
extern void _ZN6S222C63v55Ev();
extern void _ZN6S222C63v56Ev();
extern void _ZN6S222C63v57Ev();
extern void _ZN6S222C63v58Ev();
extern void _ZN6S222C63v59Ev();
extern void _ZN6S222C63v60Ev();
extern void _ZN6S222C63v61Ev();
extern void _ZN6S222C63v62Ev();
extern void _ZN6S222C63v63Ev();
extern void _ZN6S222C63v64Ev();
extern void _ZN6S222C63v65Ev();
extern void _ZN6S222C63v66Ev();
extern void _ZN6S222C63v67Ev();
extern void _ZN6S222C53v68Ev();
extern void _ZN6S222C53v69Ev();
static  VTBL_ENTRY vtc_S222C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S222C5[0]),
  (VTBL_ENTRY)&_ZN6S222C5D1Ev,
  (VTBL_ENTRY)&_ZN6S222C5D0Ev,
  (VTBL_ENTRY)&_ZN6S222C62v4Ev,
  (VTBL_ENTRY)&_ZN6S222C62v5Ev,
  (VTBL_ENTRY)&_ZN6S222C62v6Ev,
  (VTBL_ENTRY)&_ZN6S222C62v7Ev,
  (VTBL_ENTRY)&_ZN6S222C62v8Ev,
  (VTBL_ENTRY)&_ZN6S222C62v9Ev,
  (VTBL_ENTRY)&_ZN6S222C63v10Ev,
  (VTBL_ENTRY)&_ZN6S222C63v11Ev,
  (VTBL_ENTRY)&_ZN6S222C63v12Ev,
  (VTBL_ENTRY)&_ZN6S222C63v13Ev,
  (VTBL_ENTRY)&_ZN6S222C63v14Ev,
  (VTBL_ENTRY)&_ZN6S222C63v15Ev,
  (VTBL_ENTRY)&_ZN6S222C63v16Ev,
  (VTBL_ENTRY)&_ZN6S222C63v17Ev,
  (VTBL_ENTRY)&_ZN6S222C63v18Ev,
  (VTBL_ENTRY)&_ZN6S222C63v19Ev,
  (VTBL_ENTRY)&_ZN6S222C63v20Ev,
  (VTBL_ENTRY)&_ZN6S222C63v21Ev,
  (VTBL_ENTRY)&_ZN6S222C63v22Ev,
  (VTBL_ENTRY)&_ZN6S222C63v23Ev,
  (VTBL_ENTRY)&_ZN6S222C63v24Ev,
  (VTBL_ENTRY)&_ZN6S222C63v25Ev,
  (VTBL_ENTRY)&_ZN6S222C63v26Ev,
  (VTBL_ENTRY)&_ZN6S222C63v27Ev,
  (VTBL_ENTRY)&_ZN6S222C63v28Ev,
  (VTBL_ENTRY)&_ZN6S222C63v29Ev,
  (VTBL_ENTRY)&_ZN6S222C63v30Ev,
  (VTBL_ENTRY)&_ZN6S222C63v31Ev,
  (VTBL_ENTRY)&_ZN6S222C63v32Ev,
  (VTBL_ENTRY)&_ZN6S222C63v33Ev,
  (VTBL_ENTRY)&_ZN6S222C63v34Ev,
  (VTBL_ENTRY)&_ZN6S222C63v35Ev,
  (VTBL_ENTRY)&_ZN6S222C63v36Ev,
  (VTBL_ENTRY)&_ZN6S222C63v37Ev,
  (VTBL_ENTRY)&_ZN6S222C63v38Ev,
  (VTBL_ENTRY)&_ZN6S222C63v39Ev,
  (VTBL_ENTRY)&_ZN6S222C63v40Ev,
  (VTBL_ENTRY)&_ZN6S222C63v41Ev,
  (VTBL_ENTRY)&_ZN6S222C63v42Ev,
  (VTBL_ENTRY)&_ZN6S222C63v43Ev,
  (VTBL_ENTRY)&_ZN6S222C63v44Ev,
  (VTBL_ENTRY)&_ZN6S222C63v45Ev,
  (VTBL_ENTRY)&_ZN6S222C63v46Ev,
  (VTBL_ENTRY)&_ZN6S222C63v47Ev,
  (VTBL_ENTRY)&_ZN6S222C63v48Ev,
  (VTBL_ENTRY)&_ZN6S222C63v49Ev,
  (VTBL_ENTRY)&_ZN6S222C63v50Ev,
  (VTBL_ENTRY)&_ZN6S222C63v51Ev,
  (VTBL_ENTRY)&_ZN6S222C63v52Ev,
  (VTBL_ENTRY)&_ZN6S222C63v53Ev,
  (VTBL_ENTRY)&_ZN6S222C63v54Ev,
  (VTBL_ENTRY)&_ZN6S222C63v55Ev,
  (VTBL_ENTRY)&_ZN6S222C63v56Ev,
  (VTBL_ENTRY)&_ZN6S222C63v57Ev,
  (VTBL_ENTRY)&_ZN6S222C63v58Ev,
  (VTBL_ENTRY)&_ZN6S222C63v59Ev,
  (VTBL_ENTRY)&_ZN6S222C63v60Ev,
  (VTBL_ENTRY)&_ZN6S222C63v61Ev,
  (VTBL_ENTRY)&_ZN6S222C63v62Ev,
  (VTBL_ENTRY)&_ZN6S222C63v63Ev,
  (VTBL_ENTRY)&_ZN6S222C63v64Ev,
  (VTBL_ENTRY)&_ZN6S222C63v65Ev,
  (VTBL_ENTRY)&_ZN6S222C63v66Ev,
  (VTBL_ENTRY)&_ZN6S222C63v67Ev,
  (VTBL_ENTRY)&_ZN6S222C53v68Ev,
  (VTBL_ENTRY)&_ZN6S222C53v69Ev,
};
extern VTBL_ENTRY _ZTI6S222C5[];
extern  VTBL_ENTRY _ZTV6S222C5[];
Class_Descriptor cd_S222C5 = {  "S222C5", // class name
  bases_S222C5, 1,
  &(vtc_S222C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S222C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S222C5),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  S222C4  : S222C5 {
  char s222c4f0;
  ::S3214C22 s222c4f1;
  ::S23C10_nt s222c4f2;
  virtual  ~S222C4(); // _ZN6S222C4D1Ev
  virtual void  v70(); // _ZN6S222C43v70Ev
  virtual void  v71(); // _ZN6S222C43v71Ev
  virtual void  v72(); // _ZN6S222C43v72Ev
  virtual void  v73(); // _ZN6S222C43v73Ev
  virtual void  v74(); // _ZN6S222C43v74Ev
  virtual void  v75(); // _ZN6S222C43v75Ev
  virtual void  v76(); // _ZN6S222C43v76Ev
  virtual void  v77(); // _ZN6S222C43v77Ev
  virtual void  v78(); // _ZN6S222C43v78Ev
  virtual void  v79(); // _ZN6S222C43v79Ev
  virtual void  v80(); // _ZN6S222C43v80Ev
  virtual void  v81(); // _ZN6S222C43v81Ev
  S222C4(); // tgen
};
//SIG(-1 S222C4) 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}}


 S222C4 ::~S222C4(){ note_dtor("S222C4", this);}
void  S222C4 ::v70(){vfunc_called(this, "_ZN6S222C43v70Ev");}
void  S222C4 ::v71(){vfunc_called(this, "_ZN6S222C43v71Ev");}
void  S222C4 ::v72(){vfunc_called(this, "_ZN6S222C43v72Ev");}
void  S222C4 ::v73(){vfunc_called(this, "_ZN6S222C43v73Ev");}
void  S222C4 ::v74(){vfunc_called(this, "_ZN6S222C43v74Ev");}
void  S222C4 ::v75(){vfunc_called(this, "_ZN6S222C43v75Ev");}
void  S222C4 ::v76(){vfunc_called(this, "_ZN6S222C43v76Ev");}
void  S222C4 ::v77(){vfunc_called(this, "_ZN6S222C43v77Ev");}
void  S222C4 ::v78(){vfunc_called(this, "_ZN6S222C43v78Ev");}
void  S222C4 ::v79(){vfunc_called(this, "_ZN6S222C43v79Ev");}
void  S222C4 ::v80(){vfunc_called(this, "_ZN6S222C43v80Ev");}
void  S222C4 ::v81(){vfunc_called(this, "_ZN6S222C43v81Ev");}
S222C4 ::S222C4(){ note_ctor("S222C4", this);} // tgen

static void Test_S222C4()
{
  extern Class_Descriptor cd_S222C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S222C4, buf);
    S222C4 *dp, &lv = *(dp=new (buf) S222C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S222C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S222C4)");
    check_base_class_offset(lv, (S222C6*)(S222C5*), 0, "S222C4");
    check_base_class_offset(lv, (S222C5*), 0, "S222C4");
    check_field_offset(lv, s222c4f0, ABISELECT(96,60), "S222C4.s222c4f0");
    check_field_offset(lv, s222c4f1, ABISELECT(104,64), "S222C4.s222c4f1");
    check_field_offset(lv, s222c4f2, ABISELECT(120,76), "S222C4.s222c4f2");
    test_class_info(&lv, &cd_S222C4);
    dp->~S222C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS222C4(Test_S222C4, "S222C4", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN6S222C4C1Ev();
extern void _ZN6S222C4D1Ev();
Name_Map name_map_S222C4[] = {
  NSPAIR(_ZN6S222C4C1Ev),
  NSPAIR(_ZN6S222C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S222C6;
extern VTBL_ENTRY _ZTI6S222C6[];
extern  VTBL_ENTRY _ZTV6S222C6[];
extern Class_Descriptor cd_S222C5;
extern VTBL_ENTRY _ZTI6S222C5[];
extern  VTBL_ENTRY _ZTV6S222C5[];
static Base_Class bases_S222C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S222C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S222C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI6S222C4[];
extern void _ZN6S222C4D1Ev();
extern void _ZN6S222C4D0Ev();
extern void _ZN6S222C62v4Ev();
extern void _ZN6S222C62v5Ev();
extern void _ZN6S222C62v6Ev();
extern void _ZN6S222C62v7Ev();
extern void _ZN6S222C62v8Ev();
extern void _ZN6S222C62v9Ev();
extern void _ZN6S222C63v10Ev();
extern void _ZN6S222C63v11Ev();
extern void _ZN6S222C63v12Ev();
extern void _ZN6S222C63v13Ev();
extern void _ZN6S222C63v14Ev();
extern void _ZN6S222C63v15Ev();
extern void _ZN6S222C63v16Ev();
extern void _ZN6S222C63v17Ev();
extern void _ZN6S222C63v18Ev();
extern void _ZN6S222C63v19Ev();
extern void _ZN6S222C63v20Ev();
extern void _ZN6S222C63v21Ev();
extern void _ZN6S222C63v22Ev();
extern void _ZN6S222C63v23Ev();
extern void _ZN6S222C63v24Ev();
extern void _ZN6S222C63v25Ev();
extern void _ZN6S222C63v26Ev();
extern void _ZN6S222C63v27Ev();
extern void _ZN6S222C63v28Ev();
extern void _ZN6S222C63v29Ev();
extern void _ZN6S222C63v30Ev();
extern void _ZN6S222C63v31Ev();
extern void _ZN6S222C63v32Ev();
extern void _ZN6S222C63v33Ev();
extern void _ZN6S222C63v34Ev();
extern void _ZN6S222C63v35Ev();
extern void _ZN6S222C63v36Ev();
extern void _ZN6S222C63v37Ev();
extern void _ZN6S222C63v38Ev();
extern void _ZN6S222C63v39Ev();
extern void _ZN6S222C63v40Ev();
extern void _ZN6S222C63v41Ev();
extern void _ZN6S222C63v42Ev();
extern void _ZN6S222C63v43Ev();
extern void _ZN6S222C63v44Ev();
extern void _ZN6S222C63v45Ev();
extern void _ZN6S222C63v46Ev();
extern void _ZN6S222C63v47Ev();
extern void _ZN6S222C63v48Ev();
extern void _ZN6S222C63v49Ev();
extern void _ZN6S222C63v50Ev();
extern void _ZN6S222C63v51Ev();
extern void _ZN6S222C63v52Ev();
extern void _ZN6S222C63v53Ev();
extern void _ZN6S222C63v54Ev();
extern void _ZN6S222C63v55Ev();
extern void _ZN6S222C63v56Ev();
extern void _ZN6S222C63v57Ev();
extern void _ZN6S222C63v58Ev();
extern void _ZN6S222C63v59Ev();
extern void _ZN6S222C63v60Ev();
extern void _ZN6S222C63v61Ev();
extern void _ZN6S222C63v62Ev();
extern void _ZN6S222C63v63Ev();
extern void _ZN6S222C63v64Ev();
extern void _ZN6S222C63v65Ev();
extern void _ZN6S222C63v66Ev();
extern void _ZN6S222C63v67Ev();
extern void _ZN6S222C53v68Ev();
extern void _ZN6S222C53v69Ev();
extern void _ZN6S222C43v70Ev();
extern void _ZN6S222C43v71Ev();
extern void _ZN6S222C43v72Ev();
extern void _ZN6S222C43v73Ev();
extern void _ZN6S222C43v74Ev();
extern void _ZN6S222C43v75Ev();
extern void _ZN6S222C43v76Ev();
extern void _ZN6S222C43v77Ev();
extern void _ZN6S222C43v78Ev();
extern void _ZN6S222C43v79Ev();
extern void _ZN6S222C43v80Ev();
extern void _ZN6S222C43v81Ev();
static  VTBL_ENTRY vtc_S222C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S222C4[0]),
  (VTBL_ENTRY)&_ZN6S222C4D1Ev,
  (VTBL_ENTRY)&_ZN6S222C4D0Ev,
  (VTBL_ENTRY)&_ZN6S222C62v4Ev,
  (VTBL_ENTRY)&_ZN6S222C62v5Ev,
  (VTBL_ENTRY)&_ZN6S222C62v6Ev,
  (VTBL_ENTRY)&_ZN6S222C62v7Ev,
  (VTBL_ENTRY)&_ZN6S222C62v8Ev,
  (VTBL_ENTRY)&_ZN6S222C62v9Ev,
  (VTBL_ENTRY)&_ZN6S222C63v10Ev,
  (VTBL_ENTRY)&_ZN6S222C63v11Ev,
  (VTBL_ENTRY)&_ZN6S222C63v12Ev,
  (VTBL_ENTRY)&_ZN6S222C63v13Ev,
  (VTBL_ENTRY)&_ZN6S222C63v14Ev,
  (VTBL_ENTRY)&_ZN6S222C63v15Ev,
  (VTBL_ENTRY)&_ZN6S222C63v16Ev,
  (VTBL_ENTRY)&_ZN6S222C63v17Ev,
  (VTBL_ENTRY)&_ZN6S222C63v18Ev,
  (VTBL_ENTRY)&_ZN6S222C63v19Ev,
  (VTBL_ENTRY)&_ZN6S222C63v20Ev,
  (VTBL_ENTRY)&_ZN6S222C63v21Ev,
  (VTBL_ENTRY)&_ZN6S222C63v22Ev,
  (VTBL_ENTRY)&_ZN6S222C63v23Ev,
  (VTBL_ENTRY)&_ZN6S222C63v24Ev,
  (VTBL_ENTRY)&_ZN6S222C63v25Ev,
  (VTBL_ENTRY)&_ZN6S222C63v26Ev,
  (VTBL_ENTRY)&_ZN6S222C63v27Ev,
  (VTBL_ENTRY)&_ZN6S222C63v28Ev,
  (VTBL_ENTRY)&_ZN6S222C63v29Ev,
  (VTBL_ENTRY)&_ZN6S222C63v30Ev,
  (VTBL_ENTRY)&_ZN6S222C63v31Ev,
  (VTBL_ENTRY)&_ZN6S222C63v32Ev,
  (VTBL_ENTRY)&_ZN6S222C63v33Ev,
  (VTBL_ENTRY)&_ZN6S222C63v34Ev,
  (VTBL_ENTRY)&_ZN6S222C63v35Ev,
  (VTBL_ENTRY)&_ZN6S222C63v36Ev,
  (VTBL_ENTRY)&_ZN6S222C63v37Ev,
  (VTBL_ENTRY)&_ZN6S222C63v38Ev,
  (VTBL_ENTRY)&_ZN6S222C63v39Ev,
  (VTBL_ENTRY)&_ZN6S222C63v40Ev,
  (VTBL_ENTRY)&_ZN6S222C63v41Ev,
  (VTBL_ENTRY)&_ZN6S222C63v42Ev,
  (VTBL_ENTRY)&_ZN6S222C63v43Ev,
  (VTBL_ENTRY)&_ZN6S222C63v44Ev,
  (VTBL_ENTRY)&_ZN6S222C63v45Ev,
  (VTBL_ENTRY)&_ZN6S222C63v46Ev,
  (VTBL_ENTRY)&_ZN6S222C63v47Ev,
  (VTBL_ENTRY)&_ZN6S222C63v48Ev,
  (VTBL_ENTRY)&_ZN6S222C63v49Ev,
  (VTBL_ENTRY)&_ZN6S222C63v50Ev,
  (VTBL_ENTRY)&_ZN6S222C63v51Ev,
  (VTBL_ENTRY)&_ZN6S222C63v52Ev,
  (VTBL_ENTRY)&_ZN6S222C63v53Ev,
  (VTBL_ENTRY)&_ZN6S222C63v54Ev,
  (VTBL_ENTRY)&_ZN6S222C63v55Ev,
  (VTBL_ENTRY)&_ZN6S222C63v56Ev,
  (VTBL_ENTRY)&_ZN6S222C63v57Ev,
  (VTBL_ENTRY)&_ZN6S222C63v58Ev,
  (VTBL_ENTRY)&_ZN6S222C63v59Ev,
  (VTBL_ENTRY)&_ZN6S222C63v60Ev,
  (VTBL_ENTRY)&_ZN6S222C63v61Ev,
  (VTBL_ENTRY)&_ZN6S222C63v62Ev,
  (VTBL_ENTRY)&_ZN6S222C63v63Ev,
  (VTBL_ENTRY)&_ZN6S222C63v64Ev,
  (VTBL_ENTRY)&_ZN6S222C63v65Ev,
  (VTBL_ENTRY)&_ZN6S222C63v66Ev,
  (VTBL_ENTRY)&_ZN6S222C63v67Ev,
  (VTBL_ENTRY)&_ZN6S222C53v68Ev,
  (VTBL_ENTRY)&_ZN6S222C53v69Ev,
  (VTBL_ENTRY)&_ZN6S222C43v70Ev,
  (VTBL_ENTRY)&_ZN6S222C43v71Ev,
  (VTBL_ENTRY)&_ZN6S222C43v72Ev,
  (VTBL_ENTRY)&_ZN6S222C43v73Ev,
  (VTBL_ENTRY)&_ZN6S222C43v74Ev,
  (VTBL_ENTRY)&_ZN6S222C43v75Ev,
  (VTBL_ENTRY)&_ZN6S222C43v76Ev,
  (VTBL_ENTRY)&_ZN6S222C43v77Ev,
  (VTBL_ENTRY)&_ZN6S222C43v78Ev,
  (VTBL_ENTRY)&_ZN6S222C43v79Ev,
  (VTBL_ENTRY)&_ZN6S222C43v80Ev,
  (VTBL_ENTRY)&_ZN6S222C43v81Ev,
};
extern VTBL_ENTRY _ZTI6S222C4[];
extern  VTBL_ENTRY _ZTV6S222C4[];
Class_Descriptor cd_S222C4 = {  "S222C4", // class name
  bases_S222C4, 2,
  &(vtc_S222C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI6S222C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S222C4),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  S222C3  : S222C4 {
  ::S3214C4_nt s222c3f0;
  ::S3214C22 s222c3f1;
  ::S23C10_nt s222c3f2;
  virtual  ~S222C3(); // _ZN6S222C3D1Ev
  virtual void  v82(); // _ZN6S222C33v82Ev
  virtual void  v83(); // _ZN6S222C33v83Ev
  virtual void  v84(); // _ZN6S222C33v84Ev
  virtual void  v85(); // _ZN6S222C33v85Ev
  virtual void  v86(); // _ZN6S222C33v86Ev
  virtual void  v87(); // _ZN6S222C33v87Ev
  virtual void  v88(); // _ZN6S222C33v88Ev
  virtual void  v89(); // _ZN6S222C33v89Ev
  virtual void  v90(); // _ZN6S222C33v90Ev
  S222C3(); // tgen
};
//SIG(-1 S222C3) C1{ BC2{ BC3{ BC4{ vd 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 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v74 v75} vd v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 Fc FC6{ BC7{ BC8{ m Fp Fi[2]}}} FC9{ m Fp FC5}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 FC5 FC6 FC9}


 S222C3 ::~S222C3(){ note_dtor("S222C3", this);}
void  S222C3 ::v82(){vfunc_called(this, "_ZN6S222C33v82Ev");}
void  S222C3 ::v83(){vfunc_called(this, "_ZN6S222C33v83Ev");}
void  S222C3 ::v84(){vfunc_called(this, "_ZN6S222C33v84Ev");}
void  S222C3 ::v85(){vfunc_called(this, "_ZN6S222C33v85Ev");}
void  S222C3 ::v86(){vfunc_called(this, "_ZN6S222C33v86Ev");}
void  S222C3 ::v87(){vfunc_called(this, "_ZN6S222C33v87Ev");}
void  S222C3 ::v88(){vfunc_called(this, "_ZN6S222C33v88Ev");}
void  S222C3 ::v89(){vfunc_called(this, "_ZN6S222C33v89Ev");}
void  S222C3 ::v90(){vfunc_called(this, "_ZN6S222C33v90Ev");}
S222C3 ::S222C3(){ note_ctor("S222C3", this);} // tgen

static void Test_S222C3()
{
  extern Class_Descriptor cd_S222C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,31)];
    init_test(&cd_S222C3, buf);
    S222C3 *dp, &lv = *(dp=new (buf) S222C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,120), "sizeof(S222C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S222C3)");
    check_base_class_offset(lv, (S222C6*)(S222C5*)(S222C4*), 0, "S222C3");
    check_base_class_offset(lv, (S222C5*)(S222C4*), 0, "S222C3");
    check_base_class_offset(lv, (S222C4*), 0, "S222C3");
    check_field_offset(lv, s222c3f0, ABISELECT(136,88), "S222C3.s222c3f0");
    check_field_offset(lv, s222c3f1, ABISELECT(144,96), "S222C3.s222c3f1");
    check_field_offset(lv, s222c3f2, ABISELECT(160,108), "S222C3.s222c3f2");
    test_class_info(&lv, &cd_S222C3);
    dp->~S222C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS222C3(Test_S222C3, "S222C3", ABISELECT(176,120));

#else // __cplusplus

extern void _ZN6S222C3C1Ev();
extern void _ZN6S222C3D1Ev();
Name_Map name_map_S222C3[] = {
  NSPAIR(_ZN6S222C3C1Ev),
  NSPAIR(_ZN6S222C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S222C6;
extern VTBL_ENTRY _ZTI6S222C6[];
extern  VTBL_ENTRY _ZTV6S222C6[];
extern Class_Descriptor cd_S222C5;
extern VTBL_ENTRY _ZTI6S222C5[];
extern  VTBL_ENTRY _ZTV6S222C5[];
extern Class_Descriptor cd_S222C4;
extern VTBL_ENTRY _ZTI6S222C4[];
extern  VTBL_ENTRY _ZTV6S222C4[];
static Base_Class bases_S222C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S222C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S222C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S222C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI6S222C3[];
extern void _ZN6S222C3D1Ev();
extern void _ZN6S222C3D0Ev();
extern void _ZN6S222C62v4Ev();
extern void _ZN6S222C62v5Ev();
extern void _ZN6S222C62v6Ev();
extern void _ZN6S222C62v7Ev();
extern void _ZN6S222C62v8Ev();
extern void _ZN6S222C62v9Ev();
extern void _ZN6S222C63v10Ev();
extern void _ZN6S222C63v11Ev();
extern void _ZN6S222C63v12Ev();
extern void _ZN6S222C63v13Ev();
extern void _ZN6S222C63v14Ev();
extern void _ZN6S222C63v15Ev();
extern void _ZN6S222C63v16Ev();
extern void _ZN6S222C63v17Ev();
extern void _ZN6S222C63v18Ev();
extern void _ZN6S222C63v19Ev();
extern void _ZN6S222C63v20Ev();
extern void _ZN6S222C63v21Ev();
extern void _ZN6S222C63v22Ev();
extern void _ZN6S222C63v23Ev();
extern void _ZN6S222C63v24Ev();
extern void _ZN6S222C63v25Ev();
extern void _ZN6S222C63v26Ev();
extern void _ZN6S222C63v27Ev();
extern void _ZN6S222C63v28Ev();
extern void _ZN6S222C63v29Ev();
extern void _ZN6S222C63v30Ev();
extern void _ZN6S222C63v31Ev();
extern void _ZN6S222C63v32Ev();
extern void _ZN6S222C63v33Ev();
extern void _ZN6S222C63v34Ev();
extern void _ZN6S222C63v35Ev();
extern void _ZN6S222C63v36Ev();
extern void _ZN6S222C63v37Ev();
extern void _ZN6S222C63v38Ev();
extern void _ZN6S222C63v39Ev();
extern void _ZN6S222C63v40Ev();
extern void _ZN6S222C63v41Ev();
extern void _ZN6S222C63v42Ev();
extern void _ZN6S222C63v43Ev();
extern void _ZN6S222C63v44Ev();
extern void _ZN6S222C63v45Ev();
extern void _ZN6S222C63v46Ev();
extern void _ZN6S222C63v47Ev();
extern void _ZN6S222C63v48Ev();
extern void _ZN6S222C63v49Ev();
extern void _ZN6S222C63v50Ev();
extern void _ZN6S222C63v51Ev();
extern void _ZN6S222C63v52Ev();
extern void _ZN6S222C63v53Ev();
extern void _ZN6S222C63v54Ev();
extern void _ZN6S222C63v55Ev();
extern void _ZN6S222C63v56Ev();
extern void _ZN6S222C63v57Ev();
extern void _ZN6S222C63v58Ev();
extern void _ZN6S222C63v59Ev();
extern void _ZN6S222C63v60Ev();
extern void _ZN6S222C63v61Ev();
extern void _ZN6S222C63v62Ev();
extern void _ZN6S222C63v63Ev();
extern void _ZN6S222C63v64Ev();
extern void _ZN6S222C63v65Ev();
extern void _ZN6S222C63v66Ev();
extern void _ZN6S222C63v67Ev();
extern void _ZN6S222C53v68Ev();
extern void _ZN6S222C53v69Ev();
extern void _ZN6S222C43v70Ev();
extern void _ZN6S222C43v71Ev();
extern void _ZN6S222C43v72Ev();
extern void _ZN6S222C43v73Ev();
extern void _ZN6S222C43v74Ev();
extern void _ZN6S222C43v75Ev();
extern void _ZN6S222C43v76Ev();
extern void _ZN6S222C43v77Ev();
extern void _ZN6S222C43v78Ev();
extern void _ZN6S222C43v79Ev();
extern void _ZN6S222C43v80Ev();
extern void _ZN6S222C43v81Ev();
extern void _ZN6S222C33v82Ev();
extern void _ZN6S222C33v83Ev();
extern void _ZN6S222C33v84Ev();
extern void _ZN6S222C33v85Ev();
extern void _ZN6S222C33v86Ev();
extern void _ZN6S222C33v87Ev();
extern void _ZN6S222C33v88Ev();
extern void _ZN6S222C33v89Ev();
extern void _ZN6S222C33v90Ev();
static  VTBL_ENTRY vtc_S222C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S222C3[0]),
  (VTBL_ENTRY)&_ZN6S222C3D1Ev,
  (VTBL_ENTRY)&_ZN6S222C3D0Ev,
  (VTBL_ENTRY)&_ZN6S222C62v4Ev,
  (VTBL_ENTRY)&_ZN6S222C62v5Ev,
  (VTBL_ENTRY)&_ZN6S222C62v6Ev,
  (VTBL_ENTRY)&_ZN6S222C62v7Ev,
  (VTBL_ENTRY)&_ZN6S222C62v8Ev,
  (VTBL_ENTRY)&_ZN6S222C62v9Ev,
  (VTBL_ENTRY)&_ZN6S222C63v10Ev,
  (VTBL_ENTRY)&_ZN6S222C63v11Ev,
  (VTBL_ENTRY)&_ZN6S222C63v12Ev,
  (VTBL_ENTRY)&_ZN6S222C63v13Ev,
  (VTBL_ENTRY)&_ZN6S222C63v14Ev,
  (VTBL_ENTRY)&_ZN6S222C63v15Ev,
  (VTBL_ENTRY)&_ZN6S222C63v16Ev,
  (VTBL_ENTRY)&_ZN6S222C63v17Ev,
  (VTBL_ENTRY)&_ZN6S222C63v18Ev,
  (VTBL_ENTRY)&_ZN6S222C63v19Ev,
  (VTBL_ENTRY)&_ZN6S222C63v20Ev,
  (VTBL_ENTRY)&_ZN6S222C63v21Ev,
  (VTBL_ENTRY)&_ZN6S222C63v22Ev,
  (VTBL_ENTRY)&_ZN6S222C63v23Ev,
  (VTBL_ENTRY)&_ZN6S222C63v24Ev,
  (VTBL_ENTRY)&_ZN6S222C63v25Ev,
  (VTBL_ENTRY)&_ZN6S222C63v26Ev,
  (VTBL_ENTRY)&_ZN6S222C63v27Ev,
  (VTBL_ENTRY)&_ZN6S222C63v28Ev,
  (VTBL_ENTRY)&_ZN6S222C63v29Ev,
  (VTBL_ENTRY)&_ZN6S222C63v30Ev,
  (VTBL_ENTRY)&_ZN6S222C63v31Ev,
  (VTBL_ENTRY)&_ZN6S222C63v32Ev,
  (VTBL_ENTRY)&_ZN6S222C63v33Ev,
  (VTBL_ENTRY)&_ZN6S222C63v34Ev,
  (VTBL_ENTRY)&_ZN6S222C63v35Ev,
  (VTBL_ENTRY)&_ZN6S222C63v36Ev,
  (VTBL_ENTRY)&_ZN6S222C63v37Ev,
  (VTBL_ENTRY)&_ZN6S222C63v38Ev,
  (VTBL_ENTRY)&_ZN6S222C63v39Ev,
  (VTBL_ENTRY)&_ZN6S222C63v40Ev,
  (VTBL_ENTRY)&_ZN6S222C63v41Ev,
  (VTBL_ENTRY)&_ZN6S222C63v42Ev,
  (VTBL_ENTRY)&_ZN6S222C63v43Ev,
  (VTBL_ENTRY)&_ZN6S222C63v44Ev,
  (VTBL_ENTRY)&_ZN6S222C63v45Ev,
  (VTBL_ENTRY)&_ZN6S222C63v46Ev,
  (VTBL_ENTRY)&_ZN6S222C63v47Ev,
  (VTBL_ENTRY)&_ZN6S222C63v48Ev,
  (VTBL_ENTRY)&_ZN6S222C63v49Ev,
  (VTBL_ENTRY)&_ZN6S222C63v50Ev,
  (VTBL_ENTRY)&_ZN6S222C63v51Ev,
  (VTBL_ENTRY)&_ZN6S222C63v52Ev,
  (VTBL_ENTRY)&_ZN6S222C63v53Ev,
  (VTBL_ENTRY)&_ZN6S222C63v54Ev,
  (VTBL_ENTRY)&_ZN6S222C63v55Ev,
  (VTBL_ENTRY)&_ZN6S222C63v56Ev,
  (VTBL_ENTRY)&_ZN6S222C63v57Ev,
  (VTBL_ENTRY)&_ZN6S222C63v58Ev,
  (VTBL_ENTRY)&_ZN6S222C63v59Ev,
  (VTBL_ENTRY)&_ZN6S222C63v60Ev,
  (VTBL_ENTRY)&_ZN6S222C63v61Ev,
  (VTBL_ENTRY)&_ZN6S222C63v62Ev,
  (VTBL_ENTRY)&_ZN6S222C63v63Ev,
  (VTBL_ENTRY)&_ZN6S222C63v64Ev,
  (VTBL_ENTRY)&_ZN6S222C63v65Ev,
  (VTBL_ENTRY)&_ZN6S222C63v66Ev,
  (VTBL_ENTRY)&_ZN6S222C63v67Ev,
  (VTBL_ENTRY)&_ZN6S222C53v68Ev,
  (VTBL_ENTRY)&_ZN6S222C53v69Ev,
  (VTBL_ENTRY)&_ZN6S222C43v70Ev,
  (VTBL_ENTRY)&_ZN6S222C43v71Ev,
  (VTBL_ENTRY)&_ZN6S222C43v72Ev,
  (VTBL_ENTRY)&_ZN6S222C43v73Ev,
  (VTBL_ENTRY)&_ZN6S222C43v74Ev,
  (VTBL_ENTRY)&_ZN6S222C43v75Ev,
  (VTBL_ENTRY)&_ZN6S222C43v76Ev,
  (VTBL_ENTRY)&_ZN6S222C43v77Ev,
  (VTBL_ENTRY)&_ZN6S222C43v78Ev,
  (VTBL_ENTRY)&_ZN6S222C43v79Ev,
  (VTBL_ENTRY)&_ZN6S222C43v80Ev,
  (VTBL_ENTRY)&_ZN6S222C43v81Ev,
  (VTBL_ENTRY)&_ZN6S222C33v82Ev,
  (VTBL_ENTRY)&_ZN6S222C33v83Ev,
  (VTBL_ENTRY)&_ZN6S222C33v84Ev,
  (VTBL_ENTRY)&_ZN6S222C33v85Ev,
  (VTBL_ENTRY)&_ZN6S222C33v86Ev,
  (VTBL_ENTRY)&_ZN6S222C33v87Ev,
  (VTBL_ENTRY)&_ZN6S222C33v88Ev,
  (VTBL_ENTRY)&_ZN6S222C33v89Ev,
  (VTBL_ENTRY)&_ZN6S222C33v90Ev,
};
extern VTBL_ENTRY _ZTI6S222C3[];
extern  VTBL_ENTRY _ZTV6S222C3[];
Class_Descriptor cd_S222C3 = {  "S222C3", // class name
  bases_S222C3, 3,
  &(vtc_S222C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,120), // object size
  NSPAIRA(_ZTI6S222C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S222C3),91, //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  S222C2_nt  : S222C3 {
  ::S3214C17 s222c2f0;
  ::S675C20_nt s222c2f1;
  int s222c2f2;
  virtual  ~S222C2_nt(); // _ZN9S222C2_ntD1Ev
  virtual void  v91(); // _ZN9S222C2_nt3v91Ev
  virtual void  v92(); // _ZN9S222C2_nt3v92Ev
  virtual void  v93(); // _ZN9S222C2_nt3v93Ev
  virtual void  v94(); // _ZN9S222C2_nt3v94Ev
  virtual void  v95(); // _ZN9S222C2_nt3v95Ev
  virtual void  v96(); // _ZN9S222C2_nt3v96Ev
  virtual void  v97(); // _ZN9S222C2_nt3v97Ev
  virtual void  v98(); // _ZN9S222C2_nt3v98Ev
  S222C2_nt(); // tgen
};
//SIG(-1 S222C2_nt) C1{ BC2{ BC3{ BC4{ BC5{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 v72 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v73 v74} vd v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 Fc FC7{ BC8{ BC9{ m Fp Fi[2]}}} FC10{ m Fp FC6}} vd v87 v88 v89 v90 v91 v92 v93 v94 v95 FC6 FC7 FC10} vd v1 v2 v3 v4 v5 v6 v7 v8 FC11{ BC12{ BC9}} FC13{ BC14{ m FC8 Fp Fi}} Fi}


 S222C2_nt ::~S222C2_nt(){ note_dtor("S222C2_nt", this);}
void  S222C2_nt ::v91(){vfunc_called(this, "_ZN9S222C2_nt3v91Ev");}
void  S222C2_nt ::v92(){vfunc_called(this, "_ZN9S222C2_nt3v92Ev");}
void  S222C2_nt ::v93(){vfunc_called(this, "_ZN9S222C2_nt3v93Ev");}
void  S222C2_nt ::v94(){vfunc_called(this, "_ZN9S222C2_nt3v94Ev");}
void  S222C2_nt ::v95(){vfunc_called(this, "_ZN9S222C2_nt3v95Ev");}
void  S222C2_nt ::v96(){vfunc_called(this, "_ZN9S222C2_nt3v96Ev");}
void  S222C2_nt ::v97(){vfunc_called(this, "_ZN9S222C2_nt3v97Ev");}
void  S222C2_nt ::v98(){vfunc_called(this, "_ZN9S222C2_nt3v98Ev");}
S222C2_nt ::S222C2_nt(){ note_ctor("S222C2_nt", this);} // tgen

//skip512 S222C2_nt

#else // __cplusplus

extern void _ZN9S222C2_ntC1Ev();
extern void _ZN9S222C2_ntD1Ev();
Name_Map name_map_S222C2_nt[] = {
  NSPAIR(_ZN9S222C2_ntC1Ev),
  NSPAIR(_ZN9S222C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S222C6;
extern VTBL_ENTRY _ZTI6S222C6[];
extern  VTBL_ENTRY _ZTV6S222C6[];
extern Class_Descriptor cd_S222C5;
extern VTBL_ENTRY _ZTI6S222C5[];
extern  VTBL_ENTRY _ZTV6S222C5[];
extern Class_Descriptor cd_S222C4;
extern VTBL_ENTRY _ZTI6S222C4[];
extern  VTBL_ENTRY _ZTV6S222C4[];
extern Class_Descriptor cd_S222C3;
extern VTBL_ENTRY _ZTI6S222C3[];
extern  VTBL_ENTRY _ZTV6S222C3[];
static Base_Class bases_S222C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S222C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S222C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S222C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S222C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S222C2_nt[];
extern void _ZN9S222C2_ntD1Ev();
extern void _ZN9S222C2_ntD0Ev();
extern void _ZN6S222C62v4Ev();
extern void _ZN6S222C62v5Ev();
extern void _ZN6S222C62v6Ev();
extern void _ZN6S222C62v7Ev();
extern void _ZN6S222C62v8Ev();
extern void _ZN6S222C62v9Ev();
extern void _ZN6S222C63v10Ev();
extern void _ZN6S222C63v11Ev();
extern void _ZN6S222C63v12Ev();
extern void _ZN6S222C63v13Ev();
extern void _ZN6S222C63v14Ev();
extern void _ZN6S222C63v15Ev();
extern void _ZN6S222C63v16Ev();
extern void _ZN6S222C63v17Ev();
extern void _ZN6S222C63v18Ev();
extern void _ZN6S222C63v19Ev();
extern void _ZN6S222C63v20Ev();
extern void _ZN6S222C63v21Ev();
extern void _ZN6S222C63v22Ev();
extern void _ZN6S222C63v23Ev();
extern void _ZN6S222C63v24Ev();
extern void _ZN6S222C63v25Ev();
extern void _ZN6S222C63v26Ev();
extern void _ZN6S222C63v27Ev();
extern void _ZN6S222C63v28Ev();
extern void _ZN6S222C63v29Ev();
extern void _ZN6S222C63v30Ev();
extern void _ZN6S222C63v31Ev();
extern void _ZN6S222C63v32Ev();
extern void _ZN6S222C63v33Ev();
extern void _ZN6S222C63v34Ev();
extern void _ZN6S222C63v35Ev();
extern void _ZN6S222C63v36Ev();
extern void _ZN6S222C63v37Ev();
extern void _ZN6S222C63v38Ev();
extern void _ZN6S222C63v39Ev();
extern void _ZN6S222C63v40Ev();
extern void _ZN6S222C63v41Ev();
extern void _ZN6S222C63v42Ev();
extern void _ZN6S222C63v43Ev();
extern void _ZN6S222C63v44Ev();
extern void _ZN6S222C63v45Ev();
extern void _ZN6S222C63v46Ev();
extern void _ZN6S222C63v47Ev();
extern void _ZN6S222C63v48Ev();
extern void _ZN6S222C63v49Ev();
extern void _ZN6S222C63v50Ev();
extern void _ZN6S222C63v51Ev();
extern void _ZN6S222C63v52Ev();
extern void _ZN6S222C63v53Ev();
extern void _ZN6S222C63v54Ev();
extern void _ZN6S222C63v55Ev();
extern void _ZN6S222C63v56Ev();
extern void _ZN6S222C63v57Ev();
extern void _ZN6S222C63v58Ev();
extern void _ZN6S222C63v59Ev();
extern void _ZN6S222C63v60Ev();
extern void _ZN6S222C63v61Ev();
extern void _ZN6S222C63v62Ev();
extern void _ZN6S222C63v63Ev();
extern void _ZN6S222C63v64Ev();
extern void _ZN6S222C63v65Ev();
extern void _ZN6S222C63v66Ev();
extern void _ZN6S222C63v67Ev();
extern void _ZN6S222C53v68Ev();
extern void _ZN6S222C53v69Ev();
extern void _ZN6S222C43v70Ev();
extern void _ZN6S222C43v71Ev();
extern void _ZN6S222C43v72Ev();
extern void _ZN6S222C43v73Ev();
extern void _ZN6S222C43v74Ev();
extern void _ZN6S222C43v75Ev();
extern void _ZN6S222C43v76Ev();
extern void _ZN6S222C43v77Ev();
extern void _ZN6S222C43v78Ev();
extern void _ZN6S222C43v79Ev();
extern void _ZN6S222C43v80Ev();
extern void _ZN6S222C43v81Ev();
extern void _ZN6S222C33v82Ev();
extern void _ZN6S222C33v83Ev();
extern void _ZN6S222C33v84Ev();
extern void _ZN6S222C33v85Ev();
extern void _ZN6S222C33v86Ev();
extern void _ZN6S222C33v87Ev();
extern void _ZN6S222C33v88Ev();
extern void _ZN6S222C33v89Ev();
extern void _ZN6S222C33v90Ev();
extern void _ZN9S222C2_nt3v91Ev();
extern void _ZN9S222C2_nt3v92Ev();
extern void _ZN9S222C2_nt3v93Ev();
extern void _ZN9S222C2_nt3v94Ev();
extern void _ZN9S222C2_nt3v95Ev();
extern void _ZN9S222C2_nt3v96Ev();
extern void _ZN9S222C2_nt3v97Ev();
extern void _ZN9S222C2_nt3v98Ev();
static  VTBL_ENTRY vtc_S222C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S222C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S222C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S222C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S222C62v4Ev,
  (VTBL_ENTRY)&_ZN6S222C62v5Ev,
  (VTBL_ENTRY)&_ZN6S222C62v6Ev,
  (VTBL_ENTRY)&_ZN6S222C62v7Ev,
  (VTBL_ENTRY)&_ZN6S222C62v8Ev,
  (VTBL_ENTRY)&_ZN6S222C62v9Ev,
  (VTBL_ENTRY)&_ZN6S222C63v10Ev,
  (VTBL_ENTRY)&_ZN6S222C63v11Ev,
  (VTBL_ENTRY)&_ZN6S222C63v12Ev,
  (VTBL_ENTRY)&_ZN6S222C63v13Ev,
  (VTBL_ENTRY)&_ZN6S222C63v14Ev,
  (VTBL_ENTRY)&_ZN6S222C63v15Ev,
  (VTBL_ENTRY)&_ZN6S222C63v16Ev,
  (VTBL_ENTRY)&_ZN6S222C63v17Ev,
  (VTBL_ENTRY)&_ZN6S222C63v18Ev,
  (VTBL_ENTRY)&_ZN6S222C63v19Ev,
  (VTBL_ENTRY)&_ZN6S222C63v20Ev,
  (VTBL_ENTRY)&_ZN6S222C63v21Ev,
  (VTBL_ENTRY)&_ZN6S222C63v22Ev,
  (VTBL_ENTRY)&_ZN6S222C63v23Ev,
  (VTBL_ENTRY)&_ZN6S222C63v24Ev,
  (VTBL_ENTRY)&_ZN6S222C63v25Ev,
  (VTBL_ENTRY)&_ZN6S222C63v26Ev,
  (VTBL_ENTRY)&_ZN6S222C63v27Ev,
  (VTBL_ENTRY)&_ZN6S222C63v28Ev,
  (VTBL_ENTRY)&_ZN6S222C63v29Ev,
  (VTBL_ENTRY)&_ZN6S222C63v30Ev,
  (VTBL_ENTRY)&_ZN6S222C63v31Ev,
  (VTBL_ENTRY)&_ZN6S222C63v32Ev,
  (VTBL_ENTRY)&_ZN6S222C63v33Ev,
  (VTBL_ENTRY)&_ZN6S222C63v34Ev,
  (VTBL_ENTRY)&_ZN6S222C63v35Ev,
  (VTBL_ENTRY)&_ZN6S222C63v36Ev,
  (VTBL_ENTRY)&_ZN6S222C63v37Ev,
  (VTBL_ENTRY)&_ZN6S222C63v38Ev,
  (VTBL_ENTRY)&_ZN6S222C63v39Ev,
  (VTBL_ENTRY)&_ZN6S222C63v40Ev,
  (VTBL_ENTRY)&_ZN6S222C63v41Ev,
  (VTBL_ENTRY)&_ZN6S222C63v42Ev,
  (VTBL_ENTRY)&_ZN6S222C63v43Ev,
  (VTBL_ENTRY)&_ZN6S222C63v44Ev,
  (VTBL_ENTRY)&_ZN6S222C63v45Ev,
  (VTBL_ENTRY)&_ZN6S222C63v46Ev,
  (VTBL_ENTRY)&_ZN6S222C63v47Ev,
  (VTBL_ENTRY)&_ZN6S222C63v48Ev,
  (VTBL_ENTRY)&_ZN6S222C63v49Ev,
  (VTBL_ENTRY)&_ZN6S222C63v50Ev,
  (VTBL_ENTRY)&_ZN6S222C63v51Ev,
  (VTBL_ENTRY)&_ZN6S222C63v52Ev,
  (VTBL_ENTRY)&_ZN6S222C63v53Ev,
  (VTBL_ENTRY)&_ZN6S222C63v54Ev,
  (VTBL_ENTRY)&_ZN6S222C63v55Ev,
  (VTBL_ENTRY)&_ZN6S222C63v56Ev,
  (VTBL_ENTRY)&_ZN6S222C63v57Ev,
  (VTBL_ENTRY)&_ZN6S222C63v58Ev,
  (VTBL_ENTRY)&_ZN6S222C63v59Ev,
  (VTBL_ENTRY)&_ZN6S222C63v60Ev,
  (VTBL_ENTRY)&_ZN6S222C63v61Ev,
  (VTBL_ENTRY)&_ZN6S222C63v62Ev,
  (VTBL_ENTRY)&_ZN6S222C63v63Ev,
  (VTBL_ENTRY)&_ZN6S222C63v64Ev,
  (VTBL_ENTRY)&_ZN6S222C63v65Ev,
  (VTBL_ENTRY)&_ZN6S222C63v66Ev,
  (VTBL_ENTRY)&_ZN6S222C63v67Ev,
  (VTBL_ENTRY)&_ZN6S222C53v68Ev,
  (VTBL_ENTRY)&_ZN6S222C53v69Ev,
  (VTBL_ENTRY)&_ZN6S222C43v70Ev,
  (VTBL_ENTRY)&_ZN6S222C43v71Ev,
  (VTBL_ENTRY)&_ZN6S222C43v72Ev,
  (VTBL_ENTRY)&_ZN6S222C43v73Ev,
  (VTBL_ENTRY)&_ZN6S222C43v74Ev,
  (VTBL_ENTRY)&_ZN6S222C43v75Ev,
  (VTBL_ENTRY)&_ZN6S222C43v76Ev,
  (VTBL_ENTRY)&_ZN6S222C43v77Ev,
  (VTBL_ENTRY)&_ZN6S222C43v78Ev,
  (VTBL_ENTRY)&_ZN6S222C43v79Ev,
  (VTBL_ENTRY)&_ZN6S222C43v80Ev,
  (VTBL_ENTRY)&_ZN6S222C43v81Ev,
  (VTBL_ENTRY)&_ZN6S222C33v82Ev,
  (VTBL_ENTRY)&_ZN6S222C33v83Ev,
  (VTBL_ENTRY)&_ZN6S222C33v84Ev,
  (VTBL_ENTRY)&_ZN6S222C33v85Ev,
  (VTBL_ENTRY)&_ZN6S222C33v86Ev,
  (VTBL_ENTRY)&_ZN6S222C33v87Ev,
  (VTBL_ENTRY)&_ZN6S222C33v88Ev,
  (VTBL_ENTRY)&_ZN6S222C33v89Ev,
  (VTBL_ENTRY)&_ZN6S222C33v90Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v98Ev,
};
extern VTBL_ENTRY _ZTI9S222C2_nt[];
VTBL_ENTRY *P__ZTI9S222C2_nt = _ZTI9S222C2_nt; 
extern  VTBL_ENTRY _ZTV9S222C2_nt[];
Class_Descriptor cd_S222C2_nt = {  "S222C2_nt", // class name
  bases_S222C2_nt, 4,
  &(vtc_S222C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,156), // object size
  NSPAIRA(_ZTI9S222C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S222C2_nt),99, //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  S222C1  : S222C2_nt {
  int s222c1f0;
  virtual  ~S222C1(); // _ZN6S222C1D1Ev
  virtual void  v1(); // _ZN6S222C12v1Ev
  virtual void  v2(); // _ZN6S222C12v2Ev
  virtual void  v3(); // _ZN6S222C12v3Ev
  S222C1(); // tgen
};
//SIG(1 S222C1) C1{ BC2{ BC3{ BC4{ BC5{ BC6{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 Fi FL Fp[4] Fi[2] Fp FC7{ m Fi[2]} Fp[2]} vd v68 v69} vd v70 v71 v72 v73 v74 v75 v76 v77 v78 v79 v80 v81 Fc FC8{ BC9{ BC10{ m Fp Fi[2]}}} FC11{ m Fp FC7}} vd v82 v83 v84 v85 v86 v87 v88 v89 v90 FC7 FC8 FC11} vd v91 v92 v93 v94 v95 v96 v97 v98 FC12{ BC13{ BC10}} FC14{ BC15{ m FC9 Fp Fi}} Fi} vd v1 v2 v3 Fi}


 S222C1 ::~S222C1(){ note_dtor("S222C1", this);}
void  S222C1 ::v1(){vfunc_called(this, "_ZN6S222C12v1Ev");}
void  S222C1 ::v2(){vfunc_called(this, "_ZN6S222C12v2Ev");}
void  S222C1 ::v3(){vfunc_called(this, "_ZN6S222C12v3Ev");}
S222C1 ::S222C1(){ note_ctor("S222C1", this);} // tgen

static void Test_S222C1()
{
  extern Class_Descriptor cd_S222C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,41)];
    init_test(&cd_S222C1, buf);
    S222C1 *dp, &lv = *(dp=new (buf) S222C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,160), "sizeof(S222C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S222C1)");
    check_base_class_offset(lv, (S222C6*)(S222C5*)(S222C4*)(S222C3*)(S222C2_nt*), 0, "S222C1");
    check_base_class_offset(lv, (S222C5*)(S222C4*)(S222C3*)(S222C2_nt*), 0, "S222C1");
    check_base_class_offset(lv, (S222C4*)(S222C3*)(S222C2_nt*), 0, "S222C1");
    check_base_class_offset(lv, (S222C3*)(S222C2_nt*), 0, "S222C1");
    check_base_class_offset(lv, (S222C2_nt*), 0, "S222C1");
    check_field_offset(lv, s222c1f0, ABISELECT(228,156), "S222C1.s222c1f0");
    test_class_info(&lv, &cd_S222C1);
    dp->~S222C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS222C1(Test_S222C1, "S222C1", ABISELECT(232,160));

#else // __cplusplus

extern void _ZN6S222C1C1Ev();
extern void _ZN6S222C1D1Ev();
Name_Map name_map_S222C1[] = {
  NSPAIR(_ZN6S222C1C1Ev),
  NSPAIR(_ZN6S222C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S222C6;
extern VTBL_ENTRY _ZTI6S222C6[];
extern  VTBL_ENTRY _ZTV6S222C6[];
extern Class_Descriptor cd_S222C5;
extern VTBL_ENTRY _ZTI6S222C5[];
extern  VTBL_ENTRY _ZTV6S222C5[];
extern Class_Descriptor cd_S222C4;
extern VTBL_ENTRY _ZTI6S222C4[];
extern  VTBL_ENTRY _ZTV6S222C4[];
extern Class_Descriptor cd_S222C3;
extern VTBL_ENTRY _ZTI6S222C3[];
extern  VTBL_ENTRY _ZTV6S222C3[];
extern Class_Descriptor cd_S222C2_nt;
extern VTBL_ENTRY _ZTI9S222C2_nt[];
extern  VTBL_ENTRY _ZTV9S222C2_nt[];
static Base_Class bases_S222C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S222C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S222C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S222C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S222C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S222C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S222C1[];
extern void _ZN6S222C1D1Ev();
extern void _ZN6S222C1D0Ev();
extern void _ZN6S222C62v4Ev();
extern void _ZN6S222C62v5Ev();
extern void _ZN6S222C62v6Ev();
extern void _ZN6S222C62v7Ev();
extern void _ZN6S222C62v8Ev();
extern void _ZN6S222C62v9Ev();
extern void _ZN6S222C63v10Ev();
extern void _ZN6S222C63v11Ev();
extern void _ZN6S222C63v12Ev();
extern void _ZN6S222C63v13Ev();
extern void _ZN6S222C63v14Ev();
extern void _ZN6S222C63v15Ev();
extern void _ZN6S222C63v16Ev();
extern void _ZN6S222C63v17Ev();
extern void _ZN6S222C63v18Ev();
extern void _ZN6S222C63v19Ev();
extern void _ZN6S222C63v20Ev();
extern void _ZN6S222C63v21Ev();
extern void _ZN6S222C63v22Ev();
extern void _ZN6S222C63v23Ev();
extern void _ZN6S222C63v24Ev();
extern void _ZN6S222C63v25Ev();
extern void _ZN6S222C63v26Ev();
extern void _ZN6S222C63v27Ev();
extern void _ZN6S222C63v28Ev();
extern void _ZN6S222C63v29Ev();
extern void _ZN6S222C63v30Ev();
extern void _ZN6S222C63v31Ev();
extern void _ZN6S222C63v32Ev();
extern void _ZN6S222C63v33Ev();
extern void _ZN6S222C63v34Ev();
extern void _ZN6S222C63v35Ev();
extern void _ZN6S222C63v36Ev();
extern void _ZN6S222C63v37Ev();
extern void _ZN6S222C63v38Ev();
extern void _ZN6S222C63v39Ev();
extern void _ZN6S222C63v40Ev();
extern void _ZN6S222C63v41Ev();
extern void _ZN6S222C63v42Ev();
extern void _ZN6S222C63v43Ev();
extern void _ZN6S222C63v44Ev();
extern void _ZN6S222C63v45Ev();
extern void _ZN6S222C63v46Ev();
extern void _ZN6S222C63v47Ev();
extern void _ZN6S222C63v48Ev();
extern void _ZN6S222C63v49Ev();
extern void _ZN6S222C63v50Ev();
extern void _ZN6S222C63v51Ev();
extern void _ZN6S222C63v52Ev();
extern void _ZN6S222C63v53Ev();
extern void _ZN6S222C63v54Ev();
extern void _ZN6S222C63v55Ev();
extern void _ZN6S222C63v56Ev();
extern void _ZN6S222C63v57Ev();
extern void _ZN6S222C63v58Ev();
extern void _ZN6S222C63v59Ev();
extern void _ZN6S222C63v60Ev();
extern void _ZN6S222C63v61Ev();
extern void _ZN6S222C63v62Ev();
extern void _ZN6S222C63v63Ev();
extern void _ZN6S222C63v64Ev();
extern void _ZN6S222C63v65Ev();
extern void _ZN6S222C63v66Ev();
extern void _ZN6S222C63v67Ev();
extern void _ZN6S222C53v68Ev();
extern void _ZN6S222C53v69Ev();
extern void _ZN6S222C43v70Ev();
extern void _ZN6S222C43v71Ev();
extern void _ZN6S222C43v72Ev();
extern void _ZN6S222C43v73Ev();
extern void _ZN6S222C43v74Ev();
extern void _ZN6S222C43v75Ev();
extern void _ZN6S222C43v76Ev();
extern void _ZN6S222C43v77Ev();
extern void _ZN6S222C43v78Ev();
extern void _ZN6S222C43v79Ev();
extern void _ZN6S222C43v80Ev();
extern void _ZN6S222C43v81Ev();
extern void _ZN6S222C33v82Ev();
extern void _ZN6S222C33v83Ev();
extern void _ZN6S222C33v84Ev();
extern void _ZN6S222C33v85Ev();
extern void _ZN6S222C33v86Ev();
extern void _ZN6S222C33v87Ev();
extern void _ZN6S222C33v88Ev();
extern void _ZN6S222C33v89Ev();
extern void _ZN6S222C33v90Ev();
extern void _ZN9S222C2_nt3v91Ev();
extern void _ZN9S222C2_nt3v92Ev();
extern void _ZN9S222C2_nt3v93Ev();
extern void _ZN9S222C2_nt3v94Ev();
extern void _ZN9S222C2_nt3v95Ev();
extern void _ZN9S222C2_nt3v96Ev();
extern void _ZN9S222C2_nt3v97Ev();
extern void _ZN9S222C2_nt3v98Ev();
extern void _ZN6S222C12v1Ev();
extern void _ZN6S222C12v2Ev();
extern void _ZN6S222C12v3Ev();
static  VTBL_ENTRY vtc_S222C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S222C1[0]),
  (VTBL_ENTRY)&_ZN6S222C1D1Ev,
  (VTBL_ENTRY)&_ZN6S222C1D0Ev,
  (VTBL_ENTRY)&_ZN6S222C62v4Ev,
  (VTBL_ENTRY)&_ZN6S222C62v5Ev,
  (VTBL_ENTRY)&_ZN6S222C62v6Ev,
  (VTBL_ENTRY)&_ZN6S222C62v7Ev,
  (VTBL_ENTRY)&_ZN6S222C62v8Ev,
  (VTBL_ENTRY)&_ZN6S222C62v9Ev,
  (VTBL_ENTRY)&_ZN6S222C63v10Ev,
  (VTBL_ENTRY)&_ZN6S222C63v11Ev,
  (VTBL_ENTRY)&_ZN6S222C63v12Ev,
  (VTBL_ENTRY)&_ZN6S222C63v13Ev,
  (VTBL_ENTRY)&_ZN6S222C63v14Ev,
  (VTBL_ENTRY)&_ZN6S222C63v15Ev,
  (VTBL_ENTRY)&_ZN6S222C63v16Ev,
  (VTBL_ENTRY)&_ZN6S222C63v17Ev,
  (VTBL_ENTRY)&_ZN6S222C63v18Ev,
  (VTBL_ENTRY)&_ZN6S222C63v19Ev,
  (VTBL_ENTRY)&_ZN6S222C63v20Ev,
  (VTBL_ENTRY)&_ZN6S222C63v21Ev,
  (VTBL_ENTRY)&_ZN6S222C63v22Ev,
  (VTBL_ENTRY)&_ZN6S222C63v23Ev,
  (VTBL_ENTRY)&_ZN6S222C63v24Ev,
  (VTBL_ENTRY)&_ZN6S222C63v25Ev,
  (VTBL_ENTRY)&_ZN6S222C63v26Ev,
  (VTBL_ENTRY)&_ZN6S222C63v27Ev,
  (VTBL_ENTRY)&_ZN6S222C63v28Ev,
  (VTBL_ENTRY)&_ZN6S222C63v29Ev,
  (VTBL_ENTRY)&_ZN6S222C63v30Ev,
  (VTBL_ENTRY)&_ZN6S222C63v31Ev,
  (VTBL_ENTRY)&_ZN6S222C63v32Ev,
  (VTBL_ENTRY)&_ZN6S222C63v33Ev,
  (VTBL_ENTRY)&_ZN6S222C63v34Ev,
  (VTBL_ENTRY)&_ZN6S222C63v35Ev,
  (VTBL_ENTRY)&_ZN6S222C63v36Ev,
  (VTBL_ENTRY)&_ZN6S222C63v37Ev,
  (VTBL_ENTRY)&_ZN6S222C63v38Ev,
  (VTBL_ENTRY)&_ZN6S222C63v39Ev,
  (VTBL_ENTRY)&_ZN6S222C63v40Ev,
  (VTBL_ENTRY)&_ZN6S222C63v41Ev,
  (VTBL_ENTRY)&_ZN6S222C63v42Ev,
  (VTBL_ENTRY)&_ZN6S222C63v43Ev,
  (VTBL_ENTRY)&_ZN6S222C63v44Ev,
  (VTBL_ENTRY)&_ZN6S222C63v45Ev,
  (VTBL_ENTRY)&_ZN6S222C63v46Ev,
  (VTBL_ENTRY)&_ZN6S222C63v47Ev,
  (VTBL_ENTRY)&_ZN6S222C63v48Ev,
  (VTBL_ENTRY)&_ZN6S222C63v49Ev,
  (VTBL_ENTRY)&_ZN6S222C63v50Ev,
  (VTBL_ENTRY)&_ZN6S222C63v51Ev,
  (VTBL_ENTRY)&_ZN6S222C63v52Ev,
  (VTBL_ENTRY)&_ZN6S222C63v53Ev,
  (VTBL_ENTRY)&_ZN6S222C63v54Ev,
  (VTBL_ENTRY)&_ZN6S222C63v55Ev,
  (VTBL_ENTRY)&_ZN6S222C63v56Ev,
  (VTBL_ENTRY)&_ZN6S222C63v57Ev,
  (VTBL_ENTRY)&_ZN6S222C63v58Ev,
  (VTBL_ENTRY)&_ZN6S222C63v59Ev,
  (VTBL_ENTRY)&_ZN6S222C63v60Ev,
  (VTBL_ENTRY)&_ZN6S222C63v61Ev,
  (VTBL_ENTRY)&_ZN6S222C63v62Ev,
  (VTBL_ENTRY)&_ZN6S222C63v63Ev,
  (VTBL_ENTRY)&_ZN6S222C63v64Ev,
  (VTBL_ENTRY)&_ZN6S222C63v65Ev,
  (VTBL_ENTRY)&_ZN6S222C63v66Ev,
  (VTBL_ENTRY)&_ZN6S222C63v67Ev,
  (VTBL_ENTRY)&_ZN6S222C53v68Ev,
  (VTBL_ENTRY)&_ZN6S222C53v69Ev,
  (VTBL_ENTRY)&_ZN6S222C43v70Ev,
  (VTBL_ENTRY)&_ZN6S222C43v71Ev,
  (VTBL_ENTRY)&_ZN6S222C43v72Ev,
  (VTBL_ENTRY)&_ZN6S222C43v73Ev,
  (VTBL_ENTRY)&_ZN6S222C43v74Ev,
  (VTBL_ENTRY)&_ZN6S222C43v75Ev,
  (VTBL_ENTRY)&_ZN6S222C43v76Ev,
  (VTBL_ENTRY)&_ZN6S222C43v77Ev,
  (VTBL_ENTRY)&_ZN6S222C43v78Ev,
  (VTBL_ENTRY)&_ZN6S222C43v79Ev,
  (VTBL_ENTRY)&_ZN6S222C43v80Ev,
  (VTBL_ENTRY)&_ZN6S222C43v81Ev,
  (VTBL_ENTRY)&_ZN6S222C33v82Ev,
  (VTBL_ENTRY)&_ZN6S222C33v83Ev,
  (VTBL_ENTRY)&_ZN6S222C33v84Ev,
  (VTBL_ENTRY)&_ZN6S222C33v85Ev,
  (VTBL_ENTRY)&_ZN6S222C33v86Ev,
  (VTBL_ENTRY)&_ZN6S222C33v87Ev,
  (VTBL_ENTRY)&_ZN6S222C33v88Ev,
  (VTBL_ENTRY)&_ZN6S222C33v89Ev,
  (VTBL_ENTRY)&_ZN6S222C33v90Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S222C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN6S222C12v1Ev,
  (VTBL_ENTRY)&_ZN6S222C12v2Ev,
  (VTBL_ENTRY)&_ZN6S222C12v3Ev,
};
extern VTBL_ENTRY _ZTI6S222C1[];
extern  VTBL_ENTRY _ZTV6S222C1[];
Class_Descriptor cd_S222C1 = {  "S222C1", // class name
  bases_S222C1, 5,
  &(vtc_S222C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,160), // object size
  NSPAIRA(_ZTI6S222C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S222C1),102, //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  S1576C4  {
  int s1576c4f0;
  __tsi64 s1576c4f1;
  void *s1576c4f2[4];
  int s1576c4f3[2];
  void *s1576c4f4;
  ::S3214C4_nt s1576c4f5;
  void *s1576c4f6[2];
  virtual  ~S1576C4(); // _ZN7S1576C4D1Ev
  virtual void  v8(); // _ZN7S1576C42v8Ev
  virtual void  v9(); // _ZN7S1576C42v9Ev
  virtual void  v10(); // _ZN7S1576C43v10Ev
  virtual void  v11(); // _ZN7S1576C43v11Ev
  virtual void  v12(); // _ZN7S1576C43v12Ev
  virtual void  v13(); // _ZN7S1576C43v13Ev
  virtual void  v14(); // _ZN7S1576C43v14Ev
  virtual void  v15(); // _ZN7S1576C43v15Ev
  virtual void  v16(); // _ZN7S1576C43v16Ev
  virtual void  v17(); // _ZN7S1576C43v17Ev
  virtual void  v18(); // _ZN7S1576C43v18Ev
  virtual void  v19(); // _ZN7S1576C43v19Ev
  virtual void  v20(); // _ZN7S1576C43v20Ev
  virtual void  v21(); // _ZN7S1576C43v21Ev
  virtual void  v22(); // _ZN7S1576C43v22Ev
  virtual void  v23(); // _ZN7S1576C43v23Ev
  virtual void  v24(); // _ZN7S1576C43v24Ev
  virtual void  v25(); // _ZN7S1576C43v25Ev
  virtual void  v26(); // _ZN7S1576C43v26Ev
  virtual void  v27(); // _ZN7S1576C43v27Ev
  virtual void  v28(); // _ZN7S1576C43v28Ev
  virtual void  v29(); // _ZN7S1576C43v29Ev
  virtual void  v30(); // _ZN7S1576C43v30Ev
  virtual void  v31(); // _ZN7S1576C43v31Ev
  virtual void  v32(); // _ZN7S1576C43v32Ev
  virtual void  v33(); // _ZN7S1576C43v33Ev
  virtual void  v34(); // _ZN7S1576C43v34Ev
  virtual void  v35(); // _ZN7S1576C43v35Ev
  virtual void  v36(); // _ZN7S1576C43v36Ev
  virtual void  v37(); // _ZN7S1576C43v37Ev
  virtual void  v38(); // _ZN7S1576C43v38Ev
  virtual void  v39(); // _ZN7S1576C43v39Ev
  virtual void  v40(); // _ZN7S1576C43v40Ev
  virtual void  v41(); // _ZN7S1576C43v41Ev
  virtual void  v42(); // _ZN7S1576C43v42Ev
  virtual void  v43(); // _ZN7S1576C43v43Ev
  virtual void  v44(); // _ZN7S1576C43v44Ev
  virtual void  v45(); // _ZN7S1576C43v45Ev
  virtual void  v46(); // _ZN7S1576C43v46Ev
  virtual void  v47(); // _ZN7S1576C43v47Ev
  virtual void  v48(); // _ZN7S1576C43v48Ev
  virtual void  v49(); // _ZN7S1576C43v49Ev
  virtual void  v50(); // _ZN7S1576C43v50Ev
  virtual void  v51(); // _ZN7S1576C43v51Ev
  virtual void  v52(); // _ZN7S1576C43v52Ev
  virtual void  v53(); // _ZN7S1576C43v53Ev
  virtual void  v54(); // _ZN7S1576C43v54Ev
  virtual void  v55(); // _ZN7S1576C43v55Ev
  virtual void  v56(); // _ZN7S1576C43v56Ev
  virtual void  v57(); // _ZN7S1576C43v57Ev
  virtual void  v58(); // _ZN7S1576C43v58Ev
  virtual void  v59(); // _ZN7S1576C43v59Ev
  virtual void  v60(); // _ZN7S1576C43v60Ev
  virtual void  v61(); // _ZN7S1576C43v61Ev
  virtual void  v62(); // _ZN7S1576C43v62Ev
  virtual void  v63(); // _ZN7S1576C43v63Ev
  virtual void  v64(); // _ZN7S1576C43v64Ev
  virtual void  v65(); // _ZN7S1576C43v65Ev
  virtual void  v66(); // _ZN7S1576C43v66Ev
  virtual void  v67(); // _ZN7S1576C43v67Ev
  virtual void  v68(); // _ZN7S1576C43v68Ev
  virtual void  v69(); // _ZN7S1576C43v69Ev
  virtual void  v70(); // _ZN7S1576C43v70Ev
  virtual void  v71(); // _ZN7S1576C43v71Ev
  S1576C4(); // tgen
};
//SIG(-1 S1576C4) 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]}


 S1576C4 ::~S1576C4(){ note_dtor("S1576C4", this);}
void  S1576C4 ::v8(){vfunc_called(this, "_ZN7S1576C42v8Ev");}
void  S1576C4 ::v9(){vfunc_called(this, "_ZN7S1576C42v9Ev");}
void  S1576C4 ::v10(){vfunc_called(this, "_ZN7S1576C43v10Ev");}
void  S1576C4 ::v11(){vfunc_called(this, "_ZN7S1576C43v11Ev");}
void  S1576C4 ::v12(){vfunc_called(this, "_ZN7S1576C43v12Ev");}
void  S1576C4 ::v13(){vfunc_called(this, "_ZN7S1576C43v13Ev");}
void  S1576C4 ::v14(){vfunc_called(this, "_ZN7S1576C43v14Ev");}
void  S1576C4 ::v15(){vfunc_called(this, "_ZN7S1576C43v15Ev");}
void  S1576C4 ::v16(){vfunc_called(this, "_ZN7S1576C43v16Ev");}
void  S1576C4 ::v17(){vfunc_called(this, "_ZN7S1576C43v17Ev");}
void  S1576C4 ::v18(){vfunc_called(this, "_ZN7S1576C43v18Ev");}
void  S1576C4 ::v19(){vfunc_called(this, "_ZN7S1576C43v19Ev");}
void  S1576C4 ::v20(){vfunc_called(this, "_ZN7S1576C43v20Ev");}
void  S1576C4 ::v21(){vfunc_called(this, "_ZN7S1576C43v21Ev");}
void  S1576C4 ::v22(){vfunc_called(this, "_ZN7S1576C43v22Ev");}
void  S1576C4 ::v23(){vfunc_called(this, "_ZN7S1576C43v23Ev");}
void  S1576C4 ::v24(){vfunc_called(this, "_ZN7S1576C43v24Ev");}
void  S1576C4 ::v25(){vfunc_called(this, "_ZN7S1576C43v25Ev");}
void  S1576C4 ::v26(){vfunc_called(this, "_ZN7S1576C43v26Ev");}
void  S1576C4 ::v27(){vfunc_called(this, "_ZN7S1576C43v27Ev");}
void  S1576C4 ::v28(){vfunc_called(this, "_ZN7S1576C43v28Ev");}
void  S1576C4 ::v29(){vfunc_called(this, "_ZN7S1576C43v29Ev");}
void  S1576C4 ::v30(){vfunc_called(this, "_ZN7S1576C43v30Ev");}
void  S1576C4 ::v31(){vfunc_called(this, "_ZN7S1576C43v31Ev");}
void  S1576C4 ::v32(){vfunc_called(this, "_ZN7S1576C43v32Ev");}
void  S1576C4 ::v33(){vfunc_called(this, "_ZN7S1576C43v33Ev");}
void  S1576C4 ::v34(){vfunc_called(this, "_ZN7S1576C43v34Ev");}
void  S1576C4 ::v35(){vfunc_called(this, "_ZN7S1576C43v35Ev");}
void  S1576C4 ::v36(){vfunc_called(this, "_ZN7S1576C43v36Ev");}
void  S1576C4 ::v37(){vfunc_called(this, "_ZN7S1576C43v37Ev");}
void  S1576C4 ::v38(){vfunc_called(this, "_ZN7S1576C43v38Ev");}
void  S1576C4 ::v39(){vfunc_called(this, "_ZN7S1576C43v39Ev");}
void  S1576C4 ::v40(){vfunc_called(this, "_ZN7S1576C43v40Ev");}
void  S1576C4 ::v41(){vfunc_called(this, "_ZN7S1576C43v41Ev");}
void  S1576C4 ::v42(){vfunc_called(this, "_ZN7S1576C43v42Ev");}
void  S1576C4 ::v43(){vfunc_called(this, "_ZN7S1576C43v43Ev");}
void  S1576C4 ::v44(){vfunc_called(this, "_ZN7S1576C43v44Ev");}
void  S1576C4 ::v45(){vfunc_called(this, "_ZN7S1576C43v45Ev");}
void  S1576C4 ::v46(){vfunc_called(this, "_ZN7S1576C43v46Ev");}
void  S1576C4 ::v47(){vfunc_called(this, "_ZN7S1576C43v47Ev");}
void  S1576C4 ::v48(){vfunc_called(this, "_ZN7S1576C43v48Ev");}
void  S1576C4 ::v49(){vfunc_called(this, "_ZN7S1576C43v49Ev");}
void  S1576C4 ::v50(){vfunc_called(this, "_ZN7S1576C43v50Ev");}
void  S1576C4 ::v51(){vfunc_called(this, "_ZN7S1576C43v51Ev");}
void  S1576C4 ::v52(){vfunc_called(this, "_ZN7S1576C43v52Ev");}
void  S1576C4 ::v53(){vfunc_called(this, "_ZN7S1576C43v53Ev");}
void  S1576C4 ::v54(){vfunc_called(this, "_ZN7S1576C43v54Ev");}
void  S1576C4 ::v55(){vfunc_called(this, "_ZN7S1576C43v55Ev");}
void  S1576C4 ::v56(){vfunc_called(this, "_ZN7S1576C43v56Ev");}
void  S1576C4 ::v57(){vfunc_called(this, "_ZN7S1576C43v57Ev");}
void  S1576C4 ::v58(){vfunc_called(this, "_ZN7S1576C43v58Ev");}
void  S1576C4 ::v59(){vfunc_called(this, "_ZN7S1576C43v59Ev");}
void  S1576C4 ::v60(){vfunc_called(this, "_ZN7S1576C43v60Ev");}
void  S1576C4 ::v61(){vfunc_called(this, "_ZN7S1576C43v61Ev");}
void  S1576C4 ::v62(){vfunc_called(this, "_ZN7S1576C43v62Ev");}
void  S1576C4 ::v63(){vfunc_called(this, "_ZN7S1576C43v63Ev");}
void  S1576C4 ::v64(){vfunc_called(this, "_ZN7S1576C43v64Ev");}
void  S1576C4 ::v65(){vfunc_called(this, "_ZN7S1576C43v65Ev");}
void  S1576C4 ::v66(){vfunc_called(this, "_ZN7S1576C43v66Ev");}
void  S1576C4 ::v67(){vfunc_called(this, "_ZN7S1576C43v67Ev");}
void  S1576C4 ::v68(){vfunc_called(this, "_ZN7S1576C43v68Ev");}
void  S1576C4 ::v69(){vfunc_called(this, "_ZN7S1576C43v69Ev");}
void  S1576C4 ::v70(){vfunc_called(this, "_ZN7S1576C43v70Ev");}
void  S1576C4 ::v71(){vfunc_called(this, "_ZN7S1576C43v71Ev");}
S1576C4 ::S1576C4(){ note_ctor("S1576C4", this);} // tgen

static void Test_S1576C4()
{
  extern Class_Descriptor cd_S1576C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1576C4, buf);
    S1576C4 *dp, &lv = *(dp=new (buf) S1576C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1576C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1576C4)");
    check_field_offset(lv, s1576c4f0, ABISELECT(8,4), "S1576C4.s1576c4f0");
    check_field_offset(lv, s1576c4f1, ABISELECT(16,8), "S1576C4.s1576c4f1");
    check_field_offset(lv, s1576c4f2, ABISELECT(24,16), "S1576C4.s1576c4f2");
    check_field_offset(lv, s1576c4f3, ABISELECT(56,32), "S1576C4.s1576c4f3");
    check_field_offset(lv, s1576c4f4, ABISELECT(64,40), "S1576C4.s1576c4f4");
    check_field_offset(lv, s1576c4f5, ABISELECT(72,44), "S1576C4.s1576c4f5");
    check_field_offset(lv, s1576c4f6, ABISELECT(80,52), "S1576C4.s1576c4f6");
    test_class_info(&lv, &cd_S1576C4);
    dp->~S1576C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1576C4(Test_S1576C4, "S1576C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1576C4C1Ev();
extern void _ZN7S1576C4D1Ev();
Name_Map name_map_S1576C4[] = {
  NSPAIR(_ZN7S1576C4C1Ev),
  NSPAIR(_ZN7S1576C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1576C4[];
extern void _ZN7S1576C4D1Ev();
extern void _ZN7S1576C4D0Ev();
extern void _ZN7S1576C42v8Ev();
extern void _ZN7S1576C42v9Ev();
extern void _ZN7S1576C43v10Ev();
extern void _ZN7S1576C43v11Ev();
extern void _ZN7S1576C43v12Ev();
extern void _ZN7S1576C43v13Ev();
extern void _ZN7S1576C43v14Ev();
extern void _ZN7S1576C43v15Ev();
extern void _ZN7S1576C43v16Ev();
extern void _ZN7S1576C43v17Ev();
extern void _ZN7S1576C43v18Ev();
extern void _ZN7S1576C43v19Ev();
extern void _ZN7S1576C43v20Ev();
extern void _ZN7S1576C43v21Ev();
extern void _ZN7S1576C43v22Ev();
extern void _ZN7S1576C43v23Ev();
extern void _ZN7S1576C43v24Ev();
extern void _ZN7S1576C43v25Ev();
extern void _ZN7S1576C43v26Ev();
extern void _ZN7S1576C43v27Ev();
extern void _ZN7S1576C43v28Ev();
extern void _ZN7S1576C43v29Ev();
extern void _ZN7S1576C43v30Ev();
extern void _ZN7S1576C43v31Ev();
extern void _ZN7S1576C43v32Ev();
extern void _ZN7S1576C43v33Ev();
extern void _ZN7S1576C43v34Ev();
extern void _ZN7S1576C43v35Ev();
extern void _ZN7S1576C43v36Ev();
extern void _ZN7S1576C43v37Ev();
extern void _ZN7S1576C43v38Ev();
extern void _ZN7S1576C43v39Ev();
extern void _ZN7S1576C43v40Ev();
extern void _ZN7S1576C43v41Ev();
extern void _ZN7S1576C43v42Ev();
extern void _ZN7S1576C43v43Ev();
extern void _ZN7S1576C43v44Ev();
extern void _ZN7S1576C43v45Ev();
extern void _ZN7S1576C43v46Ev();
extern void _ZN7S1576C43v47Ev();
extern void _ZN7S1576C43v48Ev();
extern void _ZN7S1576C43v49Ev();
extern void _ZN7S1576C43v50Ev();
extern void _ZN7S1576C43v51Ev();
extern void _ZN7S1576C43v52Ev();
extern void _ZN7S1576C43v53Ev();
extern void _ZN7S1576C43v54Ev();
extern void _ZN7S1576C43v55Ev();
extern void _ZN7S1576C43v56Ev();
extern void _ZN7S1576C43v57Ev();
extern void _ZN7S1576C43v58Ev();
extern void _ZN7S1576C43v59Ev();
extern void _ZN7S1576C43v60Ev();
extern void _ZN7S1576C43v61Ev();
extern void _ZN7S1576C43v62Ev();
extern void _ZN7S1576C43v63Ev();
extern void _ZN7S1576C43v64Ev();
extern void _ZN7S1576C43v65Ev();
extern void _ZN7S1576C43v66Ev();
extern void _ZN7S1576C43v67Ev();
extern void _ZN7S1576C43v68Ev();
extern void _ZN7S1576C43v69Ev();
extern void _ZN7S1576C43v70Ev();
extern void _ZN7S1576C43v71Ev();
static  VTBL_ENTRY vtc_S1576C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1576C4[0]),
  (VTBL_ENTRY)&_ZN7S1576C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1576C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1576C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1576C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v71Ev,
};
extern VTBL_ENTRY _ZTI7S1576C4[];
extern  VTBL_ENTRY _ZTV7S1576C4[];
Class_Descriptor cd_S1576C4 = {  "S1576C4", // class name
  0,0,//no base classes
  &(vtc_S1576C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1576C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1576C4),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  S1576C3_nt  : S1576C4 {
  unsigned int s1576c3f0:1;
  unsigned int s1576c3f1:1;
  unsigned int s1576c3f2:1;
  unsigned int s1576c3f3:1;
  unsigned int s1576c3f4:1;
  unsigned int s1576c3f5:1;
  unsigned int s1576c3f6:1;
  ::S4227C37 s1576c3f7;
  virtual  ~S1576C3_nt(); // _ZN10S1576C3_ntD1Ev
  virtual void  v72(); // _ZN10S1576C3_nt3v72Ev
  virtual void  v73(); // _ZN10S1576C3_nt3v73Ev
  virtual void  v74(); // _ZN10S1576C3_nt3v74Ev
  virtual void  v75(); // _ZN10S1576C3_nt3v75Ev
  virtual void  v76(); // _ZN10S1576C3_nt3v76Ev
  virtual void  v77(); // _ZN10S1576C3_nt3v77Ev
  virtual void  v78(); // _ZN10S1576C3_nt3v78Ev
  virtual void  v79(); // _ZN10S1576C3_nt3v79Ev
  virtual void  v80(); // _ZN10S1576C3_nt3v80Ev
  virtual void  v81(); // _ZN10S1576C3_nt3v81Ev
  virtual void  v82(); // _ZN10S1576C3_nt3v82Ev
  virtual void  v83(); // _ZN10S1576C3_nt3v83Ev
  virtual void  v84(); // _ZN10S1576C3_nt3v84Ev
  virtual void  v85(); // _ZN10S1576C3_nt3v85Ev
  virtual void  v86(); // _ZN10S1576C3_nt3v86Ev
  virtual void  v87(); // _ZN10S1576C3_nt3v87Ev
  virtual void  v88(); // _ZN10S1576C3_nt3v88Ev
  virtual void  v89(); // _ZN10S1576C3_nt3v89Ev
  virtual void  v90(); // _ZN10S1576C3_nt3v90Ev
  virtual void  v91(); // _ZN10S1576C3_nt3v91Ev
  S1576C3_nt(); // tgen
};
//SIG(-1 S1576C3_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}}


 S1576C3_nt ::~S1576C3_nt(){ note_dtor("S1576C3_nt", this);}
void  S1576C3_nt ::v72(){vfunc_called(this, "_ZN10S1576C3_nt3v72Ev");}
void  S1576C3_nt ::v73(){vfunc_called(this, "_ZN10S1576C3_nt3v73Ev");}
void  S1576C3_nt ::v74(){vfunc_called(this, "_ZN10S1576C3_nt3v74Ev");}
void  S1576C3_nt ::v75(){vfunc_called(this, "_ZN10S1576C3_nt3v75Ev");}
void  S1576C3_nt ::v76(){vfunc_called(this, "_ZN10S1576C3_nt3v76Ev");}
void  S1576C3_nt ::v77(){vfunc_called(this, "_ZN10S1576C3_nt3v77Ev");}
void  S1576C3_nt ::v78(){vfunc_called(this, "_ZN10S1576C3_nt3v78Ev");}
void  S1576C3_nt ::v79(){vfunc_called(this, "_ZN10S1576C3_nt3v79Ev");}
void  S1576C3_nt ::v80(){vfunc_called(this, "_ZN10S1576C3_nt3v80Ev");}
void  S1576C3_nt ::v81(){vfunc_called(this, "_ZN10S1576C3_nt3v81Ev");}
void  S1576C3_nt ::v82(){vfunc_called(this, "_ZN10S1576C3_nt3v82Ev");}
void  S1576C3_nt ::v83(){vfunc_called(this, "_ZN10S1576C3_nt3v83Ev");}
void  S1576C3_nt ::v84(){vfunc_called(this, "_ZN10S1576C3_nt3v84Ev");}
void  S1576C3_nt ::v85(){vfunc_called(this, "_ZN10S1576C3_nt3v85Ev");}
void  S1576C3_nt ::v86(){vfunc_called(this, "_ZN10S1576C3_nt3v86Ev");}
void  S1576C3_nt ::v87(){vfunc_called(this, "_ZN10S1576C3_nt3v87Ev");}
void  S1576C3_nt ::v88(){vfunc_called(this, "_ZN10S1576C3_nt3v88Ev");}
void  S1576C3_nt ::v89(){vfunc_called(this, "_ZN10S1576C3_nt3v89Ev");}
void  S1576C3_nt ::v90(){vfunc_called(this, "_ZN10S1576C3_nt3v90Ev");}
void  S1576C3_nt ::v91(){vfunc_called(this, "_ZN10S1576C3_nt3v91Ev");}
S1576C3_nt ::S1576C3_nt(){ note_ctor("S1576C3_nt", this);} // tgen

//skip512 S1576C3_nt

#else // __cplusplus

extern void _ZN10S1576C3_ntC1Ev();
extern void _ZN10S1576C3_ntD1Ev();
Name_Map name_map_S1576C3_nt[] = {
  NSPAIR(_ZN10S1576C3_ntC1Ev),
  NSPAIR(_ZN10S1576C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1576C4;
extern VTBL_ENTRY _ZTI7S1576C4[];
extern  VTBL_ENTRY _ZTV7S1576C4[];
static Base_Class bases_S1576C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1576C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1576C3_nt[];
extern void _ZN10S1576C3_ntD1Ev();
extern void _ZN10S1576C3_ntD0Ev();
extern void _ZN7S1576C42v8Ev();
extern void _ZN7S1576C42v9Ev();
extern void _ZN7S1576C43v10Ev();
extern void _ZN7S1576C43v11Ev();
extern void _ZN7S1576C43v12Ev();
extern void _ZN7S1576C43v13Ev();
extern void _ZN7S1576C43v14Ev();
extern void _ZN7S1576C43v15Ev();
extern void _ZN7S1576C43v16Ev();
extern void _ZN7S1576C43v17Ev();
extern void _ZN7S1576C43v18Ev();
extern void _ZN7S1576C43v19Ev();
extern void _ZN7S1576C43v20Ev();
extern void _ZN7S1576C43v21Ev();
extern void _ZN7S1576C43v22Ev();
extern void _ZN7S1576C43v23Ev();
extern void _ZN7S1576C43v24Ev();
extern void _ZN7S1576C43v25Ev();
extern void _ZN7S1576C43v26Ev();
extern void _ZN7S1576C43v27Ev();
extern void _ZN7S1576C43v28Ev();
extern void _ZN7S1576C43v29Ev();
extern void _ZN7S1576C43v30Ev();
extern void _ZN7S1576C43v31Ev();
extern void _ZN7S1576C43v32Ev();
extern void _ZN7S1576C43v33Ev();
extern void _ZN7S1576C43v34Ev();
extern void _ZN7S1576C43v35Ev();
extern void _ZN7S1576C43v36Ev();
extern void _ZN7S1576C43v37Ev();
extern void _ZN7S1576C43v38Ev();
extern void _ZN7S1576C43v39Ev();
extern void _ZN7S1576C43v40Ev();
extern void _ZN7S1576C43v41Ev();
extern void _ZN7S1576C43v42Ev();
extern void _ZN7S1576C43v43Ev();
extern void _ZN7S1576C43v44Ev();
extern void _ZN7S1576C43v45Ev();
extern void _ZN7S1576C43v46Ev();
extern void _ZN7S1576C43v47Ev();
extern void _ZN7S1576C43v48Ev();
extern void _ZN7S1576C43v49Ev();
extern void _ZN7S1576C43v50Ev();
extern void _ZN7S1576C43v51Ev();
extern void _ZN7S1576C43v52Ev();
extern void _ZN7S1576C43v53Ev();
extern void _ZN7S1576C43v54Ev();
extern void _ZN7S1576C43v55Ev();
extern void _ZN7S1576C43v56Ev();
extern void _ZN7S1576C43v57Ev();
extern void _ZN7S1576C43v58Ev();
extern void _ZN7S1576C43v59Ev();
extern void _ZN7S1576C43v60Ev();
extern void _ZN7S1576C43v61Ev();
extern void _ZN7S1576C43v62Ev();
extern void _ZN7S1576C43v63Ev();
extern void _ZN7S1576C43v64Ev();
extern void _ZN7S1576C43v65Ev();
extern void _ZN7S1576C43v66Ev();
extern void _ZN7S1576C43v67Ev();
extern void _ZN7S1576C43v68Ev();
extern void _ZN7S1576C43v69Ev();
extern void _ZN7S1576C43v70Ev();
extern void _ZN7S1576C43v71Ev();
extern void _ZN10S1576C3_nt3v72Ev();
extern void _ZN10S1576C3_nt3v73Ev();
extern void _ZN10S1576C3_nt3v74Ev();
extern void _ZN10S1576C3_nt3v75Ev();
extern void _ZN10S1576C3_nt3v76Ev();
extern void _ZN10S1576C3_nt3v77Ev();
extern void _ZN10S1576C3_nt3v78Ev();
extern void _ZN10S1576C3_nt3v79Ev();
extern void _ZN10S1576C3_nt3v80Ev();
extern void _ZN10S1576C3_nt3v81Ev();
extern void _ZN10S1576C3_nt3v82Ev();
extern void _ZN10S1576C3_nt3v83Ev();
extern void _ZN10S1576C3_nt3v84Ev();
extern void _ZN10S1576C3_nt3v85Ev();
extern void _ZN10S1576C3_nt3v86Ev();
extern void _ZN10S1576C3_nt3v87Ev();
extern void _ZN10S1576C3_nt3v88Ev();
extern void _ZN10S1576C3_nt3v89Ev();
extern void _ZN10S1576C3_nt3v90Ev();
extern void _ZN10S1576C3_nt3v91Ev();
static  VTBL_ENTRY vtc_S1576C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1576C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1576C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1576C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1576C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v71Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v91Ev,
};
extern VTBL_ENTRY _ZTI10S1576C3_nt[];
VTBL_ENTRY *P__ZTI10S1576C3_nt = _ZTI10S1576C3_nt; 
extern  VTBL_ENTRY _ZTV10S1576C3_nt[];
Class_Descriptor cd_S1576C3_nt = {  "S1576C3_nt", // class name
  bases_S1576C3_nt, 1,
  &(vtc_S1576C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI10S1576C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1576C3_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  S1576C2_nt  : S1576C3_nt {
  virtual  ~S1576C2_nt(); // _ZN10S1576C2_ntD1Ev
  virtual void  v92(); // _ZN10S1576C2_nt3v92Ev
  virtual void  v93(); // _ZN10S1576C2_nt3v93Ev
  S1576C2_nt(); // tgen
};
//SIG(-1 S1576C2_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}


 S1576C2_nt ::~S1576C2_nt(){ note_dtor("S1576C2_nt", this);}
void  S1576C2_nt ::v92(){vfunc_called(this, "_ZN10S1576C2_nt3v92Ev");}
void  S1576C2_nt ::v93(){vfunc_called(this, "_ZN10S1576C2_nt3v93Ev");}
S1576C2_nt ::S1576C2_nt(){ note_ctor("S1576C2_nt", this);} // tgen

//skip512 S1576C2_nt

#else // __cplusplus

extern void _ZN10S1576C2_ntC1Ev();
extern void _ZN10S1576C2_ntD1Ev();
Name_Map name_map_S1576C2_nt[] = {
  NSPAIR(_ZN10S1576C2_ntC1Ev),
  NSPAIR(_ZN10S1576C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1576C4;
extern VTBL_ENTRY _ZTI7S1576C4[];
extern  VTBL_ENTRY _ZTV7S1576C4[];
extern Class_Descriptor cd_S1576C3_nt;
extern VTBL_ENTRY _ZTI10S1576C3_nt[];
extern  VTBL_ENTRY _ZTV10S1576C3_nt[];
static Base_Class bases_S1576C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1576C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1576C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI10S1576C2_nt[];
extern void _ZN10S1576C2_ntD1Ev();
extern void _ZN10S1576C2_ntD0Ev();
extern void _ZN7S1576C42v8Ev();
extern void _ZN7S1576C42v9Ev();
extern void _ZN7S1576C43v10Ev();
extern void _ZN7S1576C43v11Ev();
extern void _ZN7S1576C43v12Ev();
extern void _ZN7S1576C43v13Ev();
extern void _ZN7S1576C43v14Ev();
extern void _ZN7S1576C43v15Ev();
extern void _ZN7S1576C43v16Ev();
extern void _ZN7S1576C43v17Ev();
extern void _ZN7S1576C43v18Ev();
extern void _ZN7S1576C43v19Ev();
extern void _ZN7S1576C43v20Ev();
extern void _ZN7S1576C43v21Ev();
extern void _ZN7S1576C43v22Ev();
extern void _ZN7S1576C43v23Ev();
extern void _ZN7S1576C43v24Ev();
extern void _ZN7S1576C43v25Ev();
extern void _ZN7S1576C43v26Ev();
extern void _ZN7S1576C43v27Ev();
extern void _ZN7S1576C43v28Ev();
extern void _ZN7S1576C43v29Ev();
extern void _ZN7S1576C43v30Ev();
extern void _ZN7S1576C43v31Ev();
extern void _ZN7S1576C43v32Ev();
extern void _ZN7S1576C43v33Ev();
extern void _ZN7S1576C43v34Ev();
extern void _ZN7S1576C43v35Ev();
extern void _ZN7S1576C43v36Ev();
extern void _ZN7S1576C43v37Ev();
extern void _ZN7S1576C43v38Ev();
extern void _ZN7S1576C43v39Ev();
extern void _ZN7S1576C43v40Ev();
extern void _ZN7S1576C43v41Ev();
extern void _ZN7S1576C43v42Ev();
extern void _ZN7S1576C43v43Ev();
extern void _ZN7S1576C43v44Ev();
extern void _ZN7S1576C43v45Ev();
extern void _ZN7S1576C43v46Ev();
extern void _ZN7S1576C43v47Ev();
extern void _ZN7S1576C43v48Ev();
extern void _ZN7S1576C43v49Ev();
extern void _ZN7S1576C43v50Ev();
extern void _ZN7S1576C43v51Ev();
extern void _ZN7S1576C43v52Ev();
extern void _ZN7S1576C43v53Ev();
extern void _ZN7S1576C43v54Ev();
extern void _ZN7S1576C43v55Ev();
extern void _ZN7S1576C43v56Ev();
extern void _ZN7S1576C43v57Ev();
extern void _ZN7S1576C43v58Ev();
extern void _ZN7S1576C43v59Ev();
extern void _ZN7S1576C43v60Ev();
extern void _ZN7S1576C43v61Ev();
extern void _ZN7S1576C43v62Ev();
extern void _ZN7S1576C43v63Ev();
extern void _ZN7S1576C43v64Ev();
extern void _ZN7S1576C43v65Ev();
extern void _ZN7S1576C43v66Ev();
extern void _ZN7S1576C43v67Ev();
extern void _ZN7S1576C43v68Ev();
extern void _ZN7S1576C43v69Ev();
extern void _ZN7S1576C43v70Ev();
extern void _ZN7S1576C43v71Ev();
extern void _ZN10S1576C3_nt3v72Ev();
extern void _ZN10S1576C3_nt3v73Ev();
extern void _ZN10S1576C3_nt3v74Ev();
extern void _ZN10S1576C3_nt3v75Ev();
extern void _ZN10S1576C3_nt3v76Ev();
extern void _ZN10S1576C3_nt3v77Ev();
extern void _ZN10S1576C3_nt3v78Ev();
extern void _ZN10S1576C3_nt3v79Ev();
extern void _ZN10S1576C3_nt3v80Ev();
extern void _ZN10S1576C3_nt3v81Ev();
extern void _ZN10S1576C3_nt3v82Ev();
extern void _ZN10S1576C3_nt3v83Ev();
extern void _ZN10S1576C3_nt3v84Ev();
extern void _ZN10S1576C3_nt3v85Ev();
extern void _ZN10S1576C3_nt3v86Ev();
extern void _ZN10S1576C3_nt3v87Ev();
extern void _ZN10S1576C3_nt3v88Ev();
extern void _ZN10S1576C3_nt3v89Ev();
extern void _ZN10S1576C3_nt3v90Ev();
extern void _ZN10S1576C3_nt3v91Ev();
extern void _ZN10S1576C2_nt3v92Ev();
extern void _ZN10S1576C2_nt3v93Ev();
static  VTBL_ENTRY vtc_S1576C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1576C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1576C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1576C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S1576C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1576C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v71Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1576C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1576C2_nt3v93Ev,
};
extern VTBL_ENTRY _ZTI10S1576C2_nt[];
VTBL_ENTRY *P__ZTI10S1576C2_nt = _ZTI10S1576C2_nt; 
extern  VTBL_ENTRY _ZTV10S1576C2_nt[];
Class_Descriptor cd_S1576C2_nt = {  "S1576C2_nt", // class name
  bases_S1576C2_nt, 2,
  &(vtc_S1576C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,64), // object size
  NSPAIRA(_ZTI10S1576C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1576C2_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  S1576C8_nt  {
  char s1576c8f0[4];
  ::S3214C22 s1576c8f1;
  int s1576c8f2[2];
  void  mf1576c8(); // _ZN10S1576C8_nt8mf1576c8Ev
};
//SIG(-1 S1576C8_nt) C1{ m Fc[4] FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fi[2]}


void  S1576C8_nt ::mf1576c8(){}

//skip512 S1576C8_nt

#else // __cplusplus

Class_Descriptor cd_S1576C8_nt = {  "S1576C8_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  S1576C7_nt  : S1576C8_nt {
  void *s1576c7f0;
};
//SIG(-1 S1576C7_nt) C1{ BC2{ m Fc[4] FC3{ BC4{ BC5{ m Fp Fi[2]}}} Fi[2]} Fp}



//skip512 S1576C7_nt

#else // __cplusplus

extern Class_Descriptor cd_S1576C8_nt;
static Base_Class bases_S1576C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1576C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1576C1  : S1576C2_nt {
  ::S1576C7_nt s1576c1f0;
  ::S1576C7_nt s1576c1f1;
  unsigned int s1576c1f2:1;
  virtual  ~S1576C1(); // _ZN7S1576C1D1Ev
  virtual void  v1(); // _ZN7S1576C12v1Ev
  virtual void  v2(); // _ZN7S1576C12v2Ev
  virtual void  v3(); // _ZN7S1576C12v3Ev
  virtual void  v4(); // _ZN7S1576C12v4Ev
  virtual void  v5(); // _ZN7S1576C12v5Ev
  virtual void  v6(); // _ZN7S1576C12v6Ev
  virtual void  v7(); // _ZN7S1576C12v7Ev
  S1576C1(); // tgen
};
//SIG(1 S1576C1) 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 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC6{ m}} vd v92 v93} vd v1 v2 v3 v4 v5 v6 v7 FC7{ BC8{ m Fc[4] FC9{ BC10{ BC11{ m Fp Fi[2]}}} Fi[2]} Fp} FC7 Fi:1}


 S1576C1 ::~S1576C1(){ note_dtor("S1576C1", this);}
void  S1576C1 ::v1(){vfunc_called(this, "_ZN7S1576C12v1Ev");}
void  S1576C1 ::v2(){vfunc_called(this, "_ZN7S1576C12v2Ev");}
void  S1576C1 ::v3(){vfunc_called(this, "_ZN7S1576C12v3Ev");}
void  S1576C1 ::v4(){vfunc_called(this, "_ZN7S1576C12v4Ev");}
void  S1576C1 ::v5(){vfunc_called(this, "_ZN7S1576C12v5Ev");}
void  S1576C1 ::v6(){vfunc_called(this, "_ZN7S1576C12v6Ev");}
void  S1576C1 ::v7(){vfunc_called(this, "_ZN7S1576C12v7Ev");}
S1576C1 ::S1576C1(){ note_ctor("S1576C1", this);} // tgen

static void Test_S1576C1()
{
  extern Class_Descriptor cd_S1576C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,32)];
    init_test(&cd_S1576C1, buf);
    S1576C1 *dp, &lv = *(dp=new (buf) S1576C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,124), "sizeof(S1576C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1576C1)");
    check_base_class_offset(lv, (S1576C4*)(S1576C3_nt*)(S1576C2_nt*), 0, "S1576C1");
    check_base_class_offset(lv, (S1576C3_nt*)(S1576C2_nt*), 0, "S1576C1");
    check_base_class_offset(lv, (S1576C2_nt*), 0, "S1576C1");
    check_field_offset(lv, s1576c1f0, ABISELECT(104,64), "S1576C1.s1576c1f0");
    check_field_offset(lv, s1576c1f1, ABISELECT(144,92), "S1576C1.s1576c1f1");
    set_bf_and_test(lv, s1576c1f2, ABISELECT(184,120), 0, 1, 1, "S1576C1");
    test_class_info(&lv, &cd_S1576C1);
    dp->~S1576C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1576C1(Test_S1576C1, "S1576C1", ABISELECT(192,124));

#else // __cplusplus

extern void _ZN7S1576C1C1Ev();
extern void _ZN7S1576C1D1Ev();
Name_Map name_map_S1576C1[] = {
  NSPAIR(_ZN7S1576C1C1Ev),
  NSPAIR(_ZN7S1576C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1576C4;
extern VTBL_ENTRY _ZTI7S1576C4[];
extern  VTBL_ENTRY _ZTV7S1576C4[];
extern Class_Descriptor cd_S1576C3_nt;
extern VTBL_ENTRY _ZTI10S1576C3_nt[];
extern  VTBL_ENTRY _ZTV10S1576C3_nt[];
extern Class_Descriptor cd_S1576C2_nt;
extern VTBL_ENTRY _ZTI10S1576C2_nt[];
extern  VTBL_ENTRY _ZTV10S1576C2_nt[];
static Base_Class bases_S1576C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1576C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1576C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1576C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1576C1[];
extern void _ZN7S1576C1D1Ev();
extern void _ZN7S1576C1D0Ev();
extern void _ZN7S1576C42v8Ev();
extern void _ZN7S1576C42v9Ev();
extern void _ZN7S1576C43v10Ev();
extern void _ZN7S1576C43v11Ev();
extern void _ZN7S1576C43v12Ev();
extern void _ZN7S1576C43v13Ev();
extern void _ZN7S1576C43v14Ev();
extern void _ZN7S1576C43v15Ev();
extern void _ZN7S1576C43v16Ev();
extern void _ZN7S1576C43v17Ev();
extern void _ZN7S1576C43v18Ev();
extern void _ZN7S1576C43v19Ev();
extern void _ZN7S1576C43v20Ev();
extern void _ZN7S1576C43v21Ev();
extern void _ZN7S1576C43v22Ev();
extern void _ZN7S1576C43v23Ev();
extern void _ZN7S1576C43v24Ev();
extern void _ZN7S1576C43v25Ev();
extern void _ZN7S1576C43v26Ev();
extern void _ZN7S1576C43v27Ev();
extern void _ZN7S1576C43v28Ev();
extern void _ZN7S1576C43v29Ev();
extern void _ZN7S1576C43v30Ev();
extern void _ZN7S1576C43v31Ev();
extern void _ZN7S1576C43v32Ev();
extern void _ZN7S1576C43v33Ev();
extern void _ZN7S1576C43v34Ev();
extern void _ZN7S1576C43v35Ev();
extern void _ZN7S1576C43v36Ev();
extern void _ZN7S1576C43v37Ev();
extern void _ZN7S1576C43v38Ev();
extern void _ZN7S1576C43v39Ev();
extern void _ZN7S1576C43v40Ev();
extern void _ZN7S1576C43v41Ev();
extern void _ZN7S1576C43v42Ev();
extern void _ZN7S1576C43v43Ev();
extern void _ZN7S1576C43v44Ev();
extern void _ZN7S1576C43v45Ev();
extern void _ZN7S1576C43v46Ev();
extern void _ZN7S1576C43v47Ev();
extern void _ZN7S1576C43v48Ev();
extern void _ZN7S1576C43v49Ev();
extern void _ZN7S1576C43v50Ev();
extern void _ZN7S1576C43v51Ev();
extern void _ZN7S1576C43v52Ev();
extern void _ZN7S1576C43v53Ev();
extern void _ZN7S1576C43v54Ev();
extern void _ZN7S1576C43v55Ev();
extern void _ZN7S1576C43v56Ev();
extern void _ZN7S1576C43v57Ev();
extern void _ZN7S1576C43v58Ev();
extern void _ZN7S1576C43v59Ev();
extern void _ZN7S1576C43v60Ev();
extern void _ZN7S1576C43v61Ev();
extern void _ZN7S1576C43v62Ev();
extern void _ZN7S1576C43v63Ev();
extern void _ZN7S1576C43v64Ev();
extern void _ZN7S1576C43v65Ev();
extern void _ZN7S1576C43v66Ev();
extern void _ZN7S1576C43v67Ev();
extern void _ZN7S1576C43v68Ev();
extern void _ZN7S1576C43v69Ev();
extern void _ZN7S1576C43v70Ev();
extern void _ZN7S1576C43v71Ev();
extern void _ZN10S1576C3_nt3v72Ev();
extern void _ZN10S1576C3_nt3v73Ev();
extern void _ZN10S1576C3_nt3v74Ev();
extern void _ZN10S1576C3_nt3v75Ev();
extern void _ZN10S1576C3_nt3v76Ev();
extern void _ZN10S1576C3_nt3v77Ev();
extern void _ZN10S1576C3_nt3v78Ev();
extern void _ZN10S1576C3_nt3v79Ev();
extern void _ZN10S1576C3_nt3v80Ev();
extern void _ZN10S1576C3_nt3v81Ev();
extern void _ZN10S1576C3_nt3v82Ev();
extern void _ZN10S1576C3_nt3v83Ev();
extern void _ZN10S1576C3_nt3v84Ev();
extern void _ZN10S1576C3_nt3v85Ev();
extern void _ZN10S1576C3_nt3v86Ev();
extern void _ZN10S1576C3_nt3v87Ev();
extern void _ZN10S1576C3_nt3v88Ev();
extern void _ZN10S1576C3_nt3v89Ev();
extern void _ZN10S1576C3_nt3v90Ev();
extern void _ZN10S1576C3_nt3v91Ev();
extern void _ZN10S1576C2_nt3v92Ev();
extern void _ZN10S1576C2_nt3v93Ev();
extern void _ZN7S1576C12v1Ev();
extern void _ZN7S1576C12v2Ev();
extern void _ZN7S1576C12v3Ev();
extern void _ZN7S1576C12v4Ev();
extern void _ZN7S1576C12v5Ev();
extern void _ZN7S1576C12v6Ev();
extern void _ZN7S1576C12v7Ev();
static  VTBL_ENTRY vtc_S1576C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1576C1[0]),
  (VTBL_ENTRY)&_ZN7S1576C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1576C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1576C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1576C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v70Ev,
  (VTBL_ENTRY)&_ZN7S1576C43v71Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1576C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1576C2_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1576C2_nt3v93Ev,
  (VTBL_ENTRY)&_ZN7S1576C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1576C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1576C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1576C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1576C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1576C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1576C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S1576C1[];
extern  VTBL_ENTRY _ZTV7S1576C1[];
Class_Descriptor cd_S1576C1 = {  "S1576C1", // class name
  bases_S1576C1, 3,
  &(vtc_S1576C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,124), // object size
  NSPAIRA(_ZTI7S1576C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1576C1),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  S19657C2_nt  {
  char s19657c2f0;
  void  mf19657c2(); // _ZN11S19657C2_nt9mf19657c2Ev
};
//SIG(-1 S19657C2_nt) C1{ m Fc}


void  S19657C2_nt ::mf19657c2(){}

//skip512 S19657C2_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S19657C2_nt[];
VTBL_ENTRY *P__ZTI11S19657C2_nt = _ZTI11S19657C2_nt; 
Class_Descriptor cd_S19657C2_nt = {  "S19657C2_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI11S19657C2_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  S19657C4_nt  {
  __tsi64 s19657c4f0;
  void *s19657c4f1;
  char s19657c4f2:6;
  long double s19657c4f3;
  char s19657c4f4[7];
  __tsi64 s19657c4f5;
  char s19657c4f6[9];
  long double s19657c4f7[8];
  void *s19657c4f8;
  short s19657c4f9;
  void *s19657c4f10[7];
  int s19657c4f11;
  void *s19657c4f12;
  virtual void  v4(); // _ZN11S19657C4_nt2v4Ev
  virtual void  v5(); // _ZN11S19657C4_nt2v5Ev
  ~S19657C4_nt(); // tgen
  S19657C4_nt(); // tgen
};
//SIG(-1 S19657C4_nt) C1{ v1 v2 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp}


void  S19657C4_nt ::v4(){vfunc_called(this, "_ZN11S19657C4_nt2v4Ev");}
void  S19657C4_nt ::v5(){vfunc_called(this, "_ZN11S19657C4_nt2v5Ev");}
S19657C4_nt ::~S19657C4_nt(){ note_dtor("S19657C4_nt", this);} // tgen
S19657C4_nt ::S19657C4_nt(){ note_ctor("S19657C4_nt", this);} // tgen

//skip512 S19657C4_nt

#else // __cplusplus

extern void _ZN11S19657C4_ntC1Ev();
extern void _ZN11S19657C4_ntD1Ev();
Name_Map name_map_S19657C4_nt[] = {
  NSPAIR(_ZN11S19657C4_ntC1Ev),
  NSPAIR(_ZN11S19657C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
static  VTBL_ENTRY vtc_S19657C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19657C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
VTBL_ENTRY *P__ZTI11S19657C4_nt = _ZTI11S19657C4_nt; 
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
Class_Descriptor cd_S19657C4_nt = {  "S19657C4_nt", // class name
  0,0,//no base classes
  &(vtc_S19657C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(304,200), // object size
  NSPAIRA(_ZTI11S19657C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19657C4_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

union  S19657C5_nt  {
  __tsi64 s19657c5f0;
  long double s19657c5f1[10];
  long double s19657c5f2;
  short  :0;
  void  mf19657c5(); // _ZN11S19657C5_nt9mf19657c5Ev
};
//SIG(1 S19657C5_nt) U1{ m FL FD[10] FD Fs:0}

#endif // __cplusplus
#ifdef __cplusplus

struct  S19657C6_nt  {
  char s19657c6f0;
  __tsi64 s19657c6f1[10];
  long double s19657c6f2;
  ::S19657C4_nt s19657c6f3;
  void *s19657c6f4;
  short s19657c6f5;
  void *s19657c6f6;
  int s19657c6f7;
  virtual void  v7(); // _ZN11S19657C6_nt2v7Ev
  virtual void  v8(); // _ZN11S19657C6_nt2v8Ev
  ~S19657C6_nt(); // tgen
  S19657C6_nt(); // tgen
};
//SIG(-1 S19657C6_nt) C1{ v1 v2 Fc FL[10] FD FC2{ v3 v4 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} Fp Fs Fp Fi}


void  S19657C6_nt ::v7(){vfunc_called(this, "_ZN11S19657C6_nt2v7Ev");}
void  S19657C6_nt ::v8(){vfunc_called(this, "_ZN11S19657C6_nt2v8Ev");}
S19657C6_nt ::~S19657C6_nt(){ note_dtor("S19657C6_nt", this);} // tgen
S19657C6_nt ::S19657C6_nt(){ note_ctor("S19657C6_nt", this);} // tgen

//skip512 S19657C6_nt

#else // __cplusplus

extern void _ZN11S19657C6_ntC1Ev();
extern void _ZN11S19657C6_ntD1Ev();
Name_Map name_map_S19657C6_nt[] = {
  NSPAIR(_ZN11S19657C6_ntC1Ev),
  NSPAIR(_ZN11S19657C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19657C6_nt[];
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY vtc_S19657C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19657C6_nt[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI11S19657C6_nt[];
VTBL_ENTRY *P__ZTI11S19657C6_nt = _ZTI11S19657C6_nt; 
extern  VTBL_ENTRY _ZTV11S19657C6_nt[];
Class_Descriptor cd_S19657C6_nt = {  "S19657C6_nt", // class name
  0,0,//no base classes
  &(vtc_S19657C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(448,316), // object size
  NSPAIRA(_ZTI11S19657C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19657C6_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  S19657C3_nt  {
  int s19657c3f0;
  ::S19657C4_nt s19657c3f1;
  int s19657c3f2[2];
  ::S19657C5_nt s19657c3f3;
  long double s19657c3f4;
  int s19657c3f5;
  int s19657c3f6;
  ::S19657C6_nt s19657c3f7;
  __tsi64 s19657c3f8;
  int s19657c3f9;
  ::S19657C6_nt s19657c3f10;
  virtual  ~S19657C3_nt(); // _ZN11S19657C3_ntD1Ev
  virtual void  v2(); // _ZN11S19657C3_nt2v2Ev
  virtual void  v3(); // _ZN11S19657C3_nt2v3Ev
  S19657C3_nt(); // tgen
};
//SIG(-1 S19657C3_nt) C1{ vd v1 v2 Fi FC2{ v3 v4 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} Fi[2] FU3{ m FL FD[10] FD Fs:0} FD Fi Fi FC4{ v5 v6 Fc FL[10] FD FC2 Fp Fs Fp Fi} FL Fi FC4}


 S19657C3_nt ::~S19657C3_nt(){ note_dtor("S19657C3_nt", this);}
void  S19657C3_nt ::v2(){vfunc_called(this, "_ZN11S19657C3_nt2v2Ev");}
void  S19657C3_nt ::v3(){vfunc_called(this, "_ZN11S19657C3_nt2v3Ev");}
S19657C3_nt ::S19657C3_nt(){ note_ctor("S19657C3_nt", this);} // tgen

//skip512 S19657C3_nt

#else // __cplusplus

extern void _ZN11S19657C3_ntC1Ev();
extern void _ZN11S19657C3_ntD1Ev();
Name_Map name_map_S19657C3_nt[] = {
  NSPAIR(_ZN11S19657C3_ntC1Ev),
  NSPAIR(_ZN11S19657C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19657C3_nt[];
extern void _ZN11S19657C3_ntD1Ev();
extern void _ZN11S19657C3_ntD0Ev();
extern void _ZN11S19657C3_nt2v2Ev();
extern void _ZN11S19657C3_nt2v3Ev();
static  VTBL_ENTRY vtc_S19657C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19657C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S19657C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S19657C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v3Ev,
};
extern VTBL_ENTRY _ZTI11S19657C3_nt[];
VTBL_ENTRY *P__ZTI11S19657C3_nt = _ZTI11S19657C3_nt; 
extern  VTBL_ENTRY _ZTV11S19657C3_nt[];
Class_Descriptor cd_S19657C3_nt = {  "S19657C3_nt", // class name
  0,0,//no base classes
  &(vtc_S19657C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1440,1000), // object size
  NSPAIRA(_ZTI11S19657C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19657C3_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19657C11_nt  {
  void *s19657c11f0;
  __tsi64 s19657c11f1;
  void *s19657c11f2[7];
  void  mf19657c11(); // _ZN12S19657C11_nt10mf19657c11Ev
  virtual  ~S19657C11_nt(); // _ZN12S19657C11_ntD1Ev
  S19657C11_nt(); // tgen
};
//SIG(-1 S19657C11_nt) C1{ vd m Fp FL Fp[7]}


void  S19657C11_nt ::mf19657c11(){}
 S19657C11_nt ::~S19657C11_nt(){ note_dtor("S19657C11_nt", this);}
S19657C11_nt ::S19657C11_nt(){ note_ctor("S19657C11_nt", this);} // tgen

//skip512 S19657C11_nt

#else // __cplusplus

extern void _ZN12S19657C11_ntC1Ev();
extern void _ZN12S19657C11_ntD1Ev();
Name_Map name_map_S19657C11_nt[] = {
  NSPAIR(_ZN12S19657C11_ntC1Ev),
  NSPAIR(_ZN12S19657C11_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern void _ZN12S19657C11_ntD1Ev();
extern void _ZN12S19657C11_ntD0Ev();
static  VTBL_ENTRY vtc_S19657C11_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S19657C11_nt[0]),
  (VTBL_ENTRY)&_ZN12S19657C11_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19657C11_ntD0Ev,
};
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
VTBL_ENTRY *P__ZTI12S19657C11_nt = _ZTI12S19657C11_nt; 
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
Class_Descriptor cd_S19657C11_nt = {  "S19657C11_nt", // class name
  0,0,//no base classes
  &(vtc_S19657C11_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI12S19657C11_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S19657C11_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  S19657C10_nt  {
  ::S19657C4_nt s19657c10f0[8];
  ::S19657C4_nt s19657c10f1[2];
  void *s19657c10f2;
  int s19657c10f3;
  ::S19657C11_nt s19657c10f4;
  ::S19657C4_nt s19657c10f5[5];
  void *s19657c10f6[5];
  ::S19657C4_nt s19657c10f7[5];
  virtual void  v6(); // _ZN12S19657C10_nt2v6Ev
  ~S19657C10_nt(); // tgen
  S19657C10_nt(); // tgen
};
//SIG(-1 S19657C10_nt) C1{ v1 FC2{ v2 v3 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp}[8] FC2[2] Fp Fi FC3{ vd m Fp FL Fp[7]} FC2[5] Fp[5] FC2[5]}


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

//skip512 S19657C10_nt

#else // __cplusplus

extern void _ZN12S19657C10_ntC1Ev();
extern void _ZN12S19657C10_ntD1Ev();
Name_Map name_map_S19657C10_nt[] = {
  NSPAIR(_ZN12S19657C10_ntC1Ev),
  NSPAIR(_ZN12S19657C10_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S19657C10_nt[];
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY vtc_S19657C10_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S19657C10_nt[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI12S19657C10_nt[];
VTBL_ENTRY *P__ZTI12S19657C10_nt = _ZTI12S19657C10_nt; 
extern  VTBL_ENTRY _ZTV12S19657C10_nt[];
Class_Descriptor cd_S19657C10_nt = {  "S19657C10_nt", // class name
  0,0,//no base classes
  &(vtc_S19657C10_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(6240,4076), // object size
  NSPAIRA(_ZTI12S19657C10_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S19657C10_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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19657C9  : S19657C4_nt , virtual S19657C10_nt , S19657C11_nt , virtual S19657C6_nt {
  __tsi64 s19657c9f0:2;
  long double s19657c9f1[7];
  void *s19657c9f2;
  ::S19657C10_nt s19657c9f3;
  void *s19657c9f4;
  int s19657c9f5;
  void *s19657c9f6;
  void *s19657c9f7;
  ::S19657C11_nt s19657c9f8;
  ::S19657C4_nt s19657c9f9;
  long double s19657c9f10[8];
  virtual void  v9(); // _ZN8S19657C92v9Ev
  ~S19657C9(); // tgen
  S19657C9(); // tgen
};
//SIG(-1 S19657C9) C1{ BC2{ v2 v3 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} VBC3{ v4 FC2[8] FC2[2] Fp Fi FC4{ vd m Fp FL Fp[7]} FC2[5] Fp[5] FC2[5]} BC4 VBC5{ v5 v6 Fc FL[10] FD FC2 Fp Fs Fp Fi} v1 FL:2 FD[7] Fp FC3 Fp Fi Fp[2] FC4 FC2 FD[8]}


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

static void Test_S19657C9()
{
  extern Class_Descriptor cd_S19657C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(875,2291)];
    init_test(&cd_S19657C9, buf);
    S19657C9 *dp, &lv = *(dp=new (buf) S19657C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(13984,9160), "sizeof(S19657C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19657C9)");
    check_base_class_offset(lv, (S19657C4_nt*), 0, "S19657C9");
    check_base_class_offset(lv, (S19657C10_nt*), ABISELECT(7296,4768), "S19657C9");
    check_base_class_offset(lv, (S19657C11_nt*), ABISELECT(296,200), "S19657C9");
    check_base_class_offset(lv, (S19657C6_nt*), ABISELECT(13536,8844), "S19657C9");
    set_bf_and_test(lv, s19657c9f0, ABISELECT(376,244), 0, 2, 1, "S19657C9");
    set_bf_and_test(lv, s19657c9f0, ABISELECT(376,244), 0, 2, hide_sll(1LL<<1), "S19657C9");
    check_field_offset(lv, s19657c9f1, ABISELECT(384,248), "S19657C9.s19657c9f1");
    check_field_offset(lv, s19657c9f2, ABISELECT(496,332), "S19657C9.s19657c9f2");
    check_field_offset(lv, s19657c9f3, ABISELECT(512,336), "S19657C9.s19657c9f3");
    check_field_offset(lv, s19657c9f4, ABISELECT(6752,4412), "S19657C9.s19657c9f4");
    check_field_offset(lv, s19657c9f5, ABISELECT(6760,4416), "S19657C9.s19657c9f5");
    check_field_offset(lv, s19657c9f6, ABISELECT(6768,4420), "S19657C9.s19657c9f6");
    check_field_offset(lv, s19657c9f7, ABISELECT(6776,4424), "S19657C9.s19657c9f7");
    check_field_offset(lv, s19657c9f8, ABISELECT(6784,4428), "S19657C9.s19657c9f8");
    check_field_offset(lv, s19657c9f9, ABISELECT(6864,4472), "S19657C9.s19657c9f9");
    check_field_offset(lv, s19657c9f10, ABISELECT(7168,4672), "S19657C9.s19657c9f10");
    test_class_info(&lv, &cd_S19657C9);
    dp->~S19657C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19657C9(Test_S19657C9, "S19657C9", ABISELECT(13984,9160));

#else // __cplusplus

extern void _ZN8S19657C9C1Ev();
extern void _ZN8S19657C9D1Ev();
Name_Map name_map_S19657C9[] = {
  NSPAIR(_ZN8S19657C9C1Ev),
  NSPAIR(_ZN8S19657C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C10_nt;
extern VTBL_ENTRY _ZTI12S19657C10_nt[];
extern  VTBL_ENTRY _ZTV12S19657C10_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C6_nt;
extern VTBL_ENTRY _ZTI11S19657C6_nt[];
extern  VTBL_ENTRY _ZTV11S19657C6_nt[];
static Base_Class bases_S19657C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19657C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19657C10_nt,    ABISELECT(7296,4768), //bcp->offset
    13, //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_S19657C11_nt,    ABISELECT(296,200), //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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19657C6_nt,    ABISELECT(13536,8844), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19657C9[];
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C9D1Ev();
extern void _ZN8S19657C9D0Ev();
extern void ABISELECT(_ZThn296_N8S19657C9D1Ev,_ZThn200_N8S19657C9D1Ev)();
extern void ABISELECT(_ZThn296_N8S19657C9D0Ev,_ZThn200_N8S19657C9D0Ev)();
extern void _ZN12S19657C10_nt2v6Ev();
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY vtc_S19657C9[] = {
  ABISELECT(13536,8844),
  ABISELECT(7296,4768),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D0Ev,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19657C9D1Ev,_ZThn200_N8S19657C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19657C9D0Ev,_ZThn200_N8S19657C9D0Ev),
  0,
  ABISELECT(-7296,-4768),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-13536,-8844),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern VTBL_ENTRY _ZTV8S19657C9[];
static  VTT_ENTRY vtt_S19657C9[] = {
  {&(_ZTV8S19657C9[4]),  4,23},
  {&(_ZTV8S19657C9[16]),  16,23},
  {&(_ZTV8S19657C9[21]),  21,23},
};
extern VTBL_ENTRY _ZTI8S19657C9[];
extern  VTBL_ENTRY _ZTV8S19657C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C9[];
Class_Descriptor cd_S19657C9 = {  "S19657C9", // class name
  bases_S19657C9, 4,
  &(vtc_S19657C9[0]), // expected_vtbl_contents
  &(vtt_S19657C9[0]), // expected_vtt_contents
  ABISELECT(13984,9160), // object size
  NSPAIRA(_ZTI8S19657C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19657C9),23, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19657C9),3, //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  S19657C8  : S19657C9 , S19657C6_nt , S19657C11_nt , S19657C10_nt , virtual S19657C4_nt {
  ::S19657C11_nt s19657c8f0;
  int s19657c8f1;
  void *s19657c8f2;
  void *s19657c8f3;
  __tsi64 s19657c8f4;
  __tsi64 s19657c8f5;
  int s19657c8f6;
  int s19657c8f7;
  void *s19657c8f8;
  int s19657c8f9;
  ::S19657C6_nt s19657c8f10;
  int s19657c8f11;
  virtual  ~S19657C8(); // _ZN8S19657C8D2Ev
  virtual void  v10(); // _ZN8S19657C83v10Ev
  virtual void  v11(); // _ZN8S19657C83v11Ev
  S19657C8(); // tgen
};
//SIG(-1 S19657C8) C1{ BC2{ BC3{ v3 v4 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} VBC4{ v5 FC3[8] FC3[2] Fp Fi FC5{ vd m Fp FL Fp[7]} FC3[5] Fp[5] FC3[5]} BC5 VBC6{ v6 v7 Fc FL[10] FD FC3 Fp Fs Fp Fi} v8 FL:2 FD[7] Fp FC4 Fp Fi Fp[2] FC5 FC3 FD[8]} BC6 BC5 BC4 VBC3 vd v1 v2 FC5 Fi Fp[2] FL[2] Fi[2] Fp Fi FC6 Fi}


 S19657C8 ::~S19657C8(){ note_dtor("S19657C8", this);}
void  S19657C8 ::v10(){vfunc_called(this, "_ZN8S19657C83v10Ev");}
void  S19657C8 ::v11(){vfunc_called(this, "_ZN8S19657C83v11Ev");}
S19657C8 ::S19657C8(){ note_ctor("S19657C8", this);} // tgen

static void Test_S19657C8()
{
  extern Class_Descriptor cd_S19657C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(1355,3552)];
    init_test(&cd_S19657C8, buf);
    S19657C8 *dp, &lv = *(dp=new (buf) S19657C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(21664,14204), "sizeof(S19657C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19657C8)");
    check_base_class_offset(lv, (S19657C4_nt*)(S19657C9*), 0, "S19657C8");
    check_base_class_offset(lv, (S19657C10_nt*)(S19657C9*), ABISELECT(14672,9612), "S19657C8");
    check_base_class_offset(lv, (S19657C11_nt*)(S19657C9*), ABISELECT(296,200), "S19657C8");
    check_base_class_offset(lv, (S19657C6_nt*)(S19657C9*), ABISELECT(20912,13688), "S19657C8");
    check_base_class_offset(lv, (S19657C9*), 0, "S19657C8");
    /*is_ambiguous_... S19657C8::S19657C6_nt */ AMB_check_base_class_offset(lv, (S19657C6_nt*), ABISELECT(7296,4768), "S19657C8");
    /*is_ambiguous_... S19657C8::S19657C11_nt */ AMB_check_base_class_offset(lv, (S19657C11_nt*), ABISELECT(7744,5084), "S19657C8");
    /*is_ambiguous_... S19657C8::S19657C10_nt */ AMB_check_base_class_offset(lv, (S19657C10_nt*), ABISELECT(7824,5128), "S19657C8");
    /*is_ambiguous_... S19657C8::S19657C4_nt */ AMB_check_base_class_offset(lv, (S19657C4_nt*), ABISELECT(21360,14004), "S19657C8");
    check_field_offset(lv, s19657c8f0, ABISELECT(14064,9204), "S19657C8.s19657c8f0");
    check_field_offset(lv, s19657c8f1, ABISELECT(14144,9248), "S19657C8.s19657c8f1");
    check_field_offset(lv, s19657c8f2, ABISELECT(14152,9252), "S19657C8.s19657c8f2");
    check_field_offset(lv, s19657c8f3, ABISELECT(14160,9256), "S19657C8.s19657c8f3");
    check_field_offset(lv, s19657c8f4, ABISELECT(14168,9260), "S19657C8.s19657c8f4");
    check_field_offset(lv, s19657c8f5, ABISELECT(14176,9268), "S19657C8.s19657c8f5");
    check_field_offset(lv, s19657c8f6, ABISELECT(14184,9276), "S19657C8.s19657c8f6");
    check_field_offset(lv, s19657c8f7, ABISELECT(14188,9280), "S19657C8.s19657c8f7");
    check_field_offset(lv, s19657c8f8, ABISELECT(14192,9284), "S19657C8.s19657c8f8");
    check_field_offset(lv, s19657c8f9, ABISELECT(14200,9288), "S19657C8.s19657c8f9");
    check_field_offset(lv, s19657c8f10, ABISELECT(14208,9292), "S19657C8.s19657c8f10");
    check_field_offset(lv, s19657c8f11, ABISELECT(14656,9608), "S19657C8.s19657c8f11");
    test_class_info(&lv, &cd_S19657C8);
    dp->~S19657C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19657C8(Test_S19657C8, "S19657C8", ABISELECT(21664,14204));

#else // __cplusplus

extern void _ZN8S19657C8C1Ev();
extern void _ZN8S19657C8D2Ev();
Name_Map name_map_S19657C8[] = {
  NSPAIR(_ZN8S19657C8C1Ev),
  NSPAIR(_ZN8S19657C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C10_nt;
extern VTBL_ENTRY _ZTI12S19657C10_nt[];
extern  VTBL_ENTRY _ZTV12S19657C10_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C6_nt;
extern VTBL_ENTRY _ZTI11S19657C6_nt[];
extern  VTBL_ENTRY _ZTV11S19657C6_nt[];
extern Class_Descriptor cd_S19657C9;
extern VTBL_ENTRY _ZTI8S19657C9[];
extern  VTBL_ENTRY _ZTV8S19657C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C9[];
extern Class_Descriptor cd_S19657C6_nt;
extern VTBL_ENTRY _ZTI11S19657C6_nt[];
extern  VTBL_ENTRY _ZTV11S19657C6_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C10_nt;
extern VTBL_ENTRY _ZTI12S19657C10_nt[];
extern  VTBL_ENTRY _ZTV12S19657C10_nt[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
static Base_Class bases_S19657C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19657C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19657C10_nt,    ABISELECT(14672,9612), //bcp->offset
    27, //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
    4, //immediately_derived
  0, 1},
  {&cd_S19657C11_nt,    ABISELECT(296,200), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19657C6_nt,    ABISELECT(20912,13688), //bcp->offset
    31, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19657C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19657C6_nt,    ABISELECT(7296,4768), //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
    -1, //immediately_derived
  1, 0},
  {&cd_S19657C11_nt,    ABISELECT(7744,5084), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19657C10_nt,    ABISELECT(7824,5128), //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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19657C4_nt,    ABISELECT(21360,14004), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19657C8[];
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C8D1Ev();
extern void _ZN8S19657C8D0Ev();
extern void _ZN8S19657C83v10Ev();
extern void _ZN8S19657C83v11Ev();
extern void ABISELECT(_ZThn296_N8S19657C8D1Ev,_ZThn200_N8S19657C8D1Ev)();
extern void ABISELECT(_ZThn296_N8S19657C8D0Ev,_ZThn200_N8S19657C8D0Ev)();
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
extern void ABISELECT(_ZThn7744_N8S19657C8D1Ev,_ZThn5084_N8S19657C8D1Ev)();
extern void ABISELECT(_ZThn7744_N8S19657C8D0Ev,_ZThn5084_N8S19657C8D0Ev)();
extern void _ZN12S19657C10_nt2v6Ev();
extern void _ZN12S19657C10_nt2v6Ev();
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
static  VTBL_ENTRY vtc_S19657C8[] = {
  ABISELECT(21360,14004),
  ABISELECT(20912,13688),
  ABISELECT(14672,9612),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v11Ev,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19657C8D1Ev,_ZThn200_N8S19657C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19657C8D0Ev,_ZThn200_N8S19657C8D0Ev),
  ABISELECT(-7296,-4768),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
  ABISELECT(-7744,-5084),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19657C8D1Ev,_ZThn5084_N8S19657C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19657C8D0Ev,_ZThn5084_N8S19657C8D0Ev),
  ABISELECT(-7824,-5128),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
  0,
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-20912,-13688),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
  0,
  0,
  ABISELECT(-21360,-14004),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
};
extern VTBL_ENTRY _ZTV8S19657C8[];
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C9D1Ev();
extern void _ZN8S19657C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19657C9__8S19657C8[] = {
  ABISELECT(20912,13688),
  ABISELECT(14672,9612),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D0Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__8S19657C9__8S19657C8[] = {
  0,
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__8S19657C9__8S19657C8[] = {
  0,
  0,
  ABISELECT(-20912,-13688),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19657C8[] = {
  {&(_ZTV8S19657C8[5]),  5,43},
  {&(_tg__ZTV8S19657C9__8S19657C8[4]),  4,9},
  {&(_tg__ZTV12S19657C10_nt__8S19657C9__8S19657C8[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__8S19657C9__8S19657C8[4]),  4,6},
  {&(_ZTV8S19657C8[30]),  30,43},
  {&(_ZTV8S19657C8[35]),  35,43},
  {&(_ZTV8S19657C8[41]),  41,43},
};
extern VTBL_ENTRY _ZTI8S19657C8[];
extern  VTBL_ENTRY _ZTV8S19657C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C8[];
Class_Descriptor cd_S19657C8 = {  "S19657C8", // class name
  bases_S19657C8, 9,
  &(vtc_S19657C8[0]), // expected_vtbl_contents
  &(vtt_S19657C8[0]), // expected_vtt_contents
  ABISELECT(21664,14204), // object size
  NSPAIRA(_ZTI8S19657C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19657C8),43, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19657C8),7, //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  S19657C13  : virtual S19657C10_nt , virtual S19657C6_nt , virtual S19657C9 , S19657C11_nt {
  void *s19657c13f0;
  ::S19657C11_nt s19657c13f1;
  ::S19657C4_nt s19657c13f2;
  short s19657c13f3;
  ~S19657C13(); // tgen
  S19657C13(); // tgen
};
//SIG(-1 S19657C13) C1{ VBC2{ v1 FC3{ v4 v5 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp}[8] FC3[2] Fp Fi FC4{ vd m Fp FL Fp[7]} FC3[5] Fp[5] FC3[5]} VBC5{ v2 v3 Fc FL[10] FD FC3 Fp Fs Fp Fi} VBC6{ BC3 VBC2 BC4 VBC5 v6 FL:2 FD[7] Fp FC2 Fp Fi Fp[2] FC4 FC3 FD[8]} BC4 Fp FC4 FC3 Fs}


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

static void Test_S19657C13()
{
  extern Class_Descriptor cd_S19657C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(906,2365)];
    init_test(&cd_S19657C13, buf);
    S19657C13 *dp, &lv = *(dp=new (buf) S19657C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(14480,9456), "sizeof(S19657C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19657C13)");
    check_base_class_offset(lv, (S19657C10_nt*), ABISELECT(496,296), "S19657C13");
    check_base_class_offset(lv, (S19657C10_nt*)(S19657C9*), ABISELECT(496,296), "S19657C13");
    check_base_class_offset(lv, (S19657C6_nt*), ABISELECT(6736,4372), "S19657C13");
    check_base_class_offset(lv, (S19657C6_nt*)(S19657C9*), ABISELECT(6736,4372), "S19657C13");
    check_base_class_offset(lv, (S19657C4_nt*)(S19657C9*), ABISELECT(7184,4688), "S19657C13");
    check_base_class_offset(lv, (S19657C11_nt*)(S19657C9*), ABISELECT(7480,4888), "S19657C13");
    check_base_class_offset(lv, (S19657C9*), ABISELECT(7184,4688), "S19657C13");
    /*is_ambiguous_... S19657C13::S19657C11_nt */ AMB_check_base_class_offset(lv, (S19657C11_nt*), 0, "S19657C13");
    check_field_offset(lv, s19657c13f0, ABISELECT(80,44), "S19657C13.s19657c13f0");
    check_field_offset(lv, s19657c13f1, ABISELECT(88,48), "S19657C13.s19657c13f1");
    check_field_offset(lv, s19657c13f2, ABISELECT(176,92), "S19657C13.s19657c13f2");
    check_field_offset(lv, s19657c13f3, ABISELECT(480,292), "S19657C13.s19657c13f3");
    test_class_info(&lv, &cd_S19657C13);
    dp->~S19657C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19657C13(Test_S19657C13, "S19657C13", ABISELECT(14480,9456));

#else // __cplusplus

extern void _ZN9S19657C13C1Ev();
extern void _ZN9S19657C13D1Ev();
Name_Map name_map_S19657C13[] = {
  NSPAIR(_ZN9S19657C13C1Ev),
  NSPAIR(_ZN9S19657C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19657C10_nt;
extern VTBL_ENTRY _ZTI12S19657C10_nt[];
extern  VTBL_ENTRY _ZTV12S19657C10_nt[];
extern Class_Descriptor cd_S19657C6_nt;
extern VTBL_ENTRY _ZTI11S19657C6_nt[];
extern  VTBL_ENTRY _ZTV11S19657C6_nt[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C9;
extern VTBL_ENTRY _ZTI8S19657C9[];
extern  VTBL_ENTRY _ZTV8S19657C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C9[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
static Base_Class bases_S19657C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19657C10_nt,    ABISELECT(496,296), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19657C6_nt,    ABISELECT(6736,4372), //bcp->offset
    11, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19657C4_nt,    ABISELECT(7184,4688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19657C11_nt,    ABISELECT(7480,4888), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19657C9,    ABISELECT(7184,4688), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19657C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI9S19657C13[];
extern void _ZN9S19657C13D1Ev();
extern void _ZN9S19657C13D0Ev();
extern void _ZN12S19657C10_nt2v6Ev();
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19657C13D1Ev,_ZTv0_n32_N9S19657C13D1Ev)();
extern void ABISELECT(_ZThn7184_N9S19657C13D1Ev,_ZThn4688_N9S19657C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19657C13D0Ev,_ZTv0_n32_N9S19657C13D0Ev)();
extern void ABISELECT(_ZThn7184_N9S19657C13D0Ev,_ZThn4688_N9S19657C13D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn296_n64_N9S19657C13D1Ev,_ZTvn200_n32_N9S19657C13D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19657C13D0Ev,_ZTvn200_n32_N9S19657C13D0Ev)();
static  VTBL_ENTRY vtc_S19657C13[] = {
  ABISELECT(7184,4688),
  ABISELECT(6736,4372),
  ABISELECT(496,296),
  0,
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN9S19657C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19657C13D0Ev,
  0,
  ABISELECT(-496,-296),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-6736,-4372),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
  ABISELECT(-7184,-4688),
  0,
  0,
  0,
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  ABISELECT(-7184,-4688),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C13D1Ev,_ZTv0_n32_N9S19657C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C13D0Ev,_ZTv0_n32_N9S19657C13D0Ev),
  ABISELECT(-7480,-4888),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C13D1Ev,_ZTvn200_n32_N9S19657C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C13D0Ev,_ZTvn200_n32_N9S19657C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19657C13[];
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C9D1Ev();
extern void _ZN8S19657C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19657C9__9S19657C13[] = {
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D0Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__8S19657C9__9S19657C13[] = {
  0,
  ABISELECT(6688,4392),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__8S19657C9__9S19657C13[] = {
  0,
  0,
  ABISELECT(448,316),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19657C13[] = {
  {&(_ZTV9S19657C13[5]),  5,34},
  {&(_ZTV9S19657C13[10]),  10,34},
  {&(_ZTV9S19657C13[15]),  15,34},
  {&(_ZTV9S19657C13[25]),  25,34},
  {&(_ZTV9S19657C13[32]),  32,34},
  {&(_tg__ZTV8S19657C9__9S19657C13[4]),  4,9},
  {&(_tg__ZTV12S19657C10_nt__8S19657C9__9S19657C13[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__8S19657C9__9S19657C13[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19657C13[];
extern  VTBL_ENTRY _ZTV9S19657C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19657C13[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C13D0Ev,_ZTv0_n32_N9S19657C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7184_N9S19657C13D0Ev,_ZThn4688_N9S19657C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C13D1Ev,_ZTv0_n32_N9S19657C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn7184_N9S19657C13D1Ev,_ZThn4688_N9S19657C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19657C13 = {  "S19657C13", // class name
  bases_S19657C13, 6,
  &(vtc_S19657C13[0]), // expected_vtbl_contents
  &(vtt_S19657C13[0]), // expected_vtt_contents
  ABISELECT(14480,9456), // object size
  NSPAIRA(_ZTI9S19657C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19657C13),34, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19657C13),8, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19657C12  : S19657C13 , S19657C4_nt , S19657C3_nt {
  ::S19657C8 s19657c12f0;
  ~S19657C12(); // tgen
  S19657C12(); // tgen
};
//SIG(-1 S19657C12) C1{ BC2{ VBC3{ v1 FC4{ v4 v5 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp}[8] FC4[2] Fp Fi FC5{ vd m Fp FL Fp[7]} FC4[5] Fp[5] FC4[5]} VBC6{ v2 v3 Fc FL[10] FD FC4 Fp Fs Fp Fi} VBC7{ BC4 VBC3 BC5 VBC6 v6 FL:2 FD[7] Fp FC3 Fp Fi Fp[2] FC5 FC4 FD[8]} BC5 Fp FC5 FC4 Fs} BC4 BC8{ vd v7 v8 Fi FC4 Fi[2] FU9{ m FL FD[10] FD Fs:0} FD Fi Fi FC6 FL Fi FC6} FC10{ BC7 BC6 BC5 BC3 VBC4 vd v9 v10 FC5 Fi Fp Fp FL FL Fi Fi Fp Fi FC6 Fi}}


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

static void Test_S19657C12()
{
  extern Class_Descriptor cd_S19657C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(2369,6216)];
    init_test(&cd_S19657C12, buf);
    S19657C12 *dp, &lv = *(dp=new (buf) S19657C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(37888,24860), "sizeof(S19657C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19657C12)");
    check_base_class_offset(lv, (S19657C10_nt*)(S19657C13*), ABISELECT(23904,15700), "S19657C12");
    check_base_class_offset(lv, (S19657C10_nt*)(S19657C9*), ABISELECT(23904,15700), "S19657C12");
    check_base_class_offset(lv, (S19657C6_nt*)(S19657C13*), ABISELECT(30144,19776), "S19657C12");
    check_base_class_offset(lv, (S19657C6_nt*)(S19657C9*), ABISELECT(30144,19776), "S19657C12");
    check_base_class_offset(lv, (S19657C4_nt*)(S19657C9*), ABISELECT(30592,20092), "S19657C12");
    check_base_class_offset(lv, (S19657C11_nt*)(S19657C9*), ABISELECT(30888,20292), "S19657C12");
    check_base_class_offset(lv, (S19657C9*)(S19657C13*), ABISELECT(30592,20092), "S19657C12");
    /*is_ambiguous_... S19657C13::S19657C11_nt */ AMB_check_base_class_offset(lv, (S19657C11_nt*)(S19657C13*), 0, "S19657C12");
    check_base_class_offset(lv, (S19657C13*), 0, "S19657C12");
    /*is_ambiguous_... S19657C12::S19657C4_nt */ AMB_check_base_class_offset(lv, (S19657C4_nt*), ABISELECT(496,296), "S19657C12");
    check_base_class_offset(lv, (S19657C3_nt*), ABISELECT(800,496), "S19657C12");
    check_field_offset(lv, s19657c12f0, ABISELECT(2240,1496), "S19657C12.s19657c12f0");
    test_class_info(&lv, &cd_S19657C12);
    dp->~S19657C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19657C12(Test_S19657C12, "S19657C12", ABISELECT(37888,24860));

#else // __cplusplus

extern void _ZN9S19657C12C1Ev();
extern void _ZN9S19657C12D1Ev();
Name_Map name_map_S19657C12[] = {
  NSPAIR(_ZN9S19657C12C1Ev),
  NSPAIR(_ZN9S19657C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19657C10_nt;
extern VTBL_ENTRY _ZTI12S19657C10_nt[];
extern  VTBL_ENTRY _ZTV12S19657C10_nt[];
extern Class_Descriptor cd_S19657C6_nt;
extern VTBL_ENTRY _ZTI11S19657C6_nt[];
extern  VTBL_ENTRY _ZTV11S19657C6_nt[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C9;
extern VTBL_ENTRY _ZTI8S19657C9[];
extern  VTBL_ENTRY _ZTV8S19657C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C9[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C13;
extern VTBL_ENTRY _ZTI9S19657C13[];
extern  VTBL_ENTRY _ZTV9S19657C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19657C13[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C3_nt;
extern VTBL_ENTRY _ZTI11S19657C3_nt[];
extern  VTBL_ENTRY _ZTV11S19657C3_nt[];
static Base_Class bases_S19657C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19657C10_nt,    ABISELECT(23904,15700), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19657C6_nt,    ABISELECT(30144,19776), //bcp->offset
    21, //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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19657C4_nt,    ABISELECT(30592,20092), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19657C11_nt,    ABISELECT(30888,20292), //bcp->offset
    40, //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
    4, //immediately_derived
  0, 0},
  {&cd_S19657C9,    ABISELECT(30592,20092), //bcp->offset
    27, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19657C11_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19657C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19657C4_nt,    ABISELECT(496,296), //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
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19657C3_nt,    ABISELECT(800,496), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19657C12[];
extern void _ZN9S19657C12D1Ev();
extern void _ZN9S19657C12D0Ev();
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void ABISELECT(_ZThn800_N9S19657C12D1Ev,_ZThn496_N9S19657C12D1Ev)();
extern void ABISELECT(_ZThn800_N9S19657C12D0Ev,_ZThn496_N9S19657C12D0Ev)();
extern void _ZN11S19657C3_nt2v2Ev();
extern void _ZN11S19657C3_nt2v3Ev();
extern void _ZN12S19657C10_nt2v6Ev();
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19657C12D1Ev,_ZTv0_n32_N9S19657C12D1Ev)();
extern void ABISELECT(_ZThn30592_N9S19657C12D1Ev,_ZThn20092_N9S19657C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19657C12D0Ev,_ZTv0_n32_N9S19657C12D0Ev)();
extern void ABISELECT(_ZThn30592_N9S19657C12D0Ev,_ZThn20092_N9S19657C12D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn296_n64_N9S19657C12D1Ev,_ZTvn200_n32_N9S19657C12D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19657C12D0Ev,_ZTvn200_n32_N9S19657C12D0Ev)();
static  VTBL_ENTRY vtc_S19657C12[] = {
  ABISELECT(30592,20092),
  ABISELECT(30144,19776),
  ABISELECT(23904,15700),
  0,
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN9S19657C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19657C12D0Ev,
  ABISELECT(-496,-296),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  ABISELECT(-800,-496),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N9S19657C12D1Ev,_ZThn496_N9S19657C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn800_N9S19657C12D0Ev,_ZThn496_N9S19657C12D0Ev),
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v3Ev,
  0,
  ABISELECT(-23904,-15700),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-30144,-19776),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
  ABISELECT(-30592,-20092),
  0,
  0,
  0,
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  ABISELECT(-30592,-20092),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C12D1Ev,_ZTv0_n32_N9S19657C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C12D0Ev,_ZTv0_n32_N9S19657C12D0Ev),
  ABISELECT(-30888,-20292),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C12D1Ev,_ZTvn200_n32_N9S19657C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C12D0Ev,_ZTvn200_n32_N9S19657C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19657C12[];
extern void _ZN9S19657C13D1Ev();
extern void _ZN9S19657C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19657C13__9S19657C12[] = {
  ABISELECT(30592,20092),
  ABISELECT(30144,19776),
  ABISELECT(23904,15700),
  0,
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN9S19657C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19657C13D0Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__9S19657C13__9S19657C12[] = {
  0,
  ABISELECT(-23904,-15700),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__9S19657C13__9S19657C12[] = {
  0,
  0,
  ABISELECT(-30144,-19776),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19657C13D1Ev,_ZTv0_n32_N9S19657C13D1Ev)();
extern void ABISELECT(_ZThn30592_N9S19657C13D1Ev,_ZThn20092_N9S19657C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19657C13D0Ev,_ZTv0_n32_N9S19657C13D0Ev)();
extern void ABISELECT(_ZThn30592_N9S19657C13D0Ev,_ZThn20092_N9S19657C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19657C9__9S19657C13__9S19657C12[] = {
  ABISELECT(-30592,-20092),
  0,
  0,
  0,
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  ABISELECT(-30592,-20092),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C13D1Ev,_ZTv0_n32_N9S19657C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C13D0Ev,_ZTv0_n32_N9S19657C13D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19657C13D1Ev,_ZTvn200_n32_N9S19657C13D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19657C13D0Ev,_ZTvn200_n32_N9S19657C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19657C11_nt8S19657C9__9S19657C13__9S19657C12[] = {
  ABISELECT(-30888,-20292),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C13D1Ev,_ZTvn200_n32_N9S19657C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C13D0Ev,_ZTvn200_n32_N9S19657C13D0Ev),
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C9D1Ev();
extern void _ZN8S19657C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19657C9__9S19657C12[] = {
  ABISELECT(-448,-316),
  ABISELECT(-6688,-4392),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D0Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__8S19657C9__9S19657C12[] = {
  0,
  ABISELECT(6688,4392),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__8S19657C9__9S19657C12[] = {
  0,
  0,
  ABISELECT(448,316),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19657C12[] = {
  {&(_ZTV9S19657C12[5]),  5,44},
  {&(_tg__ZTV9S19657C13__9S19657C12[5]),  5,7},
  {&(_tg__ZTV12S19657C10_nt__9S19657C13__9S19657C12[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__9S19657C13__9S19657C12[4]),  4,6},
  {&(_tg__ZTV8S19657C9__9S19657C13__9S19657C12[8]),  8,13},
  {&(_tg__ZTV12S19657C11_nt8S19657C9__9S19657C13__9S19657C12[2]),  2,4},
  {&(_ZTV9S19657C12[20]),  20,44},
  {&(_ZTV9S19657C12[25]),  25,44},
  {&(_ZTV9S19657C12[35]),  35,44},
  {&(_ZTV9S19657C12[42]),  42,44},
  {&(_tg__ZTV8S19657C9__9S19657C12[4]),  4,9},
  {&(_tg__ZTV12S19657C10_nt__8S19657C9__9S19657C12[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__8S19657C9__9S19657C12[4]),  4,6},
};
extern VTBL_ENTRY _ZTI9S19657C12[];
extern  VTBL_ENTRY _ZTV9S19657C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19657C12[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C13D0Ev,_ZTv0_n32_N9S19657C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30592_N9S19657C13D0Ev,_ZThn20092_N9S19657C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C13D1Ev,_ZTv0_n32_N9S19657C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30592_N9S19657C13D1Ev,_ZThn20092_N9S19657C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C12D0Ev,_ZTv0_n32_N9S19657C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30592_N9S19657C12D0Ev,_ZThn20092_N9S19657C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C12D1Ev,_ZTv0_n32_N9S19657C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn30592_N9S19657C12D1Ev,_ZThn20092_N9S19657C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19657C12 = {  "S19657C12", // class name
  bases_S19657C12, 9,
  &(vtc_S19657C12[0]), // expected_vtbl_contents
  &(vtt_S19657C12[0]), // expected_vtt_contents
  ABISELECT(37888,24860), // object size
  NSPAIRA(_ZTI9S19657C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19657C12),44, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19657C12),13, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19657C7  : virtual S19657C3_nt , S19657C8 , S19657C12 {
  void *s19657c7f0;
  ::S19657C8 s19657c7f1;
  void *s19657c7f2[7];
  virtual  ~S19657C7(); // _ZN8S19657C7D2Ev
  S19657C7(); // tgen
};
//SIG(-1 S19657C7) C1{ VBC2{ vd v1 v2 Fi FC3{ v3 v4 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} Fi[2] FU4{ m FL FD[10] FD Fs:0} FD Fi Fi FC5{ v6 v7 Fc FL[10] FD FC3 Fp Fs Fp Fi} FL Fi FC5} BC6{ BC7{ BC3 VBC8{ v5 FC3[8] FC3[2] Fp Fi FC9{ vd m Fp FL Fp[7]} FC3[5] Fp[5] FC3[5]} BC9 VBC5 v8 FL:2 FD[7] Fp FC8 Fp Fi Fp Fp FC9 FC3 FD[8]} BC5 BC9 BC8 VBC3 vd v9 v10 FC9 Fi Fp Fp FL FL Fi Fi Fp Fi FC5 Fi} BC10{ BC11{ VBC8 VBC5 VBC7 BC9 Fp FC9 FC3 Fs} BC3 BC2 FC6} vd Fp FC6 Fp[7]}


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

static void Test_S19657C7()
{
  extern Class_Descriptor cd_S19657C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4754,12478)];
    init_test(&cd_S19657C7, buf);
    S19657C7 *dp, &lv = *(dp=new (buf) S19657C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(76048,49908), "sizeof(S19657C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19657C7)");
    /*is_ambiguous_... S19657C7::S19657C3_nt */ AMB_check_base_class_offset(lv, (S19657C3_nt*), ABISELECT(60320,39548), "S19657C7");
    check_base_class_offset(lv, (S19657C4_nt*)(S19657C9*)(S19657C8*), 0, "S19657C7");
    check_base_class_offset(lv, (S19657C10_nt*)(S19657C9*)(S19657C8*), ABISELECT(61760,40548), "S19657C7");
    check_base_class_offset(lv, (S19657C10_nt*)(S19657C13*)(S19657C12*), ABISELECT(61760,40548), "S19657C7");
    /*is_ambiguous_... S19657C7::S19657C9 */ AMB_check_base_class_offset(lv, (S19657C10_nt*)(S19657C9*), ABISELECT(61760,40548), "S19657C7");
    check_base_class_offset(lv, (S19657C11_nt*)(S19657C9*)(S19657C8*), ABISELECT(296,200), "S19657C7");
    check_base_class_offset(lv, (S19657C6_nt*)(S19657C9*)(S19657C8*), ABISELECT(68000,44624), "S19657C7");
    check_base_class_offset(lv, (S19657C6_nt*)(S19657C13*)(S19657C12*), ABISELECT(68000,44624), "S19657C7");
    /*is_ambiguous_... S19657C7::S19657C9 */ AMB_check_base_class_offset(lv, (S19657C6_nt*)(S19657C9*), ABISELECT(68000,44624), "S19657C7");
    check_base_class_offset(lv, (S19657C9*)(S19657C8*), 0, "S19657C7");
    /*is_ambiguous_... S19657C8::S19657C6_nt */ AMB_check_base_class_offset(lv, (S19657C6_nt*)(S19657C8*), ABISELECT(7296,4768), "S19657C7");
    /*is_ambiguous_... S19657C8::S19657C11_nt */ AMB_check_base_class_offset(lv, (S19657C11_nt*)(S19657C8*), ABISELECT(7744,5084), "S19657C7");
    /*is_ambiguous_... S19657C8::S19657C10_nt */ AMB_check_base_class_offset(lv, (S19657C10_nt*)(S19657C8*), ABISELECT(7824,5128), "S19657C7");
    /*is_ambiguous_... S19657C8::S19657C4_nt */ AMB_check_base_class_offset(lv, (S19657C4_nt*)(S19657C8*), ABISELECT(68448,44940), "S19657C7");
    check_base_class_offset(lv, (S19657C8*), 0, "S19657C7");
    /*is_ambiguous_... S19657C7::S19657C9 */ AMB_check_base_class_offset(lv, (S19657C4_nt*)(S19657C9*), ABISELECT(68752,45140), "S19657C7");
    /*is_ambiguous_... S19657C7::S19657C9 */ AMB_check_base_class_offset(lv, (S19657C11_nt*)(S19657C9*), ABISELECT(69048,45340), "S19657C7");
    check_base_class_offset(lv, (S19657C9*)(S19657C13*)(S19657C12*), ABISELECT(68752,45140), "S19657C7");
    /*is_ambiguous_... S19657C13::S19657C11_nt */ AMB_check_base_class_offset(lv, (S19657C11_nt*)(S19657C13*)(S19657C12*), ABISELECT(14672,9612), "S19657C7");
    check_base_class_offset(lv, (S19657C13*)(S19657C12*), ABISELECT(14672,9612), "S19657C7");
    /*is_ambiguous_... S19657C12::S19657C4_nt */ AMB_check_base_class_offset(lv, (S19657C4_nt*)(S19657C12*), ABISELECT(15168,9908), "S19657C7");
    check_base_class_offset(lv, (S19657C3_nt*)(S19657C12*), ABISELECT(15472,10108), "S19657C7");
    check_base_class_offset(lv, (S19657C12*), ABISELECT(14672,9612), "S19657C7");
    check_field_offset(lv, s19657c7f0, ABISELECT(38576,25312), "S19657C7.s19657c7f0");
    check_field_offset(lv, s19657c7f1, ABISELECT(38592,25316), "S19657C7.s19657c7f1");
    check_field_offset(lv, s19657c7f2, ABISELECT(60256,39520), "S19657C7.s19657c7f2");
    test_class_info(&lv, &cd_S19657C7);
    dp->~S19657C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19657C7(Test_S19657C7, "S19657C7", ABISELECT(76048,49908));

#else // __cplusplus

extern void _ZN8S19657C7C1Ev();
extern void _ZN8S19657C7D2Ev();
Name_Map name_map_S19657C7[] = {
  NSPAIR(_ZN8S19657C7C1Ev),
  NSPAIR(_ZN8S19657C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19657C3_nt;
extern VTBL_ENTRY _ZTI11S19657C3_nt[];
extern  VTBL_ENTRY _ZTV11S19657C3_nt[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C10_nt;
extern VTBL_ENTRY _ZTI12S19657C10_nt[];
extern  VTBL_ENTRY _ZTV12S19657C10_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C6_nt;
extern VTBL_ENTRY _ZTI11S19657C6_nt[];
extern  VTBL_ENTRY _ZTV11S19657C6_nt[];
extern Class_Descriptor cd_S19657C9;
extern VTBL_ENTRY _ZTI8S19657C9[];
extern  VTBL_ENTRY _ZTV8S19657C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C9[];
extern Class_Descriptor cd_S19657C6_nt;
extern VTBL_ENTRY _ZTI11S19657C6_nt[];
extern  VTBL_ENTRY _ZTV11S19657C6_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C10_nt;
extern VTBL_ENTRY _ZTI12S19657C10_nt[];
extern  VTBL_ENTRY _ZTV12S19657C10_nt[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C8;
extern VTBL_ENTRY _ZTI8S19657C8[];
extern  VTBL_ENTRY _ZTV8S19657C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C8[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C9;
extern VTBL_ENTRY _ZTI8S19657C9[];
extern  VTBL_ENTRY _ZTV8S19657C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C9[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C13;
extern VTBL_ENTRY _ZTI9S19657C13[];
extern  VTBL_ENTRY _ZTV9S19657C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19657C13[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C3_nt;
extern VTBL_ENTRY _ZTI11S19657C3_nt[];
extern  VTBL_ENTRY _ZTV11S19657C3_nt[];
extern Class_Descriptor cd_S19657C12;
extern VTBL_ENTRY _ZTI9S19657C12[];
extern  VTBL_ENTRY _ZTV9S19657C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19657C12[];
static Base_Class bases_S19657C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19657C3_nt,    ABISELECT(60320,39548), //bcp->offset
    46, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19657C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19657C10_nt,    ABISELECT(61760,40548), //bcp->offset
    55, //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_S19657C11_nt,    ABISELECT(296,200), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19657C6_nt,    ABISELECT(68000,44624), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19657C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19657C6_nt,    ABISELECT(7296,4768), //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
    11, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19657C11_nt,    ABISELECT(7744,5084), //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
    10, //immediately_derived
  0, 0},
  {&cd_S19657C10_nt,    ABISELECT(7824,5128), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19657C4_nt,    ABISELECT(68448,44940), //bcp->offset
    65, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19657C8,    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
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19657C4_nt,    ABISELECT(68752,45140), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19657C11_nt,    ABISELECT(69048,45340), //bcp->offset
    84, //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
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19657C9,    ABISELECT(68752,45140), //bcp->offset
    71, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S19657C11_nt,    ABISELECT(14672,9612), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S19657C13,    ABISELECT(14672,9612), //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
    16, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19657C4_nt,    ABISELECT(15168,9908), //bcp->offset
    36, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19657C3_nt,    ABISELECT(15472,10108), //bcp->offset
    40, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19657C12,    ABISELECT(14672,9612), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19657C7[];
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C7D1Ev();
extern void _ZN8S19657C7D0Ev();
extern void _ZN8S19657C83v10Ev();
extern void _ZN8S19657C83v11Ev();
extern void ABISELECT(_ZThn296_N8S19657C7D1Ev,_ZThn200_N8S19657C7D1Ev)();
extern void ABISELECT(_ZThn296_N8S19657C7D0Ev,_ZThn200_N8S19657C7D0Ev)();
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
extern void ABISELECT(_ZThn7744_N8S19657C7D1Ev,_ZThn5084_N8S19657C7D1Ev)();
extern void ABISELECT(_ZThn7744_N8S19657C7D0Ev,_ZThn5084_N8S19657C7D0Ev)();
extern void _ZN12S19657C10_nt2v6Ev();
extern void ABISELECT(_ZThn14672_N8S19657C7D1Ev,_ZThn9612_N8S19657C7D1Ev)();
extern void ABISELECT(_ZThn14672_N8S19657C7D0Ev,_ZThn9612_N8S19657C7D0Ev)();
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void ABISELECT(_ZThn15472_N8S19657C7D1Ev,_ZThn10108_N8S19657C7D1Ev)();
extern void ABISELECT(_ZThn15472_N8S19657C7D0Ev,_ZThn10108_N8S19657C7D0Ev)();
extern void _ZN11S19657C3_nt2v2Ev();
extern void _ZN11S19657C3_nt2v3Ev();
extern void ABISELECT(_ZTv0_n24_N8S19657C7D1Ev,_ZTv0_n12_N8S19657C7D1Ev)();
extern void ABISELECT(_ZThn60320_N8S19657C7D1Ev,_ZThn39548_N8S19657C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19657C7D0Ev,_ZTv0_n12_N8S19657C7D0Ev)();
extern void ABISELECT(_ZThn60320_N8S19657C7D0Ev,_ZThn39548_N8S19657C7D0Ev)() __attribute__((weak));
extern void _ZN11S19657C3_nt2v2Ev();
extern void _ZN11S19657C3_nt2v3Ev();
extern void _ZN12S19657C10_nt2v6Ev();
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S19657C7D1Ev,_ZTv0_n32_N8S19657C7D1Ev)();
extern void ABISELECT(_ZThn68752_N8S19657C7D1Ev,_ZThn45140_N8S19657C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19657C7D0Ev,_ZTv0_n32_N8S19657C7D0Ev)();
extern void ABISELECT(_ZThn68752_N8S19657C7D0Ev,_ZThn45140_N8S19657C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn296_n64_N8S19657C7D1Ev,_ZTvn200_n32_N8S19657C7D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N8S19657C7D0Ev,_ZTvn200_n32_N8S19657C7D0Ev)();
static  VTBL_ENTRY vtc_S19657C7[] = {
  ABISELECT(68752,45140),
  ABISELECT(60320,39548),
  ABISELECT(68448,44940),
  ABISELECT(68000,44624),
  ABISELECT(61760,40548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v11Ev,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19657C7D1Ev,_ZThn200_N8S19657C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19657C7D0Ev,_ZThn200_N8S19657C7D0Ev),
  ABISELECT(-7296,-4768),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
  ABISELECT(-7744,-5084),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19657C7D1Ev,_ZThn5084_N8S19657C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19657C7D0Ev,_ZThn5084_N8S19657C7D0Ev),
  ABISELECT(-7824,-5128),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
  ABISELECT(54080,35528),
  ABISELECT(53328,35012),
  ABISELECT(47088,30936),
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19657C7D1Ev,_ZThn9612_N8S19657C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19657C7D0Ev,_ZThn9612_N8S19657C7D0Ev),
  ABISELECT(-15168,-9908),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  ABISELECT(-15472,-10108),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn15472_N8S19657C7D1Ev,_ZThn10108_N8S19657C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn15472_N8S19657C7D0Ev,_ZThn10108_N8S19657C7D0Ev),
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v3Ev,
  0,
  0,
  ABISELECT(-60320,-39548),
  ABISELECT(-60320,-39548),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19657C7D1Ev,_ZTv0_n12_N8S19657C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19657C7D0Ev,_ZTv0_n12_N8S19657C7D0Ev),
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v3Ev,
  0,
  ABISELECT(-61760,-40548),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-68000,-44624),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
  0,
  0,
  ABISELECT(-68448,-44940),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  ABISELECT(-68752,-45140),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-68752,-45140),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19657C7D1Ev,_ZTv0_n32_N8S19657C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19657C7D0Ev,_ZTv0_n32_N8S19657C7D0Ev),
  ABISELECT(-69048,-45340),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19657C7D1Ev,_ZTvn200_n32_N8S19657C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19657C7D0Ev,_ZTvn200_n32_N8S19657C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19657C7[];
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C8D1Ev();
extern void _ZN8S19657C8D0Ev();
extern void _ZN8S19657C83v10Ev();
extern void _ZN8S19657C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19657C8__8S19657C7[] = {
  ABISELECT(68448,44940),
  ABISELECT(68000,44624),
  ABISELECT(61760,40548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v11Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C9D1Ev();
extern void _ZN8S19657C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19657C98S19657C8__8S19657C7[] = {
  ABISELECT(68000,44624),
  ABISELECT(61760,40548),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D0Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__8S19657C98S19657C8__8S19657C7[] = {
  0,
  ABISELECT(-61760,-40548),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__8S19657C98S19657C8__8S19657C7[] = {
  0,
  0,
  ABISELECT(-68000,-44624),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__8S19657C8__8S19657C7[] = {
  0,
  ABISELECT(-61760,-40548),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__8S19657C8__8S19657C7[] = {
  0,
  0,
  ABISELECT(-68000,-44624),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C4_nt__A1__8S19657C8__8S19657C7[] = {
  0,
  0,
  ABISELECT(-68448,-44940),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
};
extern void _ZN9S19657C12D1Ev();
extern void _ZN9S19657C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19657C12__8S19657C7[] = {
  ABISELECT(54080,35528),
  ABISELECT(53328,35012),
  ABISELECT(47088,30936),
  0,
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN9S19657C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19657C12D0Ev,
};
extern void _ZN9S19657C13D1Ev();
extern void _ZN9S19657C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19657C139S19657C12__8S19657C7[] = {
  ABISELECT(54080,35528),
  ABISELECT(53328,35012),
  ABISELECT(47088,30936),
  0,
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN9S19657C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19657C13D0Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__9S19657C139S19657C12__8S19657C7[] = {
  0,
  ABISELECT(-47088,-30936),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__9S19657C139S19657C12__8S19657C7[] = {
  0,
  0,
  ABISELECT(-53328,-35012),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19657C13D1Ev,_ZTv0_n32_N9S19657C13D1Ev)();
extern void ABISELECT(_ZThn54080_N9S19657C13D1Ev,_ZThn35528_N9S19657C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19657C13D0Ev,_ZTv0_n32_N9S19657C13D0Ev)();
extern void ABISELECT(_ZThn54080_N9S19657C13D0Ev,_ZThn35528_N9S19657C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19657C9__9S19657C139S19657C12__8S19657C7[] = {
  ABISELECT(-54080,-35528),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-54080,-35528),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C13D1Ev,_ZTv0_n32_N9S19657C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C13D0Ev,_ZTv0_n32_N9S19657C13D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19657C13D1Ev,_ZTvn200_n32_N9S19657C13D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19657C13D0Ev,_ZTvn200_n32_N9S19657C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19657C11_nt8S19657C9__9S19657C139S19657C12__8S19657C7[] = {
  ABISELECT(-54376,-35728),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C13D1Ev,_ZTvn200_n32_N9S19657C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C13D0Ev,_ZTvn200_n32_N9S19657C13D0Ev),
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__9S19657C12__8S19657C7[] = {
  0,
  ABISELECT(-47088,-30936),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__9S19657C12__8S19657C7[] = {
  0,
  0,
  ABISELECT(-53328,-35012),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19657C12D1Ev,_ZTv0_n32_N9S19657C12D1Ev)();
extern void ABISELECT(_ZThn54080_N9S19657C12D1Ev,_ZThn35528_N9S19657C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19657C12D0Ev,_ZTv0_n32_N9S19657C12D0Ev)();
extern void ABISELECT(_ZThn54080_N9S19657C12D0Ev,_ZThn35528_N9S19657C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19657C9__9S19657C12__8S19657C7[] = {
  ABISELECT(-54080,-35528),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-54080,-35528),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C12D1Ev,_ZTv0_n32_N9S19657C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C12D0Ev,_ZTv0_n32_N9S19657C12D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19657C12D1Ev,_ZTvn200_n32_N9S19657C12D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19657C12D0Ev,_ZTvn200_n32_N9S19657C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19657C11_nt8S19657C9__9S19657C12__8S19657C7[] = {
  ABISELECT(-54376,-35728),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C12D1Ev,_ZTvn200_n32_N9S19657C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C12D0Ev,_ZTvn200_n32_N9S19657C12D0Ev),
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C9D1Ev();
extern void _ZN8S19657C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19657C9__A1__8S19657C7[] = {
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D0Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__8S19657C9__A1__8S19657C7[] = {
  0,
  ABISELECT(6992,4592),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__8S19657C9__A1__8S19657C7[] = {
  0,
  0,
  ABISELECT(752,516),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19657C7[] = {
  {&(_ZTV8S19657C7[7]),  7,88},
  {&(_tg__ZTV8S19657C8__8S19657C7[5]),  5,12},
  {&(_tg__ZTV8S19657C98S19657C8__8S19657C7[4]),  4,9},
  {&(_tg__ZTV12S19657C10_nt__8S19657C98S19657C8__8S19657C7[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__8S19657C98S19657C8__8S19657C7[4]),  4,6},
  {&(_tg__ZTV12S19657C10_nt__8S19657C8__8S19657C7[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__8S19657C8__8S19657C7[4]),  4,6},
  {&(_tg__ZTV11S19657C4_nt__A1__8S19657C8__8S19657C7[4]),  4,6},
  {&(_tg__ZTV9S19657C12__8S19657C7[5]),  5,7},
  {&(_tg__ZTV9S19657C139S19657C12__8S19657C7[5]),  5,7},
  {&(_tg__ZTV12S19657C10_nt__9S19657C139S19657C12__8S19657C7[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__9S19657C139S19657C12__8S19657C7[4]),  4,6},
  {&(_tg__ZTV8S19657C9__9S19657C139S19657C12__8S19657C7[8]),  8,13},
  {&(_tg__ZTV12S19657C11_nt8S19657C9__9S19657C139S19657C12__8S19657C7[2]),  2,4},
  {&(_tg__ZTV12S19657C10_nt__9S19657C12__8S19657C7[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__9S19657C12__8S19657C7[4]),  4,6},
  {&(_tg__ZTV8S19657C9__9S19657C12__8S19657C7[8]),  8,13},
  {&(_tg__ZTV12S19657C11_nt8S19657C9__9S19657C12__8S19657C7[2]),  2,4},
  {&(_ZTV8S19657C7[51]),  51,88},
  {&(_ZTV8S19657C7[58]),  58,88},
  {&(_ZTV8S19657C7[63]),  63,88},
  {&(_ZTV8S19657C7[69]),  69,88},
  {&(_ZTV8S19657C7[34]),  34,88},
  {&(_ZTV8S19657C7[79]),  79,88},
  {&(_ZTV8S19657C7[86]),  86,88},
  {&(_tg__ZTV8S19657C9__A1__8S19657C7[4]),  4,9},
  {&(_tg__ZTV12S19657C10_nt__8S19657C9__A1__8S19657C7[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__8S19657C9__A1__8S19657C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19657C7[];
extern  VTBL_ENTRY _ZTV8S19657C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C7[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C12D0Ev,_ZTv0_n32_N9S19657C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54080_N9S19657C12D0Ev,_ZThn35528_N9S19657C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C12D1Ev,_ZTv0_n32_N9S19657C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54080_N9S19657C12D1Ev,_ZThn35528_N9S19657C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C13D0Ev,_ZTv0_n32_N9S19657C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54080_N9S19657C13D0Ev,_ZThn35528_N9S19657C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C13D1Ev,_ZTv0_n32_N9S19657C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn54080_N9S19657C13D1Ev,_ZThn35528_N9S19657C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19657C7D0Ev,_ZTv0_n32_N8S19657C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68752_N8S19657C7D0Ev,_ZThn45140_N8S19657C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19657C7D1Ev,_ZTv0_n32_N8S19657C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68752_N8S19657C7D1Ev,_ZThn45140_N8S19657C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19657C7D0Ev,_ZTv0_n12_N8S19657C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60320_N8S19657C7D0Ev,_ZThn39548_N8S19657C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19657C7D1Ev,_ZTv0_n12_N8S19657C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn60320_N8S19657C7D1Ev,_ZThn39548_N8S19657C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19657C7 = {  "S19657C7", // class name
  bases_S19657C7, 19,
  &(vtc_S19657C7[0]), // expected_vtbl_contents
  &(vtt_S19657C7[0]), // expected_vtt_contents
  ABISELECT(76048,49908), // object size
  NSPAIRA(_ZTI8S19657C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19657C7),88, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19657C7),28, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19657C1  : virtual S19657C2_nt , virtual S19657C3_nt , S19657C7 , S19657C8 {
  short s19657c1f0:5;
  void *s19657c1f1;
  long s19657c1f2;
  long s19657c1f3;
  char s19657c1f4[2];
  int s19657c1f5;
  ::S19657C2_nt s19657c1f6[10];
  int s19657c1f7;
  int s19657c1f8:5;
  virtual  ~S19657C1(); // _ZN8S19657C1D2Ev
  virtual void  v1(); // _ZN8S19657C12v1Ev
  S19657C1(); // tgen
};
//SIG(1 S19657C1) C1{ VBC2{ m Fc} VBC3{ vd v2 v3 Fi FC4{ v4 v5 FL Fp Fc:6 FD Fc[7] FL Fc[9] FD[8] Fp Fs Fp[7] Fi Fp} Fi[2] FU5{ m FL FD[10] FD Fs:0} FD Fi Fi FC6{ v7 v8 Fc FL[10] FD FC4 Fp Fs Fp Fi} FL Fi FC6} BC7{ VBC3 BC8{ BC9{ BC4 VBC10{ v6 FC4[8] FC4[2] Fp Fi FC11{ vd m Fp FL Fp[7]} FC4[5] Fp[5] FC4[5]} BC11 VBC6 v9 FL:2 FD[7] Fp FC10 Fp Fi Fp Fp FC11 FC4 FD[8]} BC6 BC11 BC10 VBC4 vd v10 v11 FC11 Fi Fp Fp FL FL Fi Fi Fp Fi FC6 Fi} BC12{ BC13{ VBC10 VBC6 VBC9 BC11 Fp FC11 FC4 Fs} BC4 BC3 FC8} vd Fp FC8 Fp[7]} BC8 vd v1 Fs:5 Fp Fl Fl Fc[2] Fi FC2[10] Fi Fi:5}


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

static void Test_S19657C1()
{
  extern Class_Descriptor cd_S19657C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5674,14892)];
    init_test(&cd_S19657C1, buf);
    S19657C1 *dp, &lv = *(dp=new (buf) S19657C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(90768,59564), "sizeof(S19657C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19657C1)");
    check_base_class_offset(lv, (S19657C2_nt*), ABISELECT(75033,49201), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C3_nt */ AMB_check_base_class_offset(lv, (S19657C3_nt*), ABISELECT(75040,49204), "S19657C1");
    /*is_ambiguous_... S19657C7::S19657C3_nt */ AMB_check_base_class_offset(lv, (S19657C3_nt*)(S19657C7*), ABISELECT(75040,49204), "S19657C1");
    check_base_class_offset(lv, (S19657C4_nt*)(S19657C9*)(S19657C8*)(S19657C7*), 0, "S19657C1");
    check_base_class_offset(lv, (S19657C10_nt*)(S19657C9*)(S19657C8*)(S19657C7*), ABISELECT(76480,50204), "S19657C1");
    check_base_class_offset(lv, (S19657C10_nt*)(S19657C13*)(S19657C12*)(S19657C7*), ABISELECT(76480,50204), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C9 */ AMB_check_base_class_offset(lv, (S19657C10_nt*)(S19657C9*), ABISELECT(76480,50204), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C8 */ AMB_check_base_class_offset(lv, (S19657C10_nt*)(S19657C9*)(S19657C8*), ABISELECT(76480,50204), "S19657C1");
    check_base_class_offset(lv, (S19657C11_nt*)(S19657C9*)(S19657C8*)(S19657C7*), ABISELECT(296,200), "S19657C1");
    check_base_class_offset(lv, (S19657C6_nt*)(S19657C9*)(S19657C8*)(S19657C7*), ABISELECT(82720,54280), "S19657C1");
    check_base_class_offset(lv, (S19657C6_nt*)(S19657C13*)(S19657C12*)(S19657C7*), ABISELECT(82720,54280), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C9 */ AMB_check_base_class_offset(lv, (S19657C6_nt*)(S19657C9*), ABISELECT(82720,54280), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C8 */ AMB_check_base_class_offset(lv, (S19657C6_nt*)(S19657C9*)(S19657C8*), ABISELECT(82720,54280), "S19657C1");
    check_base_class_offset(lv, (S19657C9*)(S19657C8*)(S19657C7*), 0, "S19657C1");
    /*is_ambiguous_... S19657C8::S19657C6_nt */ AMB_check_base_class_offset(lv, (S19657C6_nt*)(S19657C8*)(S19657C7*), ABISELECT(7296,4768), "S19657C1");
    /*is_ambiguous_... S19657C8::S19657C11_nt */ AMB_check_base_class_offset(lv, (S19657C11_nt*)(S19657C8*)(S19657C7*), ABISELECT(7744,5084), "S19657C1");
    /*is_ambiguous_... S19657C8::S19657C10_nt */ AMB_check_base_class_offset(lv, (S19657C10_nt*)(S19657C8*)(S19657C7*), ABISELECT(7824,5128), "S19657C1");
    /*is_ambiguous_... S19657C8::S19657C4_nt */ AMB_check_base_class_offset(lv, (S19657C4_nt*)(S19657C8*)(S19657C7*), ABISELECT(83168,54596), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C8 */ AMB_check_base_class_offset(lv, (S19657C4_nt*)(S19657C8*), ABISELECT(83168,54596), "S19657C1");
    check_base_class_offset(lv, (S19657C8*)(S19657C7*), 0, "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C9 */ AMB_check_base_class_offset(lv, (S19657C4_nt*)(S19657C9*), ABISELECT(83472,54796), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C9 */ AMB_check_base_class_offset(lv, (S19657C11_nt*)(S19657C9*), ABISELECT(83768,54996), "S19657C1");
    check_base_class_offset(lv, (S19657C9*)(S19657C13*)(S19657C12*)(S19657C7*), ABISELECT(83472,54796), "S19657C1");
    /*is_ambiguous_... S19657C13::S19657C11_nt */ AMB_check_base_class_offset(lv, (S19657C11_nt*)(S19657C13*)(S19657C12*)(S19657C7*), ABISELECT(14672,9612), "S19657C1");
    check_base_class_offset(lv, (S19657C13*)(S19657C12*)(S19657C7*), ABISELECT(14672,9612), "S19657C1");
    /*is_ambiguous_... S19657C12::S19657C4_nt */ AMB_check_base_class_offset(lv, (S19657C4_nt*)(S19657C12*)(S19657C7*), ABISELECT(15168,9908), "S19657C1");
    check_base_class_offset(lv, (S19657C3_nt*)(S19657C12*)(S19657C7*), ABISELECT(15472,10108), "S19657C1");
    check_base_class_offset(lv, (S19657C12*)(S19657C7*), ABISELECT(14672,9612), "S19657C1");
    check_base_class_offset(lv, (S19657C7*), 0, "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C8 */ AMB_check_base_class_offset(lv, (S19657C4_nt*)(S19657C9*)(S19657C8*), ABISELECT(60320,39548), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C8 */ AMB_check_base_class_offset(lv, (S19657C11_nt*)(S19657C9*)(S19657C8*), ABISELECT(60616,39748), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C8 */ AMB_check_base_class_offset(lv, (S19657C9*)(S19657C8*), ABISELECT(60320,39548), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C8 */ AMB_check_base_class_offset(lv, (S19657C6_nt*)(S19657C8*), ABISELECT(67616,44316), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C8 */ AMB_check_base_class_offset(lv, (S19657C11_nt*)(S19657C8*), ABISELECT(68064,44632), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C8 */ AMB_check_base_class_offset(lv, (S19657C10_nt*)(S19657C8*), ABISELECT(68144,44676), "S19657C1");
    /*is_ambiguous_... S19657C1::S19657C8 */ AMB_check_base_class_offset(lv, (S19657C8*), ABISELECT(60320,39548), "S19657C1");
    set_bf_and_test(lv, s19657c1f0, ABISELECT(74980,49160), 0, 5, 1, "S19657C1");
    set_bf_and_test(lv, s19657c1f0, ABISELECT(74980,49160), 0, 5, hide_sll(1LL<<4), "S19657C1");
    check_field_offset(lv, s19657c1f1, ABISELECT(74984,49164), "S19657C1.s19657c1f1");
    check_field_offset(lv, s19657c1f2, ABISELECT(74992,49168), "S19657C1.s19657c1f2");
    check_field_offset(lv, s19657c1f3, ABISELECT(75000,49172), "S19657C1.s19657c1f3");
    check_field_offset(lv, s19657c1f4, ABISELECT(75008,49176), "S19657C1.s19657c1f4");
    check_field_offset(lv, s19657c1f5, ABISELECT(75012,49180), "S19657C1.s19657c1f5");
    check_field_offset(lv, s19657c1f6, ABISELECT(75016,49184), "S19657C1.s19657c1f6");
    check_field_offset(lv, s19657c1f7, ABISELECT(75028,49196), "S19657C1.s19657c1f7");
    set_bf_and_test(lv, s19657c1f8, ABISELECT(75032,49200), 0, 5, 1, "S19657C1");
    set_bf_and_test(lv, s19657c1f8, ABISELECT(75032,49200), 0, 5, hide_sll(1LL<<4), "S19657C1");
    test_class_info(&lv, &cd_S19657C1);
    dp->~S19657C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19657C1(Test_S19657C1, "S19657C1", ABISELECT(90768,59564));

#else // __cplusplus

extern void _ZN8S19657C1C1Ev();
extern void _ZN8S19657C1D2Ev();
Name_Map name_map_S19657C1[] = {
  NSPAIR(_ZN8S19657C1C1Ev),
  NSPAIR(_ZN8S19657C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19657C2_nt;
extern VTBL_ENTRY _ZTI11S19657C2_nt[];
extern Class_Descriptor cd_S19657C3_nt;
extern VTBL_ENTRY _ZTI11S19657C3_nt[];
extern  VTBL_ENTRY _ZTV11S19657C3_nt[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C10_nt;
extern VTBL_ENTRY _ZTI12S19657C10_nt[];
extern  VTBL_ENTRY _ZTV12S19657C10_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C6_nt;
extern VTBL_ENTRY _ZTI11S19657C6_nt[];
extern  VTBL_ENTRY _ZTV11S19657C6_nt[];
extern Class_Descriptor cd_S19657C9;
extern VTBL_ENTRY _ZTI8S19657C9[];
extern  VTBL_ENTRY _ZTV8S19657C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C9[];
extern Class_Descriptor cd_S19657C6_nt;
extern VTBL_ENTRY _ZTI11S19657C6_nt[];
extern  VTBL_ENTRY _ZTV11S19657C6_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C10_nt;
extern VTBL_ENTRY _ZTI12S19657C10_nt[];
extern  VTBL_ENTRY _ZTV12S19657C10_nt[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C8;
extern VTBL_ENTRY _ZTI8S19657C8[];
extern  VTBL_ENTRY _ZTV8S19657C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C8[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C9;
extern VTBL_ENTRY _ZTI8S19657C9[];
extern  VTBL_ENTRY _ZTV8S19657C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C9[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C13;
extern VTBL_ENTRY _ZTI9S19657C13[];
extern  VTBL_ENTRY _ZTV9S19657C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19657C13[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C3_nt;
extern VTBL_ENTRY _ZTI11S19657C3_nt[];
extern  VTBL_ENTRY _ZTV11S19657C3_nt[];
extern Class_Descriptor cd_S19657C12;
extern VTBL_ENTRY _ZTI9S19657C12[];
extern  VTBL_ENTRY _ZTV9S19657C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19657C12[];
extern Class_Descriptor cd_S19657C7;
extern VTBL_ENTRY _ZTI8S19657C7[];
extern  VTBL_ENTRY _ZTV8S19657C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C7[];
extern Class_Descriptor cd_S19657C4_nt;
extern VTBL_ENTRY _ZTI11S19657C4_nt[];
extern  VTBL_ENTRY _ZTV11S19657C4_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C9;
extern VTBL_ENTRY _ZTI8S19657C9[];
extern  VTBL_ENTRY _ZTV8S19657C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C9[];
extern Class_Descriptor cd_S19657C6_nt;
extern VTBL_ENTRY _ZTI11S19657C6_nt[];
extern  VTBL_ENTRY _ZTV11S19657C6_nt[];
extern Class_Descriptor cd_S19657C11_nt;
extern VTBL_ENTRY _ZTI12S19657C11_nt[];
extern  VTBL_ENTRY _ZTV12S19657C11_nt[];
extern Class_Descriptor cd_S19657C10_nt;
extern VTBL_ENTRY _ZTI12S19657C10_nt[];
extern  VTBL_ENTRY _ZTV12S19657C10_nt[];
extern Class_Descriptor cd_S19657C8;
extern VTBL_ENTRY _ZTI8S19657C8[];
extern  VTBL_ENTRY _ZTV8S19657C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C8[];
static Base_Class bases_S19657C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19657C2_nt,    ABISELECT(75033,49201), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19657C3_nt,    ABISELECT(75040,49204), //bcp->offset
    75, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19657C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    6, //immediately_derived
  0, 0},
  {&cd_S19657C10_nt,    ABISELECT(76480,50204), //bcp->offset
    84, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19657C11_nt,    ABISELECT(296,200), //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
    9, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19657C6_nt,    ABISELECT(82720,54280), //bcp->offset
    88, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19657C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19657C6_nt,    ABISELECT(7296,4768), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19657C11_nt,    ABISELECT(7744,5084), //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
    11, //immediately_derived
  0, 0},
  {&cd_S19657C10_nt,    ABISELECT(7824,5128), //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
    13, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19657C4_nt,    ABISELECT(83168,54596), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S19657C8,    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
    14, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19657C4_nt,    ABISELECT(83472,54796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19657C11_nt,    ABISELECT(83768,54996), //bcp->offset
    113, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19657C9,    ABISELECT(83472,54796), //bcp->offset
    100, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19657C11_nt,    ABISELECT(14672,9612), //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S19657C13,    ABISELECT(14672,9612), //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
    16, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19657C4_nt,    ABISELECT(15168,9908), //bcp->offset
    38, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19657C3_nt,    ABISELECT(15472,10108), //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
    18, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19657C12,    ABISELECT(14672,9612), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19657C7,    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
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19657C4_nt,    ABISELECT(60320,39548), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S19657C11_nt,    ABISELECT(60616,39748), //bcp->offset
    60, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19657C9,    ABISELECT(60320,39548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19657C6_nt,    ABISELECT(67616,44316), //bcp->offset
    64, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19657C11_nt,    ABISELECT(68064,44632), //bcp->offset
    68, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19657C10_nt,    ABISELECT(68144,44676), //bcp->offset
    72, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19657C8,    ABISELECT(60320,39548), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19657C1[];
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C1D1Ev();
extern void _ZN8S19657C1D0Ev();
extern void _ZN8S19657C83v10Ev();
extern void _ZN8S19657C83v11Ev();
extern void _ZN8S19657C12v1Ev();
extern void ABISELECT(_ZThn296_N8S19657C1D1Ev,_ZThn200_N8S19657C1D1Ev)();
extern void ABISELECT(_ZThn296_N8S19657C1D0Ev,_ZThn200_N8S19657C1D0Ev)();
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
extern void ABISELECT(_ZThn7744_N8S19657C1D1Ev,_ZThn5084_N8S19657C1D1Ev)();
extern void ABISELECT(_ZThn7744_N8S19657C1D0Ev,_ZThn5084_N8S19657C1D0Ev)();
extern void _ZN12S19657C10_nt2v6Ev();
extern void ABISELECT(_ZThn14672_N8S19657C1D1Ev,_ZThn9612_N8S19657C1D1Ev)();
extern void ABISELECT(_ZThn14672_N8S19657C1D0Ev,_ZThn9612_N8S19657C1D0Ev)();
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void ABISELECT(_ZThn15472_N8S19657C1D1Ev,_ZThn10108_N8S19657C1D1Ev)();
extern void ABISELECT(_ZThn15472_N8S19657C1D0Ev,_ZThn10108_N8S19657C1D0Ev)();
extern void _ZN11S19657C3_nt2v2Ev();
extern void _ZN11S19657C3_nt2v3Ev();
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void ABISELECT(_ZThn60320_N8S19657C1D1Ev,_ZThn39548_N8S19657C1D1Ev)();
extern void ABISELECT(_ZThn60320_N8S19657C1D0Ev,_ZThn39548_N8S19657C1D0Ev)();
extern void _ZN8S19657C83v10Ev();
extern void _ZN8S19657C83v11Ev();
extern void ABISELECT(_ZThn60616_N8S19657C1D1Ev,_ZThn39748_N8S19657C1D1Ev)();
extern void ABISELECT(_ZThn60616_N8S19657C1D0Ev,_ZThn39748_N8S19657C1D0Ev)();
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
extern void ABISELECT(_ZThn68064_N8S19657C1D1Ev,_ZThn44632_N8S19657C1D1Ev)();
extern void ABISELECT(_ZThn68064_N8S19657C1D0Ev,_ZThn44632_N8S19657C1D0Ev)();
extern void _ZN12S19657C10_nt2v6Ev();
extern void ABISELECT(_ZTv0_n24_N8S19657C1D1Ev,_ZTv0_n12_N8S19657C1D1Ev)();
extern void ABISELECT(_ZThn75040_N8S19657C1D1Ev,_ZThn49204_N8S19657C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19657C1D0Ev,_ZTv0_n12_N8S19657C1D0Ev)();
extern void ABISELECT(_ZThn75040_N8S19657C1D0Ev,_ZThn49204_N8S19657C1D0Ev)() __attribute__((weak));
extern void _ZN11S19657C3_nt2v2Ev();
extern void _ZN11S19657C3_nt2v3Ev();
extern void _ZN12S19657C10_nt2v6Ev();
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S19657C1D1Ev,_ZTv0_n32_N8S19657C1D1Ev)();
extern void ABISELECT(_ZThn83472_N8S19657C1D1Ev,_ZThn54796_N8S19657C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19657C1D0Ev,_ZTv0_n32_N8S19657C1D0Ev)();
extern void ABISELECT(_ZThn83472_N8S19657C1D0Ev,_ZThn54796_N8S19657C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn296_n64_N8S19657C1D1Ev,_ZTvn200_n32_N8S19657C1D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N8S19657C1D0Ev,_ZTvn200_n32_N8S19657C1D0Ev)();
static  VTBL_ENTRY vtc_S19657C1[] = {
  ABISELECT(75033,49201),
  ABISELECT(83472,54796),
  ABISELECT(75040,49204),
  ABISELECT(83168,54596),
  ABISELECT(82720,54280),
  ABISELECT(76480,50204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v11Ev,
  (VTBL_ENTRY)&_ZN8S19657C12v1Ev,
  ABISELECT(-296,-200),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19657C1D1Ev,_ZThn200_N8S19657C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn296_N8S19657C1D0Ev,_ZThn200_N8S19657C1D0Ev),
  ABISELECT(-7296,-4768),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
  ABISELECT(-7744,-5084),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19657C1D1Ev,_ZThn5084_N8S19657C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn7744_N8S19657C1D0Ev,_ZThn5084_N8S19657C1D0Ev),
  ABISELECT(-7824,-5128),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
  ABISELECT(68800,45184),
  ABISELECT(68048,44668),
  ABISELECT(61808,40592),
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19657C1D1Ev,_ZThn9612_N8S19657C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19657C1D0Ev,_ZThn9612_N8S19657C1D0Ev),
  ABISELECT(-15168,-9908),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  ABISELECT(-15472,-10108),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn15472_N8S19657C1D1Ev,_ZThn10108_N8S19657C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn15472_N8S19657C1D0Ev,_ZThn10108_N8S19657C1D0Ev),
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v3Ev,
  ABISELECT(22848,15048),
  ABISELECT(22400,14732),
  ABISELECT(16160,10656),
  ABISELECT(-60320,-39548),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn60320_N8S19657C1D1Ev,_ZThn39548_N8S19657C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn60320_N8S19657C1D0Ev,_ZThn39548_N8S19657C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19657C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v11Ev,
  ABISELECT(-60616,-39748),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn60616_N8S19657C1D1Ev,_ZThn39748_N8S19657C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn60616_N8S19657C1D0Ev,_ZThn39748_N8S19657C1D0Ev),
  ABISELECT(-67616,-44316),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
  ABISELECT(-68064,-44632),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn68064_N8S19657C1D1Ev,_ZThn44632_N8S19657C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn68064_N8S19657C1D0Ev,_ZThn44632_N8S19657C1D0Ev),
  ABISELECT(-68144,-44676),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-75040,-49204),
  ABISELECT(-75040,-49204),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19657C1D1Ev,_ZTv0_n12_N8S19657C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19657C1D0Ev,_ZTv0_n12_N8S19657C1D0Ev),
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v3Ev,
  0,
  ABISELECT(-76480,-50204),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
  0,
  0,
  ABISELECT(-82720,-54280),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
  0,
  0,
  ABISELECT(-83168,-54596),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  ABISELECT(-83472,-54796),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-83472,-54796),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19657C1D1Ev,_ZTv0_n32_N8S19657C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19657C1D0Ev,_ZTv0_n32_N8S19657C1D0Ev),
  ABISELECT(-83768,-54996),
  (VTBL_ENTRY)&(_ZTI8S19657C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19657C1D1Ev,_ZTvn200_n32_N8S19657C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19657C1D0Ev,_ZTvn200_n32_N8S19657C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19657C1[];
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C7D1Ev();
extern void _ZN8S19657C7D0Ev();
extern void _ZN8S19657C83v10Ev();
extern void _ZN8S19657C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19657C7__8S19657C1[] = {
  ABISELECT(83472,54796),
  ABISELECT(75040,49204),
  ABISELECT(83168,54596),
  ABISELECT(82720,54280),
  ABISELECT(76480,50204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v11Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C8D1Ev();
extern void _ZN8S19657C8D0Ev();
extern void _ZN8S19657C83v10Ev();
extern void _ZN8S19657C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19657C88S19657C7__8S19657C1[] = {
  ABISELECT(83168,54596),
  ABISELECT(82720,54280),
  ABISELECT(76480,50204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v11Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C9D1Ev();
extern void _ZN8S19657C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19657C98S19657C88S19657C7__8S19657C1[] = {
  ABISELECT(82720,54280),
  ABISELECT(76480,50204),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D0Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__8S19657C98S19657C88S19657C7__8S19657C1[] = {
  0,
  ABISELECT(-76480,-50204),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__8S19657C98S19657C88S19657C7__8S19657C1[] = {
  0,
  0,
  ABISELECT(-82720,-54280),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__8S19657C88S19657C7__8S19657C1[] = {
  0,
  ABISELECT(-76480,-50204),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__8S19657C88S19657C7__8S19657C1[] = {
  0,
  0,
  ABISELECT(-82720,-54280),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C4_nt__A1__8S19657C88S19657C7__8S19657C1[] = {
  0,
  0,
  ABISELECT(-83168,-54596),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
};
extern void _ZN9S19657C12D1Ev();
extern void _ZN9S19657C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19657C128S19657C7__8S19657C1[] = {
  ABISELECT(68800,45184),
  ABISELECT(68048,44668),
  ABISELECT(61808,40592),
  0,
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN9S19657C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19657C12D0Ev,
};
extern void _ZN9S19657C13D1Ev();
extern void _ZN9S19657C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19657C139S19657C128S19657C7__8S19657C1[] = {
  ABISELECT(68800,45184),
  ABISELECT(68048,44668),
  ABISELECT(61808,40592),
  0,
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN9S19657C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19657C13D0Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__9S19657C139S19657C128S19657C7__8S19657C1[] = {
  0,
  ABISELECT(-61808,-40592),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__9S19657C139S19657C128S19657C7__8S19657C1[] = {
  0,
  0,
  ABISELECT(-68048,-44668),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19657C13D1Ev,_ZTv0_n32_N9S19657C13D1Ev)();
extern void ABISELECT(_ZThn68800_N9S19657C13D1Ev,_ZThn45184_N9S19657C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19657C13D0Ev,_ZTv0_n32_N9S19657C13D0Ev)();
extern void ABISELECT(_ZThn68800_N9S19657C13D0Ev,_ZThn45184_N9S19657C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19657C9__9S19657C139S19657C128S19657C7__8S19657C1[] = {
  ABISELECT(-68800,-45184),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-68800,-45184),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C13D1Ev,_ZTv0_n32_N9S19657C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C13D0Ev,_ZTv0_n32_N9S19657C13D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19657C13D1Ev,_ZTvn200_n32_N9S19657C13D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19657C13D0Ev,_ZTvn200_n32_N9S19657C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19657C11_nt8S19657C9__9S19657C139S19657C128S19657C7__8S19657C1[] = {
  ABISELECT(-69096,-45384),
  (VTBL_ENTRY)&(_ZTI9S19657C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C13D1Ev,_ZTvn200_n32_N9S19657C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C13D0Ev,_ZTvn200_n32_N9S19657C13D0Ev),
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__9S19657C128S19657C7__8S19657C1[] = {
  0,
  ABISELECT(-61808,-40592),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__9S19657C128S19657C7__8S19657C1[] = {
  0,
  0,
  ABISELECT(-68048,-44668),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N9S19657C12D1Ev,_ZTv0_n32_N9S19657C12D1Ev)();
extern void ABISELECT(_ZThn68800_N9S19657C12D1Ev,_ZThn45184_N9S19657C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19657C12D0Ev,_ZTv0_n32_N9S19657C12D0Ev)();
extern void ABISELECT(_ZThn68800_N9S19657C12D0Ev,_ZThn45184_N9S19657C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19657C9__9S19657C128S19657C7__8S19657C1[] = {
  ABISELECT(-68800,-45184),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-68800,-45184),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C12D1Ev,_ZTv0_n32_N9S19657C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19657C12D0Ev,_ZTv0_n32_N9S19657C12D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N9S19657C12D1Ev,_ZTvn200_n32_N9S19657C12D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N9S19657C12D0Ev,_ZTvn200_n32_N9S19657C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19657C11_nt8S19657C9__9S19657C128S19657C7__8S19657C1[] = {
  ABISELECT(-69096,-45384),
  (VTBL_ENTRY)&(_ZTI9S19657C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C12D1Ev,_ZTvn200_n32_N9S19657C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N9S19657C12D0Ev,_ZTvn200_n32_N9S19657C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19657C7D1Ev,_ZTv0_n12_N8S19657C7D1Ev)();
extern void ABISELECT(_ZThn75040_N8S19657C7D1Ev,_ZThn49204_N8S19657C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19657C7D0Ev,_ZTv0_n12_N8S19657C7D0Ev)();
extern void ABISELECT(_ZThn75040_N8S19657C7D0Ev,_ZThn49204_N8S19657C7D0Ev)() __attribute__((weak));
extern void _ZN11S19657C3_nt2v2Ev();
extern void _ZN11S19657C3_nt2v3Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C3_nt__8S19657C7__8S19657C1[] = {
  0,
  0,
  ABISELECT(-75040,-49204),
  ABISELECT(-75040,-49204),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19657C7D1Ev,_ZTv0_n12_N8S19657C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19657C7D0Ev,_ZTv0_n12_N8S19657C7D0Ev),
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S19657C3_nt2v3Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__8S19657C7__8S19657C1[] = {
  0,
  ABISELECT(-76480,-50204),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__8S19657C7__8S19657C1[] = {
  0,
  0,
  ABISELECT(-82720,-54280),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C4_nt__A1__8S19657C7__8S19657C1[] = {
  0,
  0,
  ABISELECT(-83168,-54596),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
};
extern void ABISELECT(_ZThn14672_N8S19657C7D1Ev,_ZThn9612_N8S19657C7D1Ev)();
extern void ABISELECT(_ZThn14672_N8S19657C7D0Ev,_ZThn9612_N8S19657C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19657C12__8S19657C7__8S19657C1[] = {
  ABISELECT(68800,45184),
  ABISELECT(68048,44668),
  ABISELECT(61808,40592),
  ABISELECT(-14672,-9612),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19657C7D1Ev,_ZThn9612_N8S19657C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn14672_N8S19657C7D0Ev,_ZThn9612_N8S19657C7D0Ev),
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S19657C7D1Ev,_ZTv0_n32_N8S19657C7D1Ev)();
extern void ABISELECT(_ZThn83472_N8S19657C7D1Ev,_ZThn54796_N8S19657C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19657C7D0Ev,_ZTv0_n32_N8S19657C7D0Ev)();
extern void ABISELECT(_ZThn83472_N8S19657C7D0Ev,_ZThn54796_N8S19657C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19657C9__A1__8S19657C7__8S19657C1[] = {
  ABISELECT(-83472,-54796),
  0,
  0,
  0,
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  ABISELECT(-83472,-54796),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19657C7D1Ev,_ZTv0_n32_N8S19657C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19657C7D0Ev,_ZTv0_n32_N8S19657C7D0Ev),
};
extern void ABISELECT(_ZTvn296_n64_N8S19657C7D1Ev,_ZTvn200_n32_N8S19657C7D1Ev)();
extern void ABISELECT(_ZTvn296_n64_N8S19657C7D0Ev,_ZTvn200_n32_N8S19657C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV12S19657C11_nt8S19657C9__A2__8S19657C7__8S19657C1[] = {
  ABISELECT(-83768,-54996),
  (VTBL_ENTRY)&(_ZTI8S19657C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19657C7D1Ev,_ZTvn200_n32_N8S19657C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn296_n64_N8S19657C7D0Ev,_ZTvn200_n32_N8S19657C7D0Ev),
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C8D1Ev();
extern void _ZN8S19657C8D0Ev();
extern void _ZN8S19657C83v10Ev();
extern void _ZN8S19657C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S19657C8__A1__8S19657C1[] = {
  ABISELECT(22848,15048),
  ABISELECT(22400,14732),
  ABISELECT(16160,10656),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v10Ev,
  (VTBL_ENTRY)&_ZN8S19657C83v11Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C9D1Ev();
extern void _ZN8S19657C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19657C98S19657C8__A2__8S19657C1[] = {
  ABISELECT(22400,14732),
  ABISELECT(16160,10656),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D0Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__8S19657C98S19657C8__A2__8S19657C1[] = {
  0,
  ABISELECT(-16160,-10656),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__8S19657C98S19657C8__A2__8S19657C1[] = {
  0,
  0,
  ABISELECT(-22400,-14732),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__8S19657C8__A1__8S19657C1[] = {
  0,
  ABISELECT(-16160,-10656),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__8S19657C8__A1__8S19657C1[] = {
  0,
  0,
  ABISELECT(-22400,-14732),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C4_nt__A1__8S19657C8__A1__8S19657C1[] = {
  0,
  0,
  ABISELECT(-22848,-15048),
  (VTBL_ENTRY)&(_ZTI8S19657C8[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
};
extern void _ZN11S19657C4_nt2v4Ev();
extern void _ZN11S19657C4_nt2v5Ev();
extern void _ZN8S19657C92v9Ev();
extern void _ZN8S19657C9D1Ev();
extern void _ZN8S19657C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19657C9__A1__8S19657C1[] = {
  ABISELECT(-752,-516),
  ABISELECT(-6992,-4592),
  0,
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S19657C4_nt2v5Ev,
  (VTBL_ENTRY)&_ZN8S19657C92v9Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19657C9D0Ev,
};
extern void _ZN12S19657C10_nt2v6Ev();
static  VTBL_ENTRY _tg__ZTV12S19657C10_nt__8S19657C9__A1__8S19657C1[] = {
  0,
  ABISELECT(6992,4592),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN12S19657C10_nt2v6Ev,
};
extern void _ZN11S19657C6_nt2v7Ev();
extern void _ZN11S19657C6_nt2v8Ev();
static  VTBL_ENTRY _tg__ZTV11S19657C6_nt__8S19657C9__A1__8S19657C1[] = {
  0,
  0,
  ABISELECT(752,516),
  (VTBL_ENTRY)&(_ZTI8S19657C9[0]),
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S19657C6_nt2v8Ev,
};
static  VTT_ENTRY vtt_S19657C1[] = {
  {&(_ZTV8S19657C1[8]),  8,117},
  {&(_tg__ZTV8S19657C7__8S19657C1[7]),  7,14},
  {&(_tg__ZTV8S19657C88S19657C7__8S19657C1[5]),  5,12},
  {&(_tg__ZTV8S19657C98S19657C88S19657C7__8S19657C1[4]),  4,9},
  {&(_tg__ZTV12S19657C10_nt__8S19657C98S19657C88S19657C7__8S19657C1[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__8S19657C98S19657C88S19657C7__8S19657C1[4]),  4,6},
  {&(_tg__ZTV12S19657C10_nt__8S19657C88S19657C7__8S19657C1[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__8S19657C88S19657C7__8S19657C1[4]),  4,6},
  {&(_tg__ZTV11S19657C4_nt__A1__8S19657C88S19657C7__8S19657C1[4]),  4,6},
  {&(_tg__ZTV9S19657C128S19657C7__8S19657C1[5]),  5,7},
  {&(_tg__ZTV9S19657C139S19657C128S19657C7__8S19657C1[5]),  5,7},
  {&(_tg__ZTV12S19657C10_nt__9S19657C139S19657C128S19657C7__8S19657C1[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__9S19657C139S19657C128S19657C7__8S19657C1[4]),  4,6},
  {&(_tg__ZTV8S19657C9__9S19657C139S19657C128S19657C7__8S19657C1[8]),  8,13},
  {&(_tg__ZTV12S19657C11_nt8S19657C9__9S19657C139S19657C128S19657C7__8S19657C1[2]),  2,4},
  {&(_tg__ZTV12S19657C10_nt__9S19657C128S19657C7__8S19657C1[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__9S19657C128S19657C7__8S19657C1[4]),  4,6},
  {&(_tg__ZTV8S19657C9__9S19657C128S19657C7__8S19657C1[8]),  8,13},
  {&(_tg__ZTV12S19657C11_nt8S19657C9__9S19657C128S19657C7__8S19657C1[2]),  2,4},
  {&(_tg__ZTV11S19657C3_nt__8S19657C7__8S19657C1[5]),  5,9},
  {&(_tg__ZTV12S19657C10_nt__8S19657C7__8S19657C1[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__8S19657C7__8S19657C1[4]),  4,6},
  {&(_tg__ZTV11S19657C4_nt__A1__8S19657C7__8S19657C1[4]),  4,6},
  {&(_tg__ZTV9S19657C12__8S19657C7__8S19657C1[5]),  5,7},
  {&(_tg__ZTV8S19657C9__A1__8S19657C7__8S19657C1[8]),  8,13},
  {&(_tg__ZTV12S19657C11_nt8S19657C9__A2__8S19657C7__8S19657C1[2]),  2,4},
  {&(_tg__ZTV8S19657C8__A1__8S19657C1[5]),  5,12},
  {&(_tg__ZTV8S19657C98S19657C8__A2__8S19657C1[4]),  4,9},
  {&(_tg__ZTV12S19657C10_nt__8S19657C98S19657C8__A2__8S19657C1[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__8S19657C98S19657C8__A2__8S19657C1[4]),  4,6},
  {&(_tg__ZTV12S19657C10_nt__8S19657C8__A1__8S19657C1[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__8S19657C8__A1__8S19657C1[4]),  4,6},
  {&(_tg__ZTV11S19657C4_nt__A1__8S19657C8__A1__8S19657C1[4]),  4,6},
  {&(_ZTV8S19657C1[80]),  80,117},
  {&(_ZTV8S19657C1[87]),  87,117},
  {&(_ZTV8S19657C1[92]),  92,117},
  {&(_ZTV8S19657C1[98]),  98,117},
  {&(_ZTV8S19657C1[36]),  36,117},
  {&(_ZTV8S19657C1[108]),  108,117},
  {&(_ZTV8S19657C1[115]),  115,117},
  {&(_ZTV8S19657C1[53]),  53,117},
  {&(_tg__ZTV8S19657C9__A1__8S19657C1[4]),  4,9},
  {&(_tg__ZTV12S19657C10_nt__8S19657C9__A1__8S19657C1[3]),  3,4},
  {&(_tg__ZTV11S19657C6_nt__8S19657C9__A1__8S19657C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19657C1[];
extern  VTBL_ENTRY _ZTV8S19657C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19657C1[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19657C7D0Ev,_ZTv0_n32_N8S19657C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83472_N8S19657C7D0Ev,_ZThn54796_N8S19657C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19657C7D1Ev,_ZTv0_n32_N8S19657C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83472_N8S19657C7D1Ev,_ZThn54796_N8S19657C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19657C7D0Ev,_ZTv0_n12_N8S19657C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75040_N8S19657C7D0Ev,_ZThn49204_N8S19657C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19657C7D1Ev,_ZTv0_n12_N8S19657C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75040_N8S19657C7D1Ev,_ZThn49204_N8S19657C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C12D0Ev,_ZTv0_n32_N9S19657C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68800_N9S19657C12D0Ev,_ZThn45184_N9S19657C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C12D1Ev,_ZTv0_n32_N9S19657C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68800_N9S19657C12D1Ev,_ZThn45184_N9S19657C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C13D0Ev,_ZTv0_n32_N9S19657C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68800_N9S19657C13D0Ev,_ZThn45184_N9S19657C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19657C13D1Ev,_ZTv0_n32_N9S19657C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn68800_N9S19657C13D1Ev,_ZThn45184_N9S19657C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19657C1D0Ev,_ZTv0_n32_N8S19657C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83472_N8S19657C1D0Ev,_ZThn54796_N8S19657C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19657C1D1Ev,_ZTv0_n32_N8S19657C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn83472_N8S19657C1D1Ev,_ZThn54796_N8S19657C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19657C1D0Ev,_ZTv0_n12_N8S19657C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75040_N8S19657C1D0Ev,_ZThn49204_N8S19657C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19657C1D1Ev,_ZTv0_n12_N8S19657C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn75040_N8S19657C1D1Ev,_ZThn49204_N8S19657C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19657C1 = {  "S19657C1", // class name
  bases_S19657C1, 28,
  &(vtc_S19657C1[0]), // expected_vtbl_contents
  &(vtt_S19657C1[0]), // expected_vtt_contents
  ABISELECT(90768,59564), // object size
  NSPAIRA(_ZTI8S19657C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19657C1),117, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19657C1),44, //virtual table table var
  27, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9142C8_nt  {
  ::S3214C13_nt s9142c8f0;
  ::S3214C13_nt s9142c8f1;
  char s9142c8f2;
  void  mf9142c8(); // _ZN10S9142C8_nt8mf9142c8Ev
};
//SIG(-1 S9142C8_nt) C1{ m FC2{ m Fi[3]} FC2 Fc}


void  S9142C8_nt ::mf9142c8(){}

//skip512 S9142C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9142C2  {
  void *s9142c2f0[2];
  int s9142c2f1;
  void *s9142c2f2;
  int s9142c2f3[3];
  ::S3214C13_nt s9142c2f4;
  unsigned int s9142c2f5:1;
  unsigned int s9142c2f6:1;
  unsigned int s9142c2f7:1;
  void *s9142c2f8[2];
  ::S675C20_nt s9142c2f9;
  void *s9142c2f10;
  int s9142c2f11;
  ::S675C20_nt s9142c2f12;
  int s9142c2f13[8];
  ::S3214C13_nt s9142c2f14;
  ::S9142C8_nt s9142c2f15;
  ::S3214C23 s9142c2f16;
  int s9142c2f17[2];
  void *s9142c2f18;
  int s9142c2f19;
  ::S3214C18 s9142c2f20;
  int s9142c2f21[2];
  void *s9142c2f22;
  int s9142c2f23;
  virtual  ~S9142C2(); // _ZN7S9142C2D1Ev
  virtual void  v24(); // _ZN7S9142C23v24Ev
  virtual void  v25(); // _ZN7S9142C23v25Ev
  virtual void  v26(); // _ZN7S9142C23v26Ev
  virtual void  v27(); // _ZN7S9142C23v27Ev
  virtual void  v28(); // _ZN7S9142C23v28Ev
  virtual void  v29(); // _ZN7S9142C23v29Ev
  virtual void  v30(); // _ZN7S9142C23v30Ev
  virtual void  v31(); // _ZN7S9142C23v31Ev
  virtual void  v32(); // _ZN7S9142C23v32Ev
  virtual void  v33(); // _ZN7S9142C23v33Ev
  virtual void  v34(); // _ZN7S9142C23v34Ev
  virtual void  v35(); // _ZN7S9142C23v35Ev
  virtual void  v36(); // _ZN7S9142C23v36Ev
  virtual void  v37(); // _ZN7S9142C23v37Ev
  virtual void  v38(); // _ZN7S9142C23v38Ev
  virtual void  v39(); // _ZN7S9142C23v39Ev
  virtual void  v40(); // _ZN7S9142C23v40Ev
  virtual void  v41(); // _ZN7S9142C23v41Ev
  virtual void  v42(); // _ZN7S9142C23v42Ev
  virtual void  v43(); // _ZN7S9142C23v43Ev
  virtual void  v44(); // _ZN7S9142C23v44Ev
  virtual void  v45(); // _ZN7S9142C23v45Ev
  virtual void  v46(); // _ZN7S9142C23v46Ev
  virtual void  v47(); // _ZN7S9142C23v47Ev
  virtual void  v48(); // _ZN7S9142C23v48Ev
  virtual void  v49(); // _ZN7S9142C23v49Ev
  virtual void  v50(); // _ZN7S9142C23v50Ev
  virtual void  v51(); // _ZN7S9142C23v51Ev
  virtual void  v52(); // _ZN7S9142C23v52Ev
  virtual void  v53(); // _ZN7S9142C23v53Ev
  virtual void  v54(); // _ZN7S9142C23v54Ev
  virtual void  v55(); // _ZN7S9142C23v55Ev
  virtual void  v56(); // _ZN7S9142C23v56Ev
  virtual void  v57(); // _ZN7S9142C23v57Ev
  virtual void  v58(); // _ZN7S9142C23v58Ev
  S9142C2(); // tgen
};
//SIG(-1 S9142C2) 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 Fp[2] Fi Fp Fi[3] FC2{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC3 Fi[8] FC2 FC7{ m FC2 FC2 Fc} FC5 Fi[2] Fp Fi FC8{ BC6} Fi[2] Fp Fi}


 S9142C2 ::~S9142C2(){ note_dtor("S9142C2", this);}
void  S9142C2 ::v24(){vfunc_called(this, "_ZN7S9142C23v24Ev");}
void  S9142C2 ::v25(){vfunc_called(this, "_ZN7S9142C23v25Ev");}
void  S9142C2 ::v26(){vfunc_called(this, "_ZN7S9142C23v26Ev");}
void  S9142C2 ::v27(){vfunc_called(this, "_ZN7S9142C23v27Ev");}
void  S9142C2 ::v28(){vfunc_called(this, "_ZN7S9142C23v28Ev");}
void  S9142C2 ::v29(){vfunc_called(this, "_ZN7S9142C23v29Ev");}
void  S9142C2 ::v30(){vfunc_called(this, "_ZN7S9142C23v30Ev");}
void  S9142C2 ::v31(){vfunc_called(this, "_ZN7S9142C23v31Ev");}
void  S9142C2 ::v32(){vfunc_called(this, "_ZN7S9142C23v32Ev");}
void  S9142C2 ::v33(){vfunc_called(this, "_ZN7S9142C23v33Ev");}
void  S9142C2 ::v34(){vfunc_called(this, "_ZN7S9142C23v34Ev");}
void  S9142C2 ::v35(){vfunc_called(this, "_ZN7S9142C23v35Ev");}
void  S9142C2 ::v36(){vfunc_called(this, "_ZN7S9142C23v36Ev");}
void  S9142C2 ::v37(){vfunc_called(this, "_ZN7S9142C23v37Ev");}
void  S9142C2 ::v38(){vfunc_called(this, "_ZN7S9142C23v38Ev");}
void  S9142C2 ::v39(){vfunc_called(this, "_ZN7S9142C23v39Ev");}
void  S9142C2 ::v40(){vfunc_called(this, "_ZN7S9142C23v40Ev");}
void  S9142C2 ::v41(){vfunc_called(this, "_ZN7S9142C23v41Ev");}
void  S9142C2 ::v42(){vfunc_called(this, "_ZN7S9142C23v42Ev");}
void  S9142C2 ::v43(){vfunc_called(this, "_ZN7S9142C23v43Ev");}
void  S9142C2 ::v44(){vfunc_called(this, "_ZN7S9142C23v44Ev");}
void  S9142C2 ::v45(){vfunc_called(this, "_ZN7S9142C23v45Ev");}
void  S9142C2 ::v46(){vfunc_called(this, "_ZN7S9142C23v46Ev");}
void  S9142C2 ::v47(){vfunc_called(this, "_ZN7S9142C23v47Ev");}
void  S9142C2 ::v48(){vfunc_called(this, "_ZN7S9142C23v48Ev");}
void  S9142C2 ::v49(){vfunc_called(this, "_ZN7S9142C23v49Ev");}
void  S9142C2 ::v50(){vfunc_called(this, "_ZN7S9142C23v50Ev");}
void  S9142C2 ::v51(){vfunc_called(this, "_ZN7S9142C23v51Ev");}
void  S9142C2 ::v52(){vfunc_called(this, "_ZN7S9142C23v52Ev");}
void  S9142C2 ::v53(){vfunc_called(this, "_ZN7S9142C23v53Ev");}
void  S9142C2 ::v54(){vfunc_called(this, "_ZN7S9142C23v54Ev");}
void  S9142C2 ::v55(){vfunc_called(this, "_ZN7S9142C23v55Ev");}
void  S9142C2 ::v56(){vfunc_called(this, "_ZN7S9142C23v56Ev");}
void  S9142C2 ::v57(){vfunc_called(this, "_ZN7S9142C23v57Ev");}
void  S9142C2 ::v58(){vfunc_called(this, "_ZN7S9142C23v58Ev");}
S9142C2 ::S9142C2(){ note_ctor("S9142C2", this);} // tgen

static void Test_S9142C2()
{
  extern Class_Descriptor cd_S9142C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,59)];
    init_test(&cd_S9142C2, buf);
    S9142C2 *dp, &lv = *(dp=new (buf) S9142C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,232), "sizeof(S9142C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9142C2)");
    check_field_offset(lv, s9142c2f0, ABISELECT(8,4), "S9142C2.s9142c2f0");
    check_field_offset(lv, s9142c2f1, ABISELECT(24,12), "S9142C2.s9142c2f1");
    check_field_offset(lv, s9142c2f2, ABISELECT(32,16), "S9142C2.s9142c2f2");
    check_field_offset(lv, s9142c2f3, ABISELECT(40,20), "S9142C2.s9142c2f3");
    check_field_offset(lv, s9142c2f4, ABISELECT(52,32), "S9142C2.s9142c2f4");
    set_bf_and_test(lv, s9142c2f5, ABISELECT(64,44), 0, 1, 1, "S9142C2");
    set_bf_and_test(lv, s9142c2f6, ABISELECT(64,44), 1, 1, 1, "S9142C2");
    set_bf_and_test(lv, s9142c2f7, ABISELECT(64,44), 2, 1, 1, "S9142C2");
    check_field_offset(lv, s9142c2f8, ABISELECT(72,48), "S9142C2.s9142c2f8");
    check_field_offset(lv, s9142c2f9, ABISELECT(88,56), "S9142C2.s9142c2f9");
    check_field_offset(lv, s9142c2f10, ABISELECT(120,76), "S9142C2.s9142c2f10");
    check_field_offset(lv, s9142c2f11, ABISELECT(128,80), "S9142C2.s9142c2f11");
    check_field_offset(lv, s9142c2f12, ABISELECT(136,84), "S9142C2.s9142c2f12");
    check_field_offset(lv, s9142c2f13, ABISELECT(168,104), "S9142C2.s9142c2f13");
    check_field_offset(lv, s9142c2f14, ABISELECT(200,136), "S9142C2.s9142c2f14");
    check_field_offset(lv, s9142c2f15, ABISELECT(212,148), "S9142C2.s9142c2f15");
    check_field_offset(lv, s9142c2f16, ABISELECT(240,176), "S9142C2.s9142c2f16");
    check_field_offset(lv, s9142c2f17, ABISELECT(256,188), "S9142C2.s9142c2f17");
    check_field_offset(lv, s9142c2f18, ABISELECT(264,196), "S9142C2.s9142c2f18");
    check_field_offset(lv, s9142c2f19, ABISELECT(272,200), "S9142C2.s9142c2f19");
    check_field_offset(lv, s9142c2f20, ABISELECT(280,204), "S9142C2.s9142c2f20");
    check_field_offset(lv, s9142c2f21, ABISELECT(296,216), "S9142C2.s9142c2f21");
    check_field_offset(lv, s9142c2f22, ABISELECT(304,224), "S9142C2.s9142c2f22");
    check_field_offset(lv, s9142c2f23, ABISELECT(312,228), "S9142C2.s9142c2f23");
    test_class_info(&lv, &cd_S9142C2);
    dp->~S9142C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9142C2(Test_S9142C2, "S9142C2", ABISELECT(320,232));

#else // __cplusplus

extern void _ZN7S9142C2C1Ev();
extern void _ZN7S9142C2D1Ev();
Name_Map name_map_S9142C2[] = {
  NSPAIR(_ZN7S9142C2C1Ev),
  NSPAIR(_ZN7S9142C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9142C2[];
extern void _ZN7S9142C2D1Ev();
extern void _ZN7S9142C2D0Ev();
extern void _ZN7S9142C23v24Ev();
extern void _ZN7S9142C23v25Ev();
extern void _ZN7S9142C23v26Ev();
extern void _ZN7S9142C23v27Ev();
extern void _ZN7S9142C23v28Ev();
extern void _ZN7S9142C23v29Ev();
extern void _ZN7S9142C23v30Ev();
extern void _ZN7S9142C23v31Ev();
extern void _ZN7S9142C23v32Ev();
extern void _ZN7S9142C23v33Ev();
extern void _ZN7S9142C23v34Ev();
extern void _ZN7S9142C23v35Ev();
extern void _ZN7S9142C23v36Ev();
extern void _ZN7S9142C23v37Ev();
extern void _ZN7S9142C23v38Ev();
extern void _ZN7S9142C23v39Ev();
extern void _ZN7S9142C23v40Ev();
extern void _ZN7S9142C23v41Ev();
extern void _ZN7S9142C23v42Ev();
extern void _ZN7S9142C23v43Ev();
extern void _ZN7S9142C23v44Ev();
extern void _ZN7S9142C23v45Ev();
extern void _ZN7S9142C23v46Ev();
extern void _ZN7S9142C23v47Ev();
extern void _ZN7S9142C23v48Ev();
extern void _ZN7S9142C23v49Ev();
extern void _ZN7S9142C23v50Ev();
extern void _ZN7S9142C23v51Ev();
extern void _ZN7S9142C23v52Ev();
extern void _ZN7S9142C23v53Ev();
extern void _ZN7S9142C23v54Ev();
extern void _ZN7S9142C23v55Ev();
extern void _ZN7S9142C23v56Ev();
extern void _ZN7S9142C23v57Ev();
extern void _ZN7S9142C23v58Ev();
static  VTBL_ENTRY vtc_S9142C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9142C2[0]),
  (VTBL_ENTRY)&_ZN7S9142C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9142C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v24Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v25Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v26Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v27Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v28Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v29Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v30Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v31Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v32Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v33Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v34Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v35Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v36Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v37Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v38Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v39Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v40Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v41Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v42Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v43Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v44Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v45Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v46Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v47Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v48Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v49Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v50Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v51Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v52Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v53Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v54Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v55Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v56Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v57Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v58Ev,
};
extern VTBL_ENTRY _ZTI7S9142C2[];
extern  VTBL_ENTRY _ZTV7S9142C2[];
Class_Descriptor cd_S9142C2 = {  "S9142C2", // class name
  0,0,//no base classes
  &(vtc_S9142C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,232), // object size
  NSPAIRA(_ZTI7S9142C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9142C2),39, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9142C1  : S9142C2 {
  void *s9142c1f0[5];
  int s9142c1f1;
  void *s9142c1f2;
  int s9142c1f3[6];
  ::S3214C12 s9142c1f4;
  int s9142c1f5;
  void *s9142c1f6[2];
  ::S3214C6_nt s9142c1f7;
  ::S3214C6_nt s9142c1f8;
  ::S3214C18 s9142c1f9;
  ::S3214C18 s9142c1f10;
  ::S3214C6_nt s9142c1f11;
  ::S3214C6_nt s9142c1f12;
  ::S3214C18 s9142c1f13;
  void *s9142c1f14[2];
  ::S197C26 s9142c1f15;
  ::S3214C6_nt s9142c1f16;
  ::S3214C6_nt s9142c1f17;
  int s9142c1f18[2];
  ::S3214C12 s9142c1f19;
  virtual  ~S9142C1(); // _ZN7S9142C1D1Ev
  virtual void  v1(); // _ZN7S9142C12v1Ev
  virtual void  v2(); // _ZN7S9142C12v2Ev
  virtual void  v3(); // _ZN7S9142C12v3Ev
  virtual void  v4(); // _ZN7S9142C12v4Ev
  virtual void  v5(); // _ZN7S9142C12v5Ev
  virtual void  v6(); // _ZN7S9142C12v6Ev
  virtual void  v7(); // _ZN7S9142C12v7Ev
  virtual void  v8(); // _ZN7S9142C12v8Ev
  virtual void  v9(); // _ZN7S9142C12v9Ev
  virtual void  v10(); // _ZN7S9142C13v10Ev
  virtual void  v11(); // _ZN7S9142C13v11Ev
  virtual void  v12(); // _ZN7S9142C13v12Ev
  virtual void  v13(); // _ZN7S9142C13v13Ev
  virtual void  v14(); // _ZN7S9142C13v14Ev
  virtual void  v15(); // _ZN7S9142C13v15Ev
  virtual void  v16(); // _ZN7S9142C13v16Ev
  virtual void  v17(); // _ZN7S9142C13v17Ev
  virtual void  v18(); // _ZN7S9142C13v18Ev
  virtual void  v19(); // _ZN7S9142C13v19Ev
  virtual void  v20(); // _ZN7S9142C13v20Ev
  virtual void  v21(); // _ZN7S9142C13v21Ev
  virtual void  v22(); // _ZN7S9142C13v22Ev
  virtual void  v23(); // _ZN7S9142C13v23Ev
  S9142C1(); // tgen
};
//SIG(1 S9142C1) C1{ BC2{ vd 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 Fp[2] Fi Fp Fi[3] FC3{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC4 Fi[8] FC3 FC8{ m FC3 FC3 Fc} FC6 Fi[2] Fp Fi FC9{ BC7} Fi[2] Fp Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp[5] Fi Fp Fi[6] FC10{ BC7} Fi Fp[2] FC11{ BC7} FC11 FC9 FC9 FC11 FC11 FC9 Fp[2] FC12{ BC7} FC11 FC11 Fi[2] FC10}


 S9142C1 ::~S9142C1(){ note_dtor("S9142C1", this);}
void  S9142C1 ::v1(){vfunc_called(this, "_ZN7S9142C12v1Ev");}
void  S9142C1 ::v2(){vfunc_called(this, "_ZN7S9142C12v2Ev");}
void  S9142C1 ::v3(){vfunc_called(this, "_ZN7S9142C12v3Ev");}
void  S9142C1 ::v4(){vfunc_called(this, "_ZN7S9142C12v4Ev");}
void  S9142C1 ::v5(){vfunc_called(this, "_ZN7S9142C12v5Ev");}
void  S9142C1 ::v6(){vfunc_called(this, "_ZN7S9142C12v6Ev");}
void  S9142C1 ::v7(){vfunc_called(this, "_ZN7S9142C12v7Ev");}
void  S9142C1 ::v8(){vfunc_called(this, "_ZN7S9142C12v8Ev");}
void  S9142C1 ::v9(){vfunc_called(this, "_ZN7S9142C12v9Ev");}
void  S9142C1 ::v10(){vfunc_called(this, "_ZN7S9142C13v10Ev");}
void  S9142C1 ::v11(){vfunc_called(this, "_ZN7S9142C13v11Ev");}
void  S9142C1 ::v12(){vfunc_called(this, "_ZN7S9142C13v12Ev");}
void  S9142C1 ::v13(){vfunc_called(this, "_ZN7S9142C13v13Ev");}
void  S9142C1 ::v14(){vfunc_called(this, "_ZN7S9142C13v14Ev");}
void  S9142C1 ::v15(){vfunc_called(this, "_ZN7S9142C13v15Ev");}
void  S9142C1 ::v16(){vfunc_called(this, "_ZN7S9142C13v16Ev");}
void  S9142C1 ::v17(){vfunc_called(this, "_ZN7S9142C13v17Ev");}
void  S9142C1 ::v18(){vfunc_called(this, "_ZN7S9142C13v18Ev");}
void  S9142C1 ::v19(){vfunc_called(this, "_ZN7S9142C13v19Ev");}
void  S9142C1 ::v20(){vfunc_called(this, "_ZN7S9142C13v20Ev");}
void  S9142C1 ::v21(){vfunc_called(this, "_ZN7S9142C13v21Ev");}
void  S9142C1 ::v22(){vfunc_called(this, "_ZN7S9142C13v22Ev");}
void  S9142C1 ::v23(){vfunc_called(this, "_ZN7S9142C13v23Ev");}
S9142C1 ::S9142C1(){ note_ctor("S9142C1", this);} // tgen

static void Test_S9142C1()
{
  extern Class_Descriptor cd_S9142C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(81,115)];
    init_test(&cd_S9142C1, buf);
    S9142C1 *dp, &lv = *(dp=new (buf) S9142C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(640,456), "sizeof(S9142C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9142C1)");
    check_base_class_offset(lv, (S9142C2*), 0, "S9142C1");
    check_field_offset(lv, s9142c1f0, ABISELECT(320,232), "S9142C1.s9142c1f0");
    check_field_offset(lv, s9142c1f1, ABISELECT(360,252), "S9142C1.s9142c1f1");
    check_field_offset(lv, s9142c1f2, ABISELECT(368,256), "S9142C1.s9142c1f2");
    check_field_offset(lv, s9142c1f3, ABISELECT(376,260), "S9142C1.s9142c1f3");
    check_field_offset(lv, s9142c1f4, ABISELECT(400,284), "S9142C1.s9142c1f4");
    check_field_offset(lv, s9142c1f5, ABISELECT(416,296), "S9142C1.s9142c1f5");
    check_field_offset(lv, s9142c1f6, ABISELECT(424,300), "S9142C1.s9142c1f6");
    check_field_offset(lv, s9142c1f7, ABISELECT(440,308), "S9142C1.s9142c1f7");
    check_field_offset(lv, s9142c1f8, ABISELECT(456,320), "S9142C1.s9142c1f8");
    check_field_offset(lv, s9142c1f9, ABISELECT(472,332), "S9142C1.s9142c1f9");
    check_field_offset(lv, s9142c1f10, ABISELECT(488,344), "S9142C1.s9142c1f10");
    check_field_offset(lv, s9142c1f11, ABISELECT(504,356), "S9142C1.s9142c1f11");
    check_field_offset(lv, s9142c1f12, ABISELECT(520,368), "S9142C1.s9142c1f12");
    check_field_offset(lv, s9142c1f13, ABISELECT(536,380), "S9142C1.s9142c1f13");
    check_field_offset(lv, s9142c1f14, ABISELECT(552,392), "S9142C1.s9142c1f14");
    check_field_offset(lv, s9142c1f15, ABISELECT(568,400), "S9142C1.s9142c1f15");
    check_field_offset(lv, s9142c1f16, ABISELECT(584,412), "S9142C1.s9142c1f16");
    check_field_offset(lv, s9142c1f17, ABISELECT(600,424), "S9142C1.s9142c1f17");
    check_field_offset(lv, s9142c1f18, ABISELECT(616,436), "S9142C1.s9142c1f18");
    check_field_offset(lv, s9142c1f19, ABISELECT(624,444), "S9142C1.s9142c1f19");
    test_class_info(&lv, &cd_S9142C1);
    dp->~S9142C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9142C1(Test_S9142C1, "S9142C1", ABISELECT(640,456));

#else // __cplusplus

extern void _ZN7S9142C1C1Ev();
extern void _ZN7S9142C1D1Ev();
Name_Map name_map_S9142C1[] = {
  NSPAIR(_ZN7S9142C1C1Ev),
  NSPAIR(_ZN7S9142C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9142C2;
extern VTBL_ENTRY _ZTI7S9142C2[];
extern  VTBL_ENTRY _ZTV7S9142C2[];
static Base_Class bases_S9142C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9142C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9142C1[];
extern void _ZN7S9142C1D1Ev();
extern void _ZN7S9142C1D0Ev();
extern void _ZN7S9142C23v24Ev();
extern void _ZN7S9142C23v25Ev();
extern void _ZN7S9142C23v26Ev();
extern void _ZN7S9142C23v27Ev();
extern void _ZN7S9142C23v28Ev();
extern void _ZN7S9142C23v29Ev();
extern void _ZN7S9142C23v30Ev();
extern void _ZN7S9142C23v31Ev();
extern void _ZN7S9142C23v32Ev();
extern void _ZN7S9142C23v33Ev();
extern void _ZN7S9142C23v34Ev();
extern void _ZN7S9142C23v35Ev();
extern void _ZN7S9142C23v36Ev();
extern void _ZN7S9142C23v37Ev();
extern void _ZN7S9142C23v38Ev();
extern void _ZN7S9142C23v39Ev();
extern void _ZN7S9142C23v40Ev();
extern void _ZN7S9142C23v41Ev();
extern void _ZN7S9142C23v42Ev();
extern void _ZN7S9142C23v43Ev();
extern void _ZN7S9142C23v44Ev();
extern void _ZN7S9142C23v45Ev();
extern void _ZN7S9142C23v46Ev();
extern void _ZN7S9142C23v47Ev();
extern void _ZN7S9142C23v48Ev();
extern void _ZN7S9142C23v49Ev();
extern void _ZN7S9142C23v50Ev();
extern void _ZN7S9142C23v51Ev();
extern void _ZN7S9142C23v52Ev();
extern void _ZN7S9142C23v53Ev();
extern void _ZN7S9142C23v54Ev();
extern void _ZN7S9142C23v55Ev();
extern void _ZN7S9142C23v56Ev();
extern void _ZN7S9142C23v57Ev();
extern void _ZN7S9142C23v58Ev();
extern void _ZN7S9142C12v1Ev();
extern void _ZN7S9142C12v2Ev();
extern void _ZN7S9142C12v3Ev();
extern void _ZN7S9142C12v4Ev();
extern void _ZN7S9142C12v5Ev();
extern void _ZN7S9142C12v6Ev();
extern void _ZN7S9142C12v7Ev();
extern void _ZN7S9142C12v8Ev();
extern void _ZN7S9142C12v9Ev();
extern void _ZN7S9142C13v10Ev();
extern void _ZN7S9142C13v11Ev();
extern void _ZN7S9142C13v12Ev();
extern void _ZN7S9142C13v13Ev();
extern void _ZN7S9142C13v14Ev();
extern void _ZN7S9142C13v15Ev();
extern void _ZN7S9142C13v16Ev();
extern void _ZN7S9142C13v17Ev();
extern void _ZN7S9142C13v18Ev();
extern void _ZN7S9142C13v19Ev();
extern void _ZN7S9142C13v20Ev();
extern void _ZN7S9142C13v21Ev();
extern void _ZN7S9142C13v22Ev();
extern void _ZN7S9142C13v23Ev();
static  VTBL_ENTRY vtc_S9142C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9142C1[0]),
  (VTBL_ENTRY)&_ZN7S9142C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9142C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v24Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v25Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v26Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v27Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v28Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v29Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v30Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v31Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v32Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v33Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v34Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v35Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v36Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v37Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v38Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v39Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v40Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v41Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v42Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v43Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v44Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v45Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v46Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v47Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v48Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v49Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v50Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v51Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v52Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v53Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v54Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v55Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v56Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v57Ev,
  (VTBL_ENTRY)&_ZN7S9142C23v58Ev,
  (VTBL_ENTRY)&_ZN7S9142C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9142C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9142C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9142C12v4Ev,
  (VTBL_ENTRY)&_ZN7S9142C12v5Ev,
  (VTBL_ENTRY)&_ZN7S9142C12v6Ev,
  (VTBL_ENTRY)&_ZN7S9142C12v7Ev,
  (VTBL_ENTRY)&_ZN7S9142C12v8Ev,
  (VTBL_ENTRY)&_ZN7S9142C12v9Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v10Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v11Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v12Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v13Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v14Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v15Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v16Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v17Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v18Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v19Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v20Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v21Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v22Ev,
  (VTBL_ENTRY)&_ZN7S9142C13v23Ev,
};
extern VTBL_ENTRY _ZTI7S9142C1[];
extern  VTBL_ENTRY _ZTV7S9142C1[];
Class_Descriptor cd_S9142C1 = {  "S9142C1", // class name
  bases_S9142C1, 1,
  &(vtc_S9142C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(640,456), // object size
  NSPAIRA(_ZTI7S9142C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9142C1),62, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9141C8_nt  {
  void *s9141c8f0;
  void  mf9141c8(); // _ZN10S9141C8_nt8mf9141c8Ev
};
//SIG(-1 S9141C8_nt) C1{ m Fp}


void  S9141C8_nt ::mf9141c8(){}

//skip512 S9141C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9141C2  {
  ::S3214C23 s9141c2f0;
  ::S675C20_nt s9141c2f1;
  int s9141c2f2;
  ::S9141C8_nt s9141c2f3;
  ::S3444C17_nt s9141c2f4;
  ::S3214C18 s9141c2f5;
  ::S3214C18 s9141c2f6;
  ::S3214C18 s9141c2f7;
  ::S3214C18 s9141c2f8;
  ::S3214C12 s9141c2f9;
  int s9141c2f10[6];
  virtual  ~S9141C2(); // _ZN7S9141C2D1Ev
  virtual void  v24(); // _ZN7S9141C23v24Ev
  virtual void  v25(); // _ZN7S9141C23v25Ev
  virtual void  v26(); // _ZN7S9141C23v26Ev
  virtual void  v27(); // _ZN7S9141C23v27Ev
  virtual void  v28(); // _ZN7S9141C23v28Ev
  virtual void  v29(); // _ZN7S9141C23v29Ev
  virtual void  v30(); // _ZN7S9141C23v30Ev
  virtual void  v31(); // _ZN7S9141C23v31Ev
  virtual void  v32(); // _ZN7S9141C23v32Ev
  virtual void  v33(); // _ZN7S9141C23v33Ev
  virtual void  v34(); // _ZN7S9141C23v34Ev
  virtual void  v35(); // _ZN7S9141C23v35Ev
  virtual void  v36(); // _ZN7S9141C23v36Ev
  virtual void  v37(); // _ZN7S9141C23v37Ev
  virtual void  v38(); // _ZN7S9141C23v38Ev
  virtual void  v39(); // _ZN7S9141C23v39Ev
  virtual void  v40(); // _ZN7S9141C23v40Ev
  virtual void  v41(); // _ZN7S9141C23v41Ev
  virtual void  v42(); // _ZN7S9141C23v42Ev
  virtual void  v43(); // _ZN7S9141C23v43Ev
  virtual void  v44(); // _ZN7S9141C23v44Ev
  virtual void  v45(); // _ZN7S9141C23v45Ev
  virtual void  v46(); // _ZN7S9141C23v46Ev
  virtual void  v47(); // _ZN7S9141C23v47Ev
  virtual void  v48(); // _ZN7S9141C23v48Ev
  virtual void  v49(); // _ZN7S9141C23v49Ev
  virtual void  v50(); // _ZN7S9141C23v50Ev
  virtual void  v51(); // _ZN7S9141C23v51Ev
  virtual void  v52(); // _ZN7S9141C23v52Ev
  virtual void  v53(); // _ZN7S9141C23v53Ev
  virtual void  v54(); // _ZN7S9141C23v54Ev
  virtual void  v55(); // _ZN7S9141C23v55Ev
  S9141C2(); // tgen
};
//SIG(-1 S9141C2) 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 FC2{ BC3{ m Fp Fi[2]}} FC4{ BC5{ m FC2 Fp Fi}} Fi FC6{ m Fp} FC7{ m Fi[4]} FC8{ BC3} FC8 FC8 FC8 FC9{ BC3} Fi[6]}


 S9141C2 ::~S9141C2(){ note_dtor("S9141C2", this);}
void  S9141C2 ::v24(){vfunc_called(this, "_ZN7S9141C23v24Ev");}
void  S9141C2 ::v25(){vfunc_called(this, "_ZN7S9141C23v25Ev");}
void  S9141C2 ::v26(){vfunc_called(this, "_ZN7S9141C23v26Ev");}
void  S9141C2 ::v27(){vfunc_called(this, "_ZN7S9141C23v27Ev");}
void  S9141C2 ::v28(){vfunc_called(this, "_ZN7S9141C23v28Ev");}
void  S9141C2 ::v29(){vfunc_called(this, "_ZN7S9141C23v29Ev");}
void  S9141C2 ::v30(){vfunc_called(this, "_ZN7S9141C23v30Ev");}
void  S9141C2 ::v31(){vfunc_called(this, "_ZN7S9141C23v31Ev");}
void  S9141C2 ::v32(){vfunc_called(this, "_ZN7S9141C23v32Ev");}
void  S9141C2 ::v33(){vfunc_called(this, "_ZN7S9141C23v33Ev");}
void  S9141C2 ::v34(){vfunc_called(this, "_ZN7S9141C23v34Ev");}
void  S9141C2 ::v35(){vfunc_called(this, "_ZN7S9141C23v35Ev");}
void  S9141C2 ::v36(){vfunc_called(this, "_ZN7S9141C23v36Ev");}
void  S9141C2 ::v37(){vfunc_called(this, "_ZN7S9141C23v37Ev");}
void  S9141C2 ::v38(){vfunc_called(this, "_ZN7S9141C23v38Ev");}
void  S9141C2 ::v39(){vfunc_called(this, "_ZN7S9141C23v39Ev");}
void  S9141C2 ::v40(){vfunc_called(this, "_ZN7S9141C23v40Ev");}
void  S9141C2 ::v41(){vfunc_called(this, "_ZN7S9141C23v41Ev");}
void  S9141C2 ::v42(){vfunc_called(this, "_ZN7S9141C23v42Ev");}
void  S9141C2 ::v43(){vfunc_called(this, "_ZN7S9141C23v43Ev");}
void  S9141C2 ::v44(){vfunc_called(this, "_ZN7S9141C23v44Ev");}
void  S9141C2 ::v45(){vfunc_called(this, "_ZN7S9141C23v45Ev");}
void  S9141C2 ::v46(){vfunc_called(this, "_ZN7S9141C23v46Ev");}
void  S9141C2 ::v47(){vfunc_called(this, "_ZN7S9141C23v47Ev");}
void  S9141C2 ::v48(){vfunc_called(this, "_ZN7S9141C23v48Ev");}
void  S9141C2 ::v49(){vfunc_called(this, "_ZN7S9141C23v49Ev");}
void  S9141C2 ::v50(){vfunc_called(this, "_ZN7S9141C23v50Ev");}
void  S9141C2 ::v51(){vfunc_called(this, "_ZN7S9141C23v51Ev");}
void  S9141C2 ::v52(){vfunc_called(this, "_ZN7S9141C23v52Ev");}
void  S9141C2 ::v53(){vfunc_called(this, "_ZN7S9141C23v53Ev");}
void  S9141C2 ::v54(){vfunc_called(this, "_ZN7S9141C23v54Ev");}
void  S9141C2 ::v55(){vfunc_called(this, "_ZN7S9141C23v55Ev");}
S9141C2 ::S9141C2(){ note_ctor("S9141C2", this);} // tgen

static void Test_S9141C2()
{
  extern Class_Descriptor cd_S9141C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,37)];
    init_test(&cd_S9141C2, buf);
    S9141C2 *dp, &lv = *(dp=new (buf) S9141C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S9141C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9141C2)");
    check_field_offset(lv, s9141c2f0, ABISELECT(8,4), "S9141C2.s9141c2f0");
    check_field_offset(lv, s9141c2f1, ABISELECT(24,16), "S9141C2.s9141c2f1");
    check_field_offset(lv, s9141c2f2, ABISELECT(56,36), "S9141C2.s9141c2f2");
    check_field_offset(lv, s9141c2f3, ABISELECT(64,40), "S9141C2.s9141c2f3");
    check_field_offset(lv, s9141c2f4, ABISELECT(72,44), "S9141C2.s9141c2f4");
    check_field_offset(lv, s9141c2f5, ABISELECT(88,60), "S9141C2.s9141c2f5");
    check_field_offset(lv, s9141c2f6, ABISELECT(104,72), "S9141C2.s9141c2f6");
    check_field_offset(lv, s9141c2f7, ABISELECT(120,84), "S9141C2.s9141c2f7");
    check_field_offset(lv, s9141c2f8, ABISELECT(136,96), "S9141C2.s9141c2f8");
    check_field_offset(lv, s9141c2f9, ABISELECT(152,108), "S9141C2.s9141c2f9");
    check_field_offset(lv, s9141c2f10, ABISELECT(168,120), "S9141C2.s9141c2f10");
    test_class_info(&lv, &cd_S9141C2);
    dp->~S9141C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9141C2(Test_S9141C2, "S9141C2", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN7S9141C2C1Ev();
extern void _ZN7S9141C2D1Ev();
Name_Map name_map_S9141C2[] = {
  NSPAIR(_ZN7S9141C2C1Ev),
  NSPAIR(_ZN7S9141C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9141C2[];
extern void _ZN7S9141C2D1Ev();
extern void _ZN7S9141C2D0Ev();
extern void _ZN7S9141C23v24Ev();
extern void _ZN7S9141C23v25Ev();
extern void _ZN7S9141C23v26Ev();
extern void _ZN7S9141C23v27Ev();
extern void _ZN7S9141C23v28Ev();
extern void _ZN7S9141C23v29Ev();
extern void _ZN7S9141C23v30Ev();
extern void _ZN7S9141C23v31Ev();
extern void _ZN7S9141C23v32Ev();
extern void _ZN7S9141C23v33Ev();
extern void _ZN7S9141C23v34Ev();
extern void _ZN7S9141C23v35Ev();
extern void _ZN7S9141C23v36Ev();
extern void _ZN7S9141C23v37Ev();
extern void _ZN7S9141C23v38Ev();
extern void _ZN7S9141C23v39Ev();
extern void _ZN7S9141C23v40Ev();
extern void _ZN7S9141C23v41Ev();
extern void _ZN7S9141C23v42Ev();
extern void _ZN7S9141C23v43Ev();
extern void _ZN7S9141C23v44Ev();
extern void _ZN7S9141C23v45Ev();
extern void _ZN7S9141C23v46Ev();
extern void _ZN7S9141C23v47Ev();
extern void _ZN7S9141C23v48Ev();
extern void _ZN7S9141C23v49Ev();
extern void _ZN7S9141C23v50Ev();
extern void _ZN7S9141C23v51Ev();
extern void _ZN7S9141C23v52Ev();
extern void _ZN7S9141C23v53Ev();
extern void _ZN7S9141C23v54Ev();
extern void _ZN7S9141C23v55Ev();
static  VTBL_ENTRY vtc_S9141C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9141C2[0]),
  (VTBL_ENTRY)&_ZN7S9141C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9141C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v24Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v25Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v26Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v27Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v28Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v29Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v30Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v31Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v32Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v33Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v34Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v35Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v36Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v37Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v38Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v39Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v40Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v41Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v42Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v43Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v44Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v45Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v46Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v47Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v48Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v49Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v50Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v51Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v52Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v53Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v54Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v55Ev,
};
extern VTBL_ENTRY _ZTI7S9141C2[];
extern  VTBL_ENTRY _ZTV7S9141C2[];
Class_Descriptor cd_S9141C2 = {  "S9141C2", // class name
  0,0,//no base classes
  &(vtc_S9141C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI7S9141C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9141C2),36, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9141C12_nt  {
  virtual void  v56(); // _ZN11S9141C12_nt3v56Ev
  virtual void  v57(); // _ZN11S9141C12_nt3v57Ev
  virtual void  v58(); // _ZN11S9141C12_nt3v58Ev
  virtual void  v59(); // _ZN11S9141C12_nt3v59Ev
  ~S9141C12_nt(); // tgen
  S9141C12_nt(); // tgen
};
//SIG(-1 S9141C12_nt) C1{ v1 v2 v3 v4}


void  S9141C12_nt ::v56(){vfunc_called(this, "_ZN11S9141C12_nt3v56Ev");}
void  S9141C12_nt ::v57(){vfunc_called(this, "_ZN11S9141C12_nt3v57Ev");}
void  S9141C12_nt ::v58(){vfunc_called(this, "_ZN11S9141C12_nt3v58Ev");}
void  S9141C12_nt ::v59(){vfunc_called(this, "_ZN11S9141C12_nt3v59Ev");}
S9141C12_nt ::~S9141C12_nt(){ note_dtor("S9141C12_nt", this);} // tgen
S9141C12_nt ::S9141C12_nt(){ note_ctor("S9141C12_nt", this);} // tgen

//skip512 S9141C12_nt

#else // __cplusplus

extern void _ZN11S9141C12_ntC1Ev();
extern void _ZN11S9141C12_ntD1Ev();
Name_Map name_map_S9141C12_nt[] = {
  NSPAIR(_ZN11S9141C12_ntC1Ev),
  NSPAIR(_ZN11S9141C12_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S9141C12_nt[];
extern void _ZN11S9141C12_nt3v56Ev();
extern void _ZN11S9141C12_nt3v57Ev();
extern void _ZN11S9141C12_nt3v58Ev();
extern void _ZN11S9141C12_nt3v59Ev();
static  VTBL_ENTRY vtc_S9141C12_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9141C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S9141C12_nt3v56Ev,
  (VTBL_ENTRY)&_ZN11S9141C12_nt3v57Ev,
  (VTBL_ENTRY)&_ZN11S9141C12_nt3v58Ev,
  (VTBL_ENTRY)&_ZN11S9141C12_nt3v59Ev,
};
extern VTBL_ENTRY _ZTI11S9141C12_nt[];
VTBL_ENTRY *P__ZTI11S9141C12_nt = _ZTI11S9141C12_nt; 
extern  VTBL_ENTRY _ZTV11S9141C12_nt[];
Class_Descriptor cd_S9141C12_nt = {  "S9141C12_nt", // class name
  0,0,//no base classes
  &(vtc_S9141C12_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S9141C12_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S9141C12_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  S9141C17  {
  __tsi64 s9141c17f0;
  int s9141c17f1;
  void  mf9141c17(); // _ZN8S9141C179mf9141c17Ev
};
//SIG(-1 S9141C17) C1{ m FL Fi}


void  S9141C17 ::mf9141c17(){}

static void Test_S9141C17()
{
  {
    init_simple_test("S9141C17");
    S9141C17 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S9141C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9141C17)");
    check_field_offset(lv, s9141c17f0, 0, "S9141C17.s9141c17f0");
    check_field_offset(lv, s9141c17f1, 8, "S9141C17.s9141c17f1");
  }
}
static Arrange_To_Call_Me vS9141C17(Test_S9141C17, "S9141C17", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S9141C20_nt

#else // __cplusplus

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



//skip512 S9141C28_nt

#else // __cplusplus

extern Class_Descriptor cd_S3214C7_nt;
static Base_Class bases_S9141C28_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S9141C27_nt  {
  ::S9141C28_nt s9141c27f0;
  void *s9141c27f1;
  int s9141c27f2;
  void  mf9141c27(); // _ZN11S9141C27_nt9mf9141c27Ev
};
//SIG(-1 S9141C27_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fp Fi}


void  S9141C27_nt ::mf9141c27(){}

//skip512 S9141C27_nt

#else // __cplusplus

Class_Descriptor cd_S9141C27_nt = {  "S9141C27_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  S9141C26  : S9141C27_nt {
};
//SIG(-1 S9141C26) C1{ BC2{ m FC3{ BC4{ m Fp Fi[2]}} Fp Fi}}



static void Test_S9141C26()
{
  extern Class_Descriptor cd_S9141C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S9141C26, buf);
    S9141C26 &lv = *(new (buf) S9141C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S9141C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9141C26)");
    check_base_class_offset(lv, (S9141C27_nt*), 0, "S9141C26");
    test_class_info(&lv, &cd_S9141C26);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9141C26(Test_S9141C26, "S9141C26", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S9141C27_nt;
static Base_Class bases_S9141C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9141C27_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S9141C26 = {  "S9141C26", // class name
  bases_S9141C26, 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  S9141C1  : S9141C2 , S9141C12_nt {
  ::S3214C6_nt s9141c1f0;
  ::S23C16_nt s9141c1f1;
  void *s9141c1f2;
  ::S9141C17 s9141c1f3;
  ::S197C26 s9141c1f4;
  ::S197C22 s9141c1f5;
  unsigned int s9141c1f6:1;
  ::S9141C20_nt s9141c1f7;
  ::S9141C20_nt s9141c1f8;
  ::S9141C26 s9141c1f9;
  virtual void  v1(); // _ZN7S9141C12v1Ev
  virtual void  v2(); // _ZN7S9141C12v2Ev
  virtual void  v3(); // _ZN7S9141C12v3Ev
  virtual void  v4(); // _ZN7S9141C12v4Ev
  virtual void  v5(); // _ZN7S9141C12v5Ev
  virtual void  v6(); // _ZN7S9141C12v6Ev
  virtual void  v7(); // _ZN7S9141C12v7Ev
  virtual void  v8(); // _ZN7S9141C12v8Ev
  virtual void  v9(); // _ZN7S9141C12v9Ev
  virtual void  v10(); // _ZN7S9141C13v10Ev
  virtual void  v11(); // _ZN7S9141C13v11Ev
  virtual void  v12(); // _ZN7S9141C13v12Ev
  virtual void  v13(); // _ZN7S9141C13v13Ev
  virtual void  v14(); // _ZN7S9141C13v14Ev
  virtual void  v15(); // _ZN7S9141C13v15Ev
  virtual void  v16(); // _ZN7S9141C13v16Ev
  virtual void  v17(); // _ZN7S9141C13v17Ev
  virtual void  v18(); // _ZN7S9141C13v18Ev
  virtual void  v19(); // _ZN7S9141C13v19Ev
  virtual void  v20(); // _ZN7S9141C13v20Ev
  virtual void  v21(); // _ZN7S9141C13v21Ev
  virtual void  v22(); // _ZN7S9141C13v22Ev
  virtual void  v23(); // _ZN7S9141C13v23Ev
  ~S9141C1(); // tgen
  S9141C1(); // tgen
};
//SIG(1 S9141C1) C1{ BC2{ vd 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 FC3{ BC4{ m Fp Fi[2]}} FC5{ BC6{ m FC3 Fp Fi}} Fi FC7{ m Fp} FC8{ m Fi[4]} FC9{ BC4} FC9 FC9 FC9 FC10{ BC4} Fi[6]} BC11{ v56 v57 v58 v59} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 FC12{ BC4} FC13{ BC6} Fp FC14{ m FL Fi} FC15{ BC4} FC16{ BC4} Fi:1 FC17{ BC6} FC17 FC18{ BC19{ m FC20{ BC4} Fp Fi}}}


void  S9141C1 ::v1(){vfunc_called(this, "_ZN7S9141C12v1Ev");}
void  S9141C1 ::v2(){vfunc_called(this, "_ZN7S9141C12v2Ev");}
void  S9141C1 ::v3(){vfunc_called(this, "_ZN7S9141C12v3Ev");}
void  S9141C1 ::v4(){vfunc_called(this, "_ZN7S9141C12v4Ev");}
void  S9141C1 ::v5(){vfunc_called(this, "_ZN7S9141C12v5Ev");}
void  S9141C1 ::v6(){vfunc_called(this, "_ZN7S9141C12v6Ev");}
void  S9141C1 ::v7(){vfunc_called(this, "_ZN7S9141C12v7Ev");}
void  S9141C1 ::v8(){vfunc_called(this, "_ZN7S9141C12v8Ev");}
void  S9141C1 ::v9(){vfunc_called(this, "_ZN7S9141C12v9Ev");}
void  S9141C1 ::v10(){vfunc_called(this, "_ZN7S9141C13v10Ev");}
void  S9141C1 ::v11(){vfunc_called(this, "_ZN7S9141C13v11Ev");}
void  S9141C1 ::v12(){vfunc_called(this, "_ZN7S9141C13v12Ev");}
void  S9141C1 ::v13(){vfunc_called(this, "_ZN7S9141C13v13Ev");}
void  S9141C1 ::v14(){vfunc_called(this, "_ZN7S9141C13v14Ev");}
void  S9141C1 ::v15(){vfunc_called(this, "_ZN7S9141C13v15Ev");}
void  S9141C1 ::v16(){vfunc_called(this, "_ZN7S9141C13v16Ev");}
void  S9141C1 ::v17(){vfunc_called(this, "_ZN7S9141C13v17Ev");}
void  S9141C1 ::v18(){vfunc_called(this, "_ZN7S9141C13v18Ev");}
void  S9141C1 ::v19(){vfunc_called(this, "_ZN7S9141C13v19Ev");}
void  S9141C1 ::v20(){vfunc_called(this, "_ZN7S9141C13v20Ev");}
void  S9141C1 ::v21(){vfunc_called(this, "_ZN7S9141C13v21Ev");}
void  S9141C1 ::v22(){vfunc_called(this, "_ZN7S9141C13v22Ev");}
void  S9141C1 ::v23(){vfunc_called(this, "_ZN7S9141C13v23Ev");}
S9141C1 ::~S9141C1(){ note_dtor("S9141C1", this);} // tgen
S9141C1 ::S9141C1(){ note_ctor("S9141C1", this);} // tgen

static void Test_S9141C1()
{
  extern Class_Descriptor cd_S9141C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(52,72)];
    init_test(&cd_S9141C1, buf);
    S9141C1 *dp, &lv = *(dp=new (buf) S9141C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(408,284), "sizeof(S9141C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9141C1)");
    check_base_class_offset(lv, (S9141C2*), 0, "S9141C1");
    check_base_class_offset(lv, (S9141C12_nt*), ABISELECT(192,144), "S9141C1");
    check_field_offset(lv, s9141c1f0, ABISELECT(200,148), "S9141C1.s9141c1f0");
    check_field_offset(lv, s9141c1f1, ABISELECT(216,160), "S9141C1.s9141c1f1");
    check_field_offset(lv, s9141c1f2, ABISELECT(248,180), "S9141C1.s9141c1f2");
    check_field_offset(lv, s9141c1f3, ABISELECT(256,184), "S9141C1.s9141c1f3");
    check_field_offset(lv, s9141c1f4, ABISELECT(272,196), "S9141C1.s9141c1f4");
    check_field_offset(lv, s9141c1f5, ABISELECT(288,208), "S9141C1.s9141c1f5");
    set_bf_and_test(lv, s9141c1f6, ABISELECT(304,220), 0, 1, 1, "S9141C1");
    check_field_offset(lv, s9141c1f7, ABISELECT(312,224), "S9141C1.s9141c1f7");
    check_field_offset(lv, s9141c1f8, ABISELECT(344,244), "S9141C1.s9141c1f8");
    check_field_offset(lv, s9141c1f9, ABISELECT(376,264), "S9141C1.s9141c1f9");
    test_class_info(&lv, &cd_S9141C1);
    dp->~S9141C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9141C1(Test_S9141C1, "S9141C1", ABISELECT(408,284));

#else // __cplusplus

extern void _ZN7S9141C1C1Ev();
extern void _ZN7S9141C1D1Ev();
Name_Map name_map_S9141C1[] = {
  NSPAIR(_ZN7S9141C1C1Ev),
  NSPAIR(_ZN7S9141C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9141C2;
extern VTBL_ENTRY _ZTI7S9141C2[];
extern  VTBL_ENTRY _ZTV7S9141C2[];
extern Class_Descriptor cd_S9141C12_nt;
extern VTBL_ENTRY _ZTI11S9141C12_nt[];
extern  VTBL_ENTRY _ZTV11S9141C12_nt[];
static Base_Class bases_S9141C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9141C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9141C12_nt,    ABISELECT(192,144), //bcp->offset
    59, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9141C1[];
extern void _ZN7S9141C1D1Ev();
extern void _ZN7S9141C1D0Ev();
extern void _ZN7S9141C23v24Ev();
extern void _ZN7S9141C23v25Ev();
extern void _ZN7S9141C23v26Ev();
extern void _ZN7S9141C23v27Ev();
extern void _ZN7S9141C23v28Ev();
extern void _ZN7S9141C23v29Ev();
extern void _ZN7S9141C23v30Ev();
extern void _ZN7S9141C23v31Ev();
extern void _ZN7S9141C23v32Ev();
extern void _ZN7S9141C23v33Ev();
extern void _ZN7S9141C23v34Ev();
extern void _ZN7S9141C23v35Ev();
extern void _ZN7S9141C23v36Ev();
extern void _ZN7S9141C23v37Ev();
extern void _ZN7S9141C23v38Ev();
extern void _ZN7S9141C23v39Ev();
extern void _ZN7S9141C23v40Ev();
extern void _ZN7S9141C23v41Ev();
extern void _ZN7S9141C23v42Ev();
extern void _ZN7S9141C23v43Ev();
extern void _ZN7S9141C23v44Ev();
extern void _ZN7S9141C23v45Ev();
extern void _ZN7S9141C23v46Ev();
extern void _ZN7S9141C23v47Ev();
extern void _ZN7S9141C23v48Ev();
extern void _ZN7S9141C23v49Ev();
extern void _ZN7S9141C23v50Ev();
extern void _ZN7S9141C23v51Ev();
extern void _ZN7S9141C23v52Ev();
extern void _ZN7S9141C23v53Ev();
extern void _ZN7S9141C23v54Ev();
extern void _ZN7S9141C23v55Ev();
extern void _ZN7S9141C12v1Ev();
extern void _ZN7S9141C12v2Ev();
extern void _ZN7S9141C12v3Ev();
extern void _ZN7S9141C12v4Ev();
extern void _ZN7S9141C12v5Ev();
extern void _ZN7S9141C12v6Ev();
extern void _ZN7S9141C12v7Ev();
extern void _ZN7S9141C12v8Ev();
extern void _ZN7S9141C12v9Ev();
extern void _ZN7S9141C13v10Ev();
extern void _ZN7S9141C13v11Ev();
extern void _ZN7S9141C13v12Ev();
extern void _ZN7S9141C13v13Ev();
extern void _ZN7S9141C13v14Ev();
extern void _ZN7S9141C13v15Ev();
extern void _ZN7S9141C13v16Ev();
extern void _ZN7S9141C13v17Ev();
extern void _ZN7S9141C13v18Ev();
extern void _ZN7S9141C13v19Ev();
extern void _ZN7S9141C13v20Ev();
extern void _ZN7S9141C13v21Ev();
extern void _ZN7S9141C13v22Ev();
extern void _ZN7S9141C13v23Ev();
extern void _ZN11S9141C12_nt3v56Ev();
extern void _ZN11S9141C12_nt3v57Ev();
extern void _ZN11S9141C12_nt3v58Ev();
extern void _ZN11S9141C12_nt3v59Ev();
static  VTBL_ENTRY vtc_S9141C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9141C1[0]),
  (VTBL_ENTRY)&_ZN7S9141C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9141C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v24Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v25Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v26Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v27Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v28Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v29Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v30Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v31Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v32Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v33Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v34Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v35Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v36Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v37Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v38Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v39Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v40Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v41Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v42Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v43Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v44Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v45Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v46Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v47Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v48Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v49Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v50Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v51Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v52Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v53Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v54Ev,
  (VTBL_ENTRY)&_ZN7S9141C23v55Ev,
  (VTBL_ENTRY)&_ZN7S9141C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9141C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9141C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9141C12v4Ev,
  (VTBL_ENTRY)&_ZN7S9141C12v5Ev,
  (VTBL_ENTRY)&_ZN7S9141C12v6Ev,
  (VTBL_ENTRY)&_ZN7S9141C12v7Ev,
  (VTBL_ENTRY)&_ZN7S9141C12v8Ev,
  (VTBL_ENTRY)&_ZN7S9141C12v9Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v10Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v11Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v12Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v13Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v14Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v15Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v16Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v17Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v18Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v19Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v20Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v21Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v22Ev,
  (VTBL_ENTRY)&_ZN7S9141C13v23Ev,
  ABISELECT(-192,-144),
  (VTBL_ENTRY)&(_ZTI7S9141C1[0]),
  (VTBL_ENTRY)&_ZN11S9141C12_nt3v56Ev,
  (VTBL_ENTRY)&_ZN11S9141C12_nt3v57Ev,
  (VTBL_ENTRY)&_ZN11S9141C12_nt3v58Ev,
  (VTBL_ENTRY)&_ZN11S9141C12_nt3v59Ev,
};
extern VTBL_ENTRY _ZTI7S9141C1[];
extern  VTBL_ENTRY _ZTV7S9141C1[];
Class_Descriptor cd_S9141C1 = {  "S9141C1", // class name
  bases_S9141C1, 2,
  &(vtc_S9141C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(408,284), // object size
  NSPAIRA(_ZTI7S9141C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9141C1),65, //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  S1383C4  {
  int s1383c4f0;
  __tsi64 s1383c4f1;
  void *s1383c4f2[4];
  int s1383c4f3[2];
  void *s1383c4f4;
  ::S3214C4_nt s1383c4f5;
  void *s1383c4f6[2];
  virtual  ~S1383C4(); // _ZN7S1383C4D1Ev
  virtual void  v3(); // _ZN7S1383C42v3Ev
  virtual void  v4(); // _ZN7S1383C42v4Ev
  virtual void  v5(); // _ZN7S1383C42v5Ev
  virtual void  v6(); // _ZN7S1383C42v6Ev
  virtual void  v7(); // _ZN7S1383C42v7Ev
  virtual void  v8(); // _ZN7S1383C42v8Ev
  virtual void  v9(); // _ZN7S1383C42v9Ev
  virtual void  v10(); // _ZN7S1383C43v10Ev
  virtual void  v11(); // _ZN7S1383C43v11Ev
  virtual void  v12(); // _ZN7S1383C43v12Ev
  virtual void  v13(); // _ZN7S1383C43v13Ev
  virtual void  v14(); // _ZN7S1383C43v14Ev
  virtual void  v15(); // _ZN7S1383C43v15Ev
  virtual void  v16(); // _ZN7S1383C43v16Ev
  virtual void  v17(); // _ZN7S1383C43v17Ev
  virtual void  v18(); // _ZN7S1383C43v18Ev
  virtual void  v19(); // _ZN7S1383C43v19Ev
  virtual void  v20(); // _ZN7S1383C43v20Ev
  virtual void  v21(); // _ZN7S1383C43v21Ev
  virtual void  v22(); // _ZN7S1383C43v22Ev
  virtual void  v23(); // _ZN7S1383C43v23Ev
  virtual void  v24(); // _ZN7S1383C43v24Ev
  virtual void  v25(); // _ZN7S1383C43v25Ev
  virtual void  v26(); // _ZN7S1383C43v26Ev
  virtual void  v27(); // _ZN7S1383C43v27Ev
  virtual void  v28(); // _ZN7S1383C43v28Ev
  virtual void  v29(); // _ZN7S1383C43v29Ev
  virtual void  v30(); // _ZN7S1383C43v30Ev
  virtual void  v31(); // _ZN7S1383C43v31Ev
  virtual void  v32(); // _ZN7S1383C43v32Ev
  virtual void  v33(); // _ZN7S1383C43v33Ev
  virtual void  v34(); // _ZN7S1383C43v34Ev
  virtual void  v35(); // _ZN7S1383C43v35Ev
  virtual void  v36(); // _ZN7S1383C43v36Ev
  virtual void  v37(); // _ZN7S1383C43v37Ev
  virtual void  v38(); // _ZN7S1383C43v38Ev
  virtual void  v39(); // _ZN7S1383C43v39Ev
  virtual void  v40(); // _ZN7S1383C43v40Ev
  virtual void  v41(); // _ZN7S1383C43v41Ev
  virtual void  v42(); // _ZN7S1383C43v42Ev
  virtual void  v43(); // _ZN7S1383C43v43Ev
  virtual void  v44(); // _ZN7S1383C43v44Ev
  virtual void  v45(); // _ZN7S1383C43v45Ev
  virtual void  v46(); // _ZN7S1383C43v46Ev
  virtual void  v47(); // _ZN7S1383C43v47Ev
  virtual void  v48(); // _ZN7S1383C43v48Ev
  virtual void  v49(); // _ZN7S1383C43v49Ev
  virtual void  v50(); // _ZN7S1383C43v50Ev
  virtual void  v51(); // _ZN7S1383C43v51Ev
  virtual void  v52(); // _ZN7S1383C43v52Ev
  virtual void  v53(); // _ZN7S1383C43v53Ev
  virtual void  v54(); // _ZN7S1383C43v54Ev
  virtual void  v55(); // _ZN7S1383C43v55Ev
  virtual void  v56(); // _ZN7S1383C43v56Ev
  virtual void  v57(); // _ZN7S1383C43v57Ev
  virtual void  v58(); // _ZN7S1383C43v58Ev
  virtual void  v59(); // _ZN7S1383C43v59Ev
  virtual void  v60(); // _ZN7S1383C43v60Ev
  virtual void  v61(); // _ZN7S1383C43v61Ev
  virtual void  v62(); // _ZN7S1383C43v62Ev
  virtual void  v63(); // _ZN7S1383C43v63Ev
  virtual void  v64(); // _ZN7S1383C43v64Ev
  virtual void  v65(); // _ZN7S1383C43v65Ev
  virtual void  v66(); // _ZN7S1383C43v66Ev
  S1383C4(); // tgen
};
//SIG(-1 S1383C4) 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]}


 S1383C4 ::~S1383C4(){ note_dtor("S1383C4", this);}
void  S1383C4 ::v3(){vfunc_called(this, "_ZN7S1383C42v3Ev");}
void  S1383C4 ::v4(){vfunc_called(this, "_ZN7S1383C42v4Ev");}
void  S1383C4 ::v5(){vfunc_called(this, "_ZN7S1383C42v5Ev");}
void  S1383C4 ::v6(){vfunc_called(this, "_ZN7S1383C42v6Ev");}
void  S1383C4 ::v7(){vfunc_called(this, "_ZN7S1383C42v7Ev");}
void  S1383C4 ::v8(){vfunc_called(this, "_ZN7S1383C42v8Ev");}
void  S1383C4 ::v9(){vfunc_called(this, "_ZN7S1383C42v9Ev");}
void  S1383C4 ::v10(){vfunc_called(this, "_ZN7S1383C43v10Ev");}
void  S1383C4 ::v11(){vfunc_called(this, "_ZN7S1383C43v11Ev");}
void  S1383C4 ::v12(){vfunc_called(this, "_ZN7S1383C43v12Ev");}
void  S1383C4 ::v13(){vfunc_called(this, "_ZN7S1383C43v13Ev");}
void  S1383C4 ::v14(){vfunc_called(this, "_ZN7S1383C43v14Ev");}
void  S1383C4 ::v15(){vfunc_called(this, "_ZN7S1383C43v15Ev");}
void  S1383C4 ::v16(){vfunc_called(this, "_ZN7S1383C43v16Ev");}
void  S1383C4 ::v17(){vfunc_called(this, "_ZN7S1383C43v17Ev");}
void  S1383C4 ::v18(){vfunc_called(this, "_ZN7S1383C43v18Ev");}
void  S1383C4 ::v19(){vfunc_called(this, "_ZN7S1383C43v19Ev");}
void  S1383C4 ::v20(){vfunc_called(this, "_ZN7S1383C43v20Ev");}
void  S1383C4 ::v21(){vfunc_called(this, "_ZN7S1383C43v21Ev");}
void  S1383C4 ::v22(){vfunc_called(this, "_ZN7S1383C43v22Ev");}
void  S1383C4 ::v23(){vfunc_called(this, "_ZN7S1383C43v23Ev");}
void  S1383C4 ::v24(){vfunc_called(this, "_ZN7S1383C43v24Ev");}
void  S1383C4 ::v25(){vfunc_called(this, "_ZN7S1383C43v25Ev");}
void  S1383C4 ::v26(){vfunc_called(this, "_ZN7S1383C43v26Ev");}
void  S1383C4 ::v27(){vfunc_called(this, "_ZN7S1383C43v27Ev");}
void  S1383C4 ::v28(){vfunc_called(this, "_ZN7S1383C43v28Ev");}
void  S1383C4 ::v29(){vfunc_called(this, "_ZN7S1383C43v29Ev");}
void  S1383C4 ::v30(){vfunc_called(this, "_ZN7S1383C43v30Ev");}
void  S1383C4 ::v31(){vfunc_called(this, "_ZN7S1383C43v31Ev");}
void  S1383C4 ::v32(){vfunc_called(this, "_ZN7S1383C43v32Ev");}
void  S1383C4 ::v33(){vfunc_called(this, "_ZN7S1383C43v33Ev");}
void  S1383C4 ::v34(){vfunc_called(this, "_ZN7S1383C43v34Ev");}
void  S1383C4 ::v35(){vfunc_called(this, "_ZN7S1383C43v35Ev");}
void  S1383C4 ::v36(){vfunc_called(this, "_ZN7S1383C43v36Ev");}
void  S1383C4 ::v37(){vfunc_called(this, "_ZN7S1383C43v37Ev");}
void  S1383C4 ::v38(){vfunc_called(this, "_ZN7S1383C43v38Ev");}
void  S1383C4 ::v39(){vfunc_called(this, "_ZN7S1383C43v39Ev");}
void  S1383C4 ::v40(){vfunc_called(this, "_ZN7S1383C43v40Ev");}
void  S1383C4 ::v41(){vfunc_called(this, "_ZN7S1383C43v41Ev");}
void  S1383C4 ::v42(){vfunc_called(this, "_ZN7S1383C43v42Ev");}
void  S1383C4 ::v43(){vfunc_called(this, "_ZN7S1383C43v43Ev");}
void  S1383C4 ::v44(){vfunc_called(this, "_ZN7S1383C43v44Ev");}
void  S1383C4 ::v45(){vfunc_called(this, "_ZN7S1383C43v45Ev");}
void  S1383C4 ::v46(){vfunc_called(this, "_ZN7S1383C43v46Ev");}
void  S1383C4 ::v47(){vfunc_called(this, "_ZN7S1383C43v47Ev");}
void  S1383C4 ::v48(){vfunc_called(this, "_ZN7S1383C43v48Ev");}
void  S1383C4 ::v49(){vfunc_called(this, "_ZN7S1383C43v49Ev");}
void  S1383C4 ::v50(){vfunc_called(this, "_ZN7S1383C43v50Ev");}
void  S1383C4 ::v51(){vfunc_called(this, "_ZN7S1383C43v51Ev");}
void  S1383C4 ::v52(){vfunc_called(this, "_ZN7S1383C43v52Ev");}
void  S1383C4 ::v53(){vfunc_called(this, "_ZN7S1383C43v53Ev");}
void  S1383C4 ::v54(){vfunc_called(this, "_ZN7S1383C43v54Ev");}
void  S1383C4 ::v55(){vfunc_called(this, "_ZN7S1383C43v55Ev");}
void  S1383C4 ::v56(){vfunc_called(this, "_ZN7S1383C43v56Ev");}
void  S1383C4 ::v57(){vfunc_called(this, "_ZN7S1383C43v57Ev");}
void  S1383C4 ::v58(){vfunc_called(this, "_ZN7S1383C43v58Ev");}
void  S1383C4 ::v59(){vfunc_called(this, "_ZN7S1383C43v59Ev");}
void  S1383C4 ::v60(){vfunc_called(this, "_ZN7S1383C43v60Ev");}
void  S1383C4 ::v61(){vfunc_called(this, "_ZN7S1383C43v61Ev");}
void  S1383C4 ::v62(){vfunc_called(this, "_ZN7S1383C43v62Ev");}
void  S1383C4 ::v63(){vfunc_called(this, "_ZN7S1383C43v63Ev");}
void  S1383C4 ::v64(){vfunc_called(this, "_ZN7S1383C43v64Ev");}
void  S1383C4 ::v65(){vfunc_called(this, "_ZN7S1383C43v65Ev");}
void  S1383C4 ::v66(){vfunc_called(this, "_ZN7S1383C43v66Ev");}
S1383C4 ::S1383C4(){ note_ctor("S1383C4", this);} // tgen

static void Test_S1383C4()
{
  extern Class_Descriptor cd_S1383C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1383C4, buf);
    S1383C4 *dp, &lv = *(dp=new (buf) S1383C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1383C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1383C4)");
    check_field_offset(lv, s1383c4f0, ABISELECT(8,4), "S1383C4.s1383c4f0");
    check_field_offset(lv, s1383c4f1, ABISELECT(16,8), "S1383C4.s1383c4f1");
    check_field_offset(lv, s1383c4f2, ABISELECT(24,16), "S1383C4.s1383c4f2");
    check_field_offset(lv, s1383c4f3, ABISELECT(56,32), "S1383C4.s1383c4f3");
    check_field_offset(lv, s1383c4f4, ABISELECT(64,40), "S1383C4.s1383c4f4");
    check_field_offset(lv, s1383c4f5, ABISELECT(72,44), "S1383C4.s1383c4f5");
    check_field_offset(lv, s1383c4f6, ABISELECT(80,52), "S1383C4.s1383c4f6");
    test_class_info(&lv, &cd_S1383C4);
    dp->~S1383C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1383C4(Test_S1383C4, "S1383C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1383C4C1Ev();
extern void _ZN7S1383C4D1Ev();
Name_Map name_map_S1383C4[] = {
  NSPAIR(_ZN7S1383C4C1Ev),
  NSPAIR(_ZN7S1383C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1383C4[];
extern void _ZN7S1383C4D1Ev();
extern void _ZN7S1383C4D0Ev();
extern void _ZN7S1383C42v3Ev();
extern void _ZN7S1383C42v4Ev();
extern void _ZN7S1383C42v5Ev();
extern void _ZN7S1383C42v6Ev();
extern void _ZN7S1383C42v7Ev();
extern void _ZN7S1383C42v8Ev();
extern void _ZN7S1383C42v9Ev();
extern void _ZN7S1383C43v10Ev();
extern void _ZN7S1383C43v11Ev();
extern void _ZN7S1383C43v12Ev();
extern void _ZN7S1383C43v13Ev();
extern void _ZN7S1383C43v14Ev();
extern void _ZN7S1383C43v15Ev();
extern void _ZN7S1383C43v16Ev();
extern void _ZN7S1383C43v17Ev();
extern void _ZN7S1383C43v18Ev();
extern void _ZN7S1383C43v19Ev();
extern void _ZN7S1383C43v20Ev();
extern void _ZN7S1383C43v21Ev();
extern void _ZN7S1383C43v22Ev();
extern void _ZN7S1383C43v23Ev();
extern void _ZN7S1383C43v24Ev();
extern void _ZN7S1383C43v25Ev();
extern void _ZN7S1383C43v26Ev();
extern void _ZN7S1383C43v27Ev();
extern void _ZN7S1383C43v28Ev();
extern void _ZN7S1383C43v29Ev();
extern void _ZN7S1383C43v30Ev();
extern void _ZN7S1383C43v31Ev();
extern void _ZN7S1383C43v32Ev();
extern void _ZN7S1383C43v33Ev();
extern void _ZN7S1383C43v34Ev();
extern void _ZN7S1383C43v35Ev();
extern void _ZN7S1383C43v36Ev();
extern void _ZN7S1383C43v37Ev();
extern void _ZN7S1383C43v38Ev();
extern void _ZN7S1383C43v39Ev();
extern void _ZN7S1383C43v40Ev();
extern void _ZN7S1383C43v41Ev();
extern void _ZN7S1383C43v42Ev();
extern void _ZN7S1383C43v43Ev();
extern void _ZN7S1383C43v44Ev();
extern void _ZN7S1383C43v45Ev();
extern void _ZN7S1383C43v46Ev();
extern void _ZN7S1383C43v47Ev();
extern void _ZN7S1383C43v48Ev();
extern void _ZN7S1383C43v49Ev();
extern void _ZN7S1383C43v50Ev();
extern void _ZN7S1383C43v51Ev();
extern void _ZN7S1383C43v52Ev();
extern void _ZN7S1383C43v53Ev();
extern void _ZN7S1383C43v54Ev();
extern void _ZN7S1383C43v55Ev();
extern void _ZN7S1383C43v56Ev();
extern void _ZN7S1383C43v57Ev();
extern void _ZN7S1383C43v58Ev();
extern void _ZN7S1383C43v59Ev();
extern void _ZN7S1383C43v60Ev();
extern void _ZN7S1383C43v61Ev();
extern void _ZN7S1383C43v62Ev();
extern void _ZN7S1383C43v63Ev();
extern void _ZN7S1383C43v64Ev();
extern void _ZN7S1383C43v65Ev();
extern void _ZN7S1383C43v66Ev();
static  VTBL_ENTRY vtc_S1383C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1383C4[0]),
  (VTBL_ENTRY)&_ZN7S1383C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1383C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v66Ev,
};
extern VTBL_ENTRY _ZTI7S1383C4[];
extern  VTBL_ENTRY _ZTV7S1383C4[];
Class_Descriptor cd_S1383C4 = {  "S1383C4", // class name
  0,0,//no base classes
  &(vtc_S1383C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1383C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1383C4),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  S1383C3  : S1383C4 {
  virtual  ~S1383C3(); // _ZN7S1383C3D1Ev
  virtual void  v67(); // _ZN7S1383C33v67Ev
  virtual void  v68(); // _ZN7S1383C33v68Ev
  S1383C3(); // tgen
};
//SIG(-1 S1383C3) 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}


 S1383C3 ::~S1383C3(){ note_dtor("S1383C3", this);}
void  S1383C3 ::v67(){vfunc_called(this, "_ZN7S1383C33v67Ev");}
void  S1383C3 ::v68(){vfunc_called(this, "_ZN7S1383C33v68Ev");}
S1383C3 ::S1383C3(){ note_ctor("S1383C3", this);} // tgen

static void Test_S1383C3()
{
  extern Class_Descriptor cd_S1383C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1383C3, buf);
    S1383C3 *dp, &lv = *(dp=new (buf) S1383C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1383C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1383C3)");
    check_base_class_offset(lv, (S1383C4*), 0, "S1383C3");
    test_class_info(&lv, &cd_S1383C3);
    dp->~S1383C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1383C3(Test_S1383C3, "S1383C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1383C3C1Ev();
extern void _ZN7S1383C3D1Ev();
Name_Map name_map_S1383C3[] = {
  NSPAIR(_ZN7S1383C3C1Ev),
  NSPAIR(_ZN7S1383C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1383C4;
extern VTBL_ENTRY _ZTI7S1383C4[];
extern  VTBL_ENTRY _ZTV7S1383C4[];
static Base_Class bases_S1383C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1383C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1383C3[];
extern void _ZN7S1383C3D1Ev();
extern void _ZN7S1383C3D0Ev();
extern void _ZN7S1383C42v3Ev();
extern void _ZN7S1383C42v4Ev();
extern void _ZN7S1383C42v5Ev();
extern void _ZN7S1383C42v6Ev();
extern void _ZN7S1383C42v7Ev();
extern void _ZN7S1383C42v8Ev();
extern void _ZN7S1383C42v9Ev();
extern void _ZN7S1383C43v10Ev();
extern void _ZN7S1383C43v11Ev();
extern void _ZN7S1383C43v12Ev();
extern void _ZN7S1383C43v13Ev();
extern void _ZN7S1383C43v14Ev();
extern void _ZN7S1383C43v15Ev();
extern void _ZN7S1383C43v16Ev();
extern void _ZN7S1383C43v17Ev();
extern void _ZN7S1383C43v18Ev();
extern void _ZN7S1383C43v19Ev();
extern void _ZN7S1383C43v20Ev();
extern void _ZN7S1383C43v21Ev();
extern void _ZN7S1383C43v22Ev();
extern void _ZN7S1383C43v23Ev();
extern void _ZN7S1383C43v24Ev();
extern void _ZN7S1383C43v25Ev();
extern void _ZN7S1383C43v26Ev();
extern void _ZN7S1383C43v27Ev();
extern void _ZN7S1383C43v28Ev();
extern void _ZN7S1383C43v29Ev();
extern void _ZN7S1383C43v30Ev();
extern void _ZN7S1383C43v31Ev();
extern void _ZN7S1383C43v32Ev();
extern void _ZN7S1383C43v33Ev();
extern void _ZN7S1383C43v34Ev();
extern void _ZN7S1383C43v35Ev();
extern void _ZN7S1383C43v36Ev();
extern void _ZN7S1383C43v37Ev();
extern void _ZN7S1383C43v38Ev();
extern void _ZN7S1383C43v39Ev();
extern void _ZN7S1383C43v40Ev();
extern void _ZN7S1383C43v41Ev();
extern void _ZN7S1383C43v42Ev();
extern void _ZN7S1383C43v43Ev();
extern void _ZN7S1383C43v44Ev();
extern void _ZN7S1383C43v45Ev();
extern void _ZN7S1383C43v46Ev();
extern void _ZN7S1383C43v47Ev();
extern void _ZN7S1383C43v48Ev();
extern void _ZN7S1383C43v49Ev();
extern void _ZN7S1383C43v50Ev();
extern void _ZN7S1383C43v51Ev();
extern void _ZN7S1383C43v52Ev();
extern void _ZN7S1383C43v53Ev();
extern void _ZN7S1383C43v54Ev();
extern void _ZN7S1383C43v55Ev();
extern void _ZN7S1383C43v56Ev();
extern void _ZN7S1383C43v57Ev();
extern void _ZN7S1383C43v58Ev();
extern void _ZN7S1383C43v59Ev();
extern void _ZN7S1383C43v60Ev();
extern void _ZN7S1383C43v61Ev();
extern void _ZN7S1383C43v62Ev();
extern void _ZN7S1383C43v63Ev();
extern void _ZN7S1383C43v64Ev();
extern void _ZN7S1383C43v65Ev();
extern void _ZN7S1383C43v66Ev();
extern void _ZN7S1383C33v67Ev();
extern void _ZN7S1383C33v68Ev();
static  VTBL_ENTRY vtc_S1383C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1383C3[0]),
  (VTBL_ENTRY)&_ZN7S1383C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1383C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1383C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1383C33v68Ev,
};
extern VTBL_ENTRY _ZTI7S1383C3[];
extern  VTBL_ENTRY _ZTV7S1383C3[];
Class_Descriptor cd_S1383C3 = {  "S1383C3", // class name
  bases_S1383C3, 1,
  &(vtc_S1383C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1383C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1383C3),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  S1383C2  : S1383C3 {
  ::S23C10_nt s1383c2f0;
  ::S23C10_nt s1383c2f1;
  ::S23C10_nt s1383c2f2;
  ::S23C10_nt s1383c2f3;
  virtual  ~S1383C2(); // _ZN7S1383C2D1Ev
  virtual void  v69(); // _ZN7S1383C23v69Ev
  virtual void  v70(); // _ZN7S1383C23v70Ev
  virtual void  v71(); // _ZN7S1383C23v71Ev
  virtual void  v72(); // _ZN7S1383C23v72Ev
  virtual void  v73(); // _ZN7S1383C23v73Ev
  virtual void  v74(); // _ZN7S1383C23v74Ev
  virtual void  v75(); // _ZN7S1383C23v75Ev
  S1383C2(); // tgen
};
//SIG(-1 S1383C2) C1{ BC2{ BC3{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v72 v73} vd v1 v2 v3 v4 v5 v6 v7 FC5{ m Fp FC4} FC5 FC5 FC5}


 S1383C2 ::~S1383C2(){ note_dtor("S1383C2", this);}
void  S1383C2 ::v69(){vfunc_called(this, "_ZN7S1383C23v69Ev");}
void  S1383C2 ::v70(){vfunc_called(this, "_ZN7S1383C23v70Ev");}
void  S1383C2 ::v71(){vfunc_called(this, "_ZN7S1383C23v71Ev");}
void  S1383C2 ::v72(){vfunc_called(this, "_ZN7S1383C23v72Ev");}
void  S1383C2 ::v73(){vfunc_called(this, "_ZN7S1383C23v73Ev");}
void  S1383C2 ::v74(){vfunc_called(this, "_ZN7S1383C23v74Ev");}
void  S1383C2 ::v75(){vfunc_called(this, "_ZN7S1383C23v75Ev");}
S1383C2 ::S1383C2(){ note_ctor("S1383C2", this);} // tgen

static void Test_S1383C2()
{
  extern Class_Descriptor cd_S1383C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,28)];
    init_test(&cd_S1383C2, buf);
    S1383C2 *dp, &lv = *(dp=new (buf) S1383C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S1383C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1383C2)");
    check_base_class_offset(lv, (S1383C4*)(S1383C3*), 0, "S1383C2");
    check_base_class_offset(lv, (S1383C3*), 0, "S1383C2");
    check_field_offset(lv, s1383c2f0, ABISELECT(96,60), "S1383C2.s1383c2f0");
    check_field_offset(lv, s1383c2f1, ABISELECT(112,72), "S1383C2.s1383c2f1");
    check_field_offset(lv, s1383c2f2, ABISELECT(128,84), "S1383C2.s1383c2f2");
    check_field_offset(lv, s1383c2f3, ABISELECT(144,96), "S1383C2.s1383c2f3");
    test_class_info(&lv, &cd_S1383C2);
    dp->~S1383C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1383C2(Test_S1383C2, "S1383C2", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN7S1383C2C1Ev();
extern void _ZN7S1383C2D1Ev();
Name_Map name_map_S1383C2[] = {
  NSPAIR(_ZN7S1383C2C1Ev),
  NSPAIR(_ZN7S1383C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1383C4;
extern VTBL_ENTRY _ZTI7S1383C4[];
extern  VTBL_ENTRY _ZTV7S1383C4[];
extern Class_Descriptor cd_S1383C3;
extern VTBL_ENTRY _ZTI7S1383C3[];
extern  VTBL_ENTRY _ZTV7S1383C3[];
static Base_Class bases_S1383C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1383C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1383C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1383C2[];
extern void _ZN7S1383C2D1Ev();
extern void _ZN7S1383C2D0Ev();
extern void _ZN7S1383C42v3Ev();
extern void _ZN7S1383C42v4Ev();
extern void _ZN7S1383C42v5Ev();
extern void _ZN7S1383C42v6Ev();
extern void _ZN7S1383C42v7Ev();
extern void _ZN7S1383C42v8Ev();
extern void _ZN7S1383C42v9Ev();
extern void _ZN7S1383C43v10Ev();
extern void _ZN7S1383C43v11Ev();
extern void _ZN7S1383C43v12Ev();
extern void _ZN7S1383C43v13Ev();
extern void _ZN7S1383C43v14Ev();
extern void _ZN7S1383C43v15Ev();
extern void _ZN7S1383C43v16Ev();
extern void _ZN7S1383C43v17Ev();
extern void _ZN7S1383C43v18Ev();
extern void _ZN7S1383C43v19Ev();
extern void _ZN7S1383C43v20Ev();
extern void _ZN7S1383C43v21Ev();
extern void _ZN7S1383C43v22Ev();
extern void _ZN7S1383C43v23Ev();
extern void _ZN7S1383C43v24Ev();
extern void _ZN7S1383C43v25Ev();
extern void _ZN7S1383C43v26Ev();
extern void _ZN7S1383C43v27Ev();
extern void _ZN7S1383C43v28Ev();
extern void _ZN7S1383C43v29Ev();
extern void _ZN7S1383C43v30Ev();
extern void _ZN7S1383C43v31Ev();
extern void _ZN7S1383C43v32Ev();
extern void _ZN7S1383C43v33Ev();
extern void _ZN7S1383C43v34Ev();
extern void _ZN7S1383C43v35Ev();
extern void _ZN7S1383C43v36Ev();
extern void _ZN7S1383C43v37Ev();
extern void _ZN7S1383C43v38Ev();
extern void _ZN7S1383C43v39Ev();
extern void _ZN7S1383C43v40Ev();
extern void _ZN7S1383C43v41Ev();
extern void _ZN7S1383C43v42Ev();
extern void _ZN7S1383C43v43Ev();
extern void _ZN7S1383C43v44Ev();
extern void _ZN7S1383C43v45Ev();
extern void _ZN7S1383C43v46Ev();
extern void _ZN7S1383C43v47Ev();
extern void _ZN7S1383C43v48Ev();
extern void _ZN7S1383C43v49Ev();
extern void _ZN7S1383C43v50Ev();
extern void _ZN7S1383C43v51Ev();
extern void _ZN7S1383C43v52Ev();
extern void _ZN7S1383C43v53Ev();
extern void _ZN7S1383C43v54Ev();
extern void _ZN7S1383C43v55Ev();
extern void _ZN7S1383C43v56Ev();
extern void _ZN7S1383C43v57Ev();
extern void _ZN7S1383C43v58Ev();
extern void _ZN7S1383C43v59Ev();
extern void _ZN7S1383C43v60Ev();
extern void _ZN7S1383C43v61Ev();
extern void _ZN7S1383C43v62Ev();
extern void _ZN7S1383C43v63Ev();
extern void _ZN7S1383C43v64Ev();
extern void _ZN7S1383C43v65Ev();
extern void _ZN7S1383C43v66Ev();
extern void _ZN7S1383C33v67Ev();
extern void _ZN7S1383C33v68Ev();
extern void _ZN7S1383C23v69Ev();
extern void _ZN7S1383C23v70Ev();
extern void _ZN7S1383C23v71Ev();
extern void _ZN7S1383C23v72Ev();
extern void _ZN7S1383C23v73Ev();
extern void _ZN7S1383C23v74Ev();
extern void _ZN7S1383C23v75Ev();
static  VTBL_ENTRY vtc_S1383C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1383C2[0]),
  (VTBL_ENTRY)&_ZN7S1383C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1383C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1383C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1383C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v69Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v70Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v71Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v72Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v73Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v74Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v75Ev,
};
extern VTBL_ENTRY _ZTI7S1383C2[];
extern  VTBL_ENTRY _ZTV7S1383C2[];
Class_Descriptor cd_S1383C2 = {  "S1383C2", // class name
  bases_S1383C2, 2,
  &(vtc_S1383C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI7S1383C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1383C2),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  S1383C1  : S1383C2 {
  void *s1383c1f0[8];
  ::S3214C4_nt s1383c1f1;
  ::S3214C4_nt s1383c1f2;
  int s1383c1f3;
  ::S3214C22 s1383c1f4;
  int s1383c1f5[5];
  ::S3214C21_nt s1383c1f6[16];
  ::S3214C21_nt s1383c1f7;
  int s1383c1f8;
  unsigned int s1383c1f9:1;
  unsigned int s1383c1f10:1;
  unsigned int s1383c1f11:1;
  virtual  ~S1383C1(); // _ZN7S1383C1D1Ev
  virtual void  v1(); // _ZN7S1383C12v1Ev
  virtual void  v2(); // _ZN7S1383C12v2Ev
  S1383C1(); // tgen
};
//SIG(1 S1383C1) C1{ BC2{ BC3{ BC4{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v67 v68} vd v69 v70 v71 v72 v73 v74 v75 FC6{ m Fp FC5} FC6 FC6 FC6} vd v1 v2 Fp[8] FC5 FC5 Fi FC7{ BC8{ BC9{ m Fp Fi[2]}}} Fi[5] FC10{ BC7}[16] FC10 Fi Fi:1 Fi:1 Fi:1}


 S1383C1 ::~S1383C1(){ note_dtor("S1383C1", this);}
void  S1383C1 ::v1(){vfunc_called(this, "_ZN7S1383C12v1Ev");}
void  S1383C1 ::v2(){vfunc_called(this, "_ZN7S1383C12v2Ev");}
S1383C1 ::S1383C1(){ note_ctor("S1383C1", this);} // tgen

static void Test_S1383C1()
{
  extern Class_Descriptor cd_S1383C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(72,102)];
    init_test(&cd_S1383C1, buf);
    S1383C1 *dp, &lv = *(dp=new (buf) S1383C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(568,404), "sizeof(S1383C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1383C1)");
    check_base_class_offset(lv, (S1383C4*)(S1383C3*)(S1383C2*), 0, "S1383C1");
    check_base_class_offset(lv, (S1383C3*)(S1383C2*), 0, "S1383C1");
    check_base_class_offset(lv, (S1383C2*), 0, "S1383C1");
    check_field_offset(lv, s1383c1f0, ABISELECT(160,108), "S1383C1.s1383c1f0");
    check_field_offset(lv, s1383c1f1, ABISELECT(224,140), "S1383C1.s1383c1f1");
    check_field_offset(lv, s1383c1f2, ABISELECT(232,148), "S1383C1.s1383c1f2");
    check_field_offset(lv, s1383c1f3, ABISELECT(240,156), "S1383C1.s1383c1f3");
    check_field_offset(lv, s1383c1f4, ABISELECT(248,160), "S1383C1.s1383c1f4");
    check_field_offset(lv, s1383c1f5, ABISELECT(264,172), "S1383C1.s1383c1f5");
    check_field_offset(lv, s1383c1f6, ABISELECT(288,192), "S1383C1.s1383c1f6");
    check_field_offset(lv, s1383c1f7, ABISELECT(544,384), "S1383C1.s1383c1f7");
    check_field_offset(lv, s1383c1f8, ABISELECT(560,396), "S1383C1.s1383c1f8");
    set_bf_and_test(lv, s1383c1f9, ABISELECT(564,400), 0, 1, 1, "S1383C1");
    set_bf_and_test(lv, s1383c1f10, ABISELECT(564,400), 1, 1, 1, "S1383C1");
    set_bf_and_test(lv, s1383c1f11, ABISELECT(564,400), 2, 1, 1, "S1383C1");
    test_class_info(&lv, &cd_S1383C1);
    dp->~S1383C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1383C1(Test_S1383C1, "S1383C1", ABISELECT(568,404));

#else // __cplusplus

extern void _ZN7S1383C1C1Ev();
extern void _ZN7S1383C1D1Ev();
Name_Map name_map_S1383C1[] = {
  NSPAIR(_ZN7S1383C1C1Ev),
  NSPAIR(_ZN7S1383C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1383C4;
extern VTBL_ENTRY _ZTI7S1383C4[];
extern  VTBL_ENTRY _ZTV7S1383C4[];
extern Class_Descriptor cd_S1383C3;
extern VTBL_ENTRY _ZTI7S1383C3[];
extern  VTBL_ENTRY _ZTV7S1383C3[];
extern Class_Descriptor cd_S1383C2;
extern VTBL_ENTRY _ZTI7S1383C2[];
extern  VTBL_ENTRY _ZTV7S1383C2[];
static Base_Class bases_S1383C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1383C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1383C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1383C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1383C1[];
extern void _ZN7S1383C1D1Ev();
extern void _ZN7S1383C1D0Ev();
extern void _ZN7S1383C42v3Ev();
extern void _ZN7S1383C42v4Ev();
extern void _ZN7S1383C42v5Ev();
extern void _ZN7S1383C42v6Ev();
extern void _ZN7S1383C42v7Ev();
extern void _ZN7S1383C42v8Ev();
extern void _ZN7S1383C42v9Ev();
extern void _ZN7S1383C43v10Ev();
extern void _ZN7S1383C43v11Ev();
extern void _ZN7S1383C43v12Ev();
extern void _ZN7S1383C43v13Ev();
extern void _ZN7S1383C43v14Ev();
extern void _ZN7S1383C43v15Ev();
extern void _ZN7S1383C43v16Ev();
extern void _ZN7S1383C43v17Ev();
extern void _ZN7S1383C43v18Ev();
extern void _ZN7S1383C43v19Ev();
extern void _ZN7S1383C43v20Ev();
extern void _ZN7S1383C43v21Ev();
extern void _ZN7S1383C43v22Ev();
extern void _ZN7S1383C43v23Ev();
extern void _ZN7S1383C43v24Ev();
extern void _ZN7S1383C43v25Ev();
extern void _ZN7S1383C43v26Ev();
extern void _ZN7S1383C43v27Ev();
extern void _ZN7S1383C43v28Ev();
extern void _ZN7S1383C43v29Ev();
extern void _ZN7S1383C43v30Ev();
extern void _ZN7S1383C43v31Ev();
extern void _ZN7S1383C43v32Ev();
extern void _ZN7S1383C43v33Ev();
extern void _ZN7S1383C43v34Ev();
extern void _ZN7S1383C43v35Ev();
extern void _ZN7S1383C43v36Ev();
extern void _ZN7S1383C43v37Ev();
extern void _ZN7S1383C43v38Ev();
extern void _ZN7S1383C43v39Ev();
extern void _ZN7S1383C43v40Ev();
extern void _ZN7S1383C43v41Ev();
extern void _ZN7S1383C43v42Ev();
extern void _ZN7S1383C43v43Ev();
extern void _ZN7S1383C43v44Ev();
extern void _ZN7S1383C43v45Ev();
extern void _ZN7S1383C43v46Ev();
extern void _ZN7S1383C43v47Ev();
extern void _ZN7S1383C43v48Ev();
extern void _ZN7S1383C43v49Ev();
extern void _ZN7S1383C43v50Ev();
extern void _ZN7S1383C43v51Ev();
extern void _ZN7S1383C43v52Ev();
extern void _ZN7S1383C43v53Ev();
extern void _ZN7S1383C43v54Ev();
extern void _ZN7S1383C43v55Ev();
extern void _ZN7S1383C43v56Ev();
extern void _ZN7S1383C43v57Ev();
extern void _ZN7S1383C43v58Ev();
extern void _ZN7S1383C43v59Ev();
extern void _ZN7S1383C43v60Ev();
extern void _ZN7S1383C43v61Ev();
extern void _ZN7S1383C43v62Ev();
extern void _ZN7S1383C43v63Ev();
extern void _ZN7S1383C43v64Ev();
extern void _ZN7S1383C43v65Ev();
extern void _ZN7S1383C43v66Ev();
extern void _ZN7S1383C33v67Ev();
extern void _ZN7S1383C33v68Ev();
extern void _ZN7S1383C23v69Ev();
extern void _ZN7S1383C23v70Ev();
extern void _ZN7S1383C23v71Ev();
extern void _ZN7S1383C23v72Ev();
extern void _ZN7S1383C23v73Ev();
extern void _ZN7S1383C23v74Ev();
extern void _ZN7S1383C23v75Ev();
extern void _ZN7S1383C12v1Ev();
extern void _ZN7S1383C12v2Ev();
static  VTBL_ENTRY vtc_S1383C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1383C1[0]),
  (VTBL_ENTRY)&_ZN7S1383C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1383C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v3Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v4Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v5Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1383C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1383C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1383C33v67Ev,
  (VTBL_ENTRY)&_ZN7S1383C33v68Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v69Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v70Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v71Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v72Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v73Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v74Ev,
  (VTBL_ENTRY)&_ZN7S1383C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1383C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1383C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S1383C1[];
extern  VTBL_ENTRY _ZTV7S1383C1[];
Class_Descriptor cd_S1383C1 = {  "S1383C1", // class name
  bases_S1383C1, 3,
  &(vtc_S1383C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,404), // object size
  NSPAIRA(_ZTI7S1383C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1383C1),79, //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  S8587C2  {
  void *s8587c2f0[2];
  int s8587c2f1;
  void *s8587c2f2;
  int s8587c2f3[3];
  ::S3214C13_nt s8587c2f4;
  unsigned int s8587c2f5:1;
  unsigned int s8587c2f6:1;
  unsigned int s8587c2f7:1;
  void *s8587c2f8[2];
  ::S9141C26 s8587c2f9;
  void *s8587c2f10;
  int s8587c2f11;
  ::S9141C26 s8587c2f12;
  int s8587c2f13[8];
  ::S3214C13_nt s8587c2f14;
  ::S9142C8_nt s8587c2f15;
  ::S9141C28_nt s8587c2f16;
  int s8587c2f17[2];
  void *s8587c2f18;
  int s8587c2f19;
  ::S3214C23 s8587c2f20;
  int s8587c2f21[2];
  void *s8587c2f22;
  int s8587c2f23;
  virtual  ~S8587C2(); // _ZN7S8587C2D1Ev
  virtual void  v13(); // _ZN7S8587C23v13Ev
  virtual void  v14(); // _ZN7S8587C23v14Ev
  virtual void  v15(); // _ZN7S8587C23v15Ev
  virtual void  v16(); // _ZN7S8587C23v16Ev
  virtual void  v17(); // _ZN7S8587C23v17Ev
  virtual void  v18(); // _ZN7S8587C23v18Ev
  virtual void  v19(); // _ZN7S8587C23v19Ev
  virtual void  v20(); // _ZN7S8587C23v20Ev
  virtual void  v21(); // _ZN7S8587C23v21Ev
  virtual void  v22(); // _ZN7S8587C23v22Ev
  virtual void  v23(); // _ZN7S8587C23v23Ev
  virtual void  v24(); // _ZN7S8587C23v24Ev
  virtual void  v25(); // _ZN7S8587C23v25Ev
  virtual void  v26(); // _ZN7S8587C23v26Ev
  virtual void  v27(); // _ZN7S8587C23v27Ev
  virtual void  v28(); // _ZN7S8587C23v28Ev
  virtual void  v29(); // _ZN7S8587C23v29Ev
  virtual void  v30(); // _ZN7S8587C23v30Ev
  virtual void  v31(); // _ZN7S8587C23v31Ev
  virtual void  v32(); // _ZN7S8587C23v32Ev
  virtual void  v33(); // _ZN7S8587C23v33Ev
  virtual void  v34(); // _ZN7S8587C23v34Ev
  virtual void  v35(); // _ZN7S8587C23v35Ev
  virtual void  v36(); // _ZN7S8587C23v36Ev
  virtual void  v37(); // _ZN7S8587C23v37Ev
  virtual void  v38(); // _ZN7S8587C23v38Ev
  virtual void  v39(); // _ZN7S8587C23v39Ev
  virtual void  v40(); // _ZN7S8587C23v40Ev
  virtual void  v41(); // _ZN7S8587C23v41Ev
  virtual void  v42(); // _ZN7S8587C23v42Ev
  virtual void  v43(); // _ZN7S8587C23v43Ev
  virtual void  v44(); // _ZN7S8587C23v44Ev
  virtual void  v45(); // _ZN7S8587C23v45Ev
  virtual void  v46(); // _ZN7S8587C23v46Ev
  virtual void  v47(); // _ZN7S8587C23v47Ev
  S8587C2(); // tgen
};
//SIG(-1 S8587C2) 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 Fp[2] Fi Fp Fi[3] FC2{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC3 Fi[8] FC2 FC7{ m FC2 FC2 Fc} FC5 Fi[2] Fp Fi FC8{ BC6} Fi[2] Fp Fi}


 S8587C2 ::~S8587C2(){ note_dtor("S8587C2", this);}
void  S8587C2 ::v13(){vfunc_called(this, "_ZN7S8587C23v13Ev");}
void  S8587C2 ::v14(){vfunc_called(this, "_ZN7S8587C23v14Ev");}
void  S8587C2 ::v15(){vfunc_called(this, "_ZN7S8587C23v15Ev");}
void  S8587C2 ::v16(){vfunc_called(this, "_ZN7S8587C23v16Ev");}
void  S8587C2 ::v17(){vfunc_called(this, "_ZN7S8587C23v17Ev");}
void  S8587C2 ::v18(){vfunc_called(this, "_ZN7S8587C23v18Ev");}
void  S8587C2 ::v19(){vfunc_called(this, "_ZN7S8587C23v19Ev");}
void  S8587C2 ::v20(){vfunc_called(this, "_ZN7S8587C23v20Ev");}
void  S8587C2 ::v21(){vfunc_called(this, "_ZN7S8587C23v21Ev");}
void  S8587C2 ::v22(){vfunc_called(this, "_ZN7S8587C23v22Ev");}
void  S8587C2 ::v23(){vfunc_called(this, "_ZN7S8587C23v23Ev");}
void  S8587C2 ::v24(){vfunc_called(this, "_ZN7S8587C23v24Ev");}
void  S8587C2 ::v25(){vfunc_called(this, "_ZN7S8587C23v25Ev");}
void  S8587C2 ::v26(){vfunc_called(this, "_ZN7S8587C23v26Ev");}
void  S8587C2 ::v27(){vfunc_called(this, "_ZN7S8587C23v27Ev");}
void  S8587C2 ::v28(){vfunc_called(this, "_ZN7S8587C23v28Ev");}
void  S8587C2 ::v29(){vfunc_called(this, "_ZN7S8587C23v29Ev");}
void  S8587C2 ::v30(){vfunc_called(this, "_ZN7S8587C23v30Ev");}
void  S8587C2 ::v31(){vfunc_called(this, "_ZN7S8587C23v31Ev");}
void  S8587C2 ::v32(){vfunc_called(this, "_ZN7S8587C23v32Ev");}
void  S8587C2 ::v33(){vfunc_called(this, "_ZN7S8587C23v33Ev");}
void  S8587C2 ::v34(){vfunc_called(this, "_ZN7S8587C23v34Ev");}
void  S8587C2 ::v35(){vfunc_called(this, "_ZN7S8587C23v35Ev");}
void  S8587C2 ::v36(){vfunc_called(this, "_ZN7S8587C23v36Ev");}
void  S8587C2 ::v37(){vfunc_called(this, "_ZN7S8587C23v37Ev");}
void  S8587C2 ::v38(){vfunc_called(this, "_ZN7S8587C23v38Ev");}
void  S8587C2 ::v39(){vfunc_called(this, "_ZN7S8587C23v39Ev");}
void  S8587C2 ::v40(){vfunc_called(this, "_ZN7S8587C23v40Ev");}
void  S8587C2 ::v41(){vfunc_called(this, "_ZN7S8587C23v41Ev");}
void  S8587C2 ::v42(){vfunc_called(this, "_ZN7S8587C23v42Ev");}
void  S8587C2 ::v43(){vfunc_called(this, "_ZN7S8587C23v43Ev");}
void  S8587C2 ::v44(){vfunc_called(this, "_ZN7S8587C23v44Ev");}
void  S8587C2 ::v45(){vfunc_called(this, "_ZN7S8587C23v45Ev");}
void  S8587C2 ::v46(){vfunc_called(this, "_ZN7S8587C23v46Ev");}
void  S8587C2 ::v47(){vfunc_called(this, "_ZN7S8587C23v47Ev");}
S8587C2 ::S8587C2(){ note_ctor("S8587C2", this);} // tgen

static void Test_S8587C2()
{
  extern Class_Descriptor cd_S8587C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,59)];
    init_test(&cd_S8587C2, buf);
    S8587C2 *dp, &lv = *(dp=new (buf) S8587C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,232), "sizeof(S8587C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8587C2)");
    check_field_offset(lv, s8587c2f0, ABISELECT(8,4), "S8587C2.s8587c2f0");
    check_field_offset(lv, s8587c2f1, ABISELECT(24,12), "S8587C2.s8587c2f1");
    check_field_offset(lv, s8587c2f2, ABISELECT(32,16), "S8587C2.s8587c2f2");
    check_field_offset(lv, s8587c2f3, ABISELECT(40,20), "S8587C2.s8587c2f3");
    check_field_offset(lv, s8587c2f4, ABISELECT(52,32), "S8587C2.s8587c2f4");
    set_bf_and_test(lv, s8587c2f5, ABISELECT(64,44), 0, 1, 1, "S8587C2");
    set_bf_and_test(lv, s8587c2f6, ABISELECT(64,44), 1, 1, 1, "S8587C2");
    set_bf_and_test(lv, s8587c2f7, ABISELECT(64,44), 2, 1, 1, "S8587C2");
    check_field_offset(lv, s8587c2f8, ABISELECT(72,48), "S8587C2.s8587c2f8");
    check_field_offset(lv, s8587c2f9, ABISELECT(88,56), "S8587C2.s8587c2f9");
    check_field_offset(lv, s8587c2f10, ABISELECT(120,76), "S8587C2.s8587c2f10");
    check_field_offset(lv, s8587c2f11, ABISELECT(128,80), "S8587C2.s8587c2f11");
    check_field_offset(lv, s8587c2f12, ABISELECT(136,84), "S8587C2.s8587c2f12");
    check_field_offset(lv, s8587c2f13, ABISELECT(168,104), "S8587C2.s8587c2f13");
    check_field_offset(lv, s8587c2f14, ABISELECT(200,136), "S8587C2.s8587c2f14");
    check_field_offset(lv, s8587c2f15, ABISELECT(212,148), "S8587C2.s8587c2f15");
    check_field_offset(lv, s8587c2f16, ABISELECT(240,176), "S8587C2.s8587c2f16");
    check_field_offset(lv, s8587c2f17, ABISELECT(256,188), "S8587C2.s8587c2f17");
    check_field_offset(lv, s8587c2f18, ABISELECT(264,196), "S8587C2.s8587c2f18");
    check_field_offset(lv, s8587c2f19, ABISELECT(272,200), "S8587C2.s8587c2f19");
    check_field_offset(lv, s8587c2f20, ABISELECT(280,204), "S8587C2.s8587c2f20");
    check_field_offset(lv, s8587c2f21, ABISELECT(296,216), "S8587C2.s8587c2f21");
    check_field_offset(lv, s8587c2f22, ABISELECT(304,224), "S8587C2.s8587c2f22");
    check_field_offset(lv, s8587c2f23, ABISELECT(312,228), "S8587C2.s8587c2f23");
    test_class_info(&lv, &cd_S8587C2);
    dp->~S8587C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8587C2(Test_S8587C2, "S8587C2", ABISELECT(320,232));

#else // __cplusplus

extern void _ZN7S8587C2C1Ev();
extern void _ZN7S8587C2D1Ev();
Name_Map name_map_S8587C2[] = {
  NSPAIR(_ZN7S8587C2C1Ev),
  NSPAIR(_ZN7S8587C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8587C2[];
extern void _ZN7S8587C2D1Ev();
extern void _ZN7S8587C2D0Ev();
extern void _ZN7S8587C23v13Ev();
extern void _ZN7S8587C23v14Ev();
extern void _ZN7S8587C23v15Ev();
extern void _ZN7S8587C23v16Ev();
extern void _ZN7S8587C23v17Ev();
extern void _ZN7S8587C23v18Ev();
extern void _ZN7S8587C23v19Ev();
extern void _ZN7S8587C23v20Ev();
extern void _ZN7S8587C23v21Ev();
extern void _ZN7S8587C23v22Ev();
extern void _ZN7S8587C23v23Ev();
extern void _ZN7S8587C23v24Ev();
extern void _ZN7S8587C23v25Ev();
extern void _ZN7S8587C23v26Ev();
extern void _ZN7S8587C23v27Ev();
extern void _ZN7S8587C23v28Ev();
extern void _ZN7S8587C23v29Ev();
extern void _ZN7S8587C23v30Ev();
extern void _ZN7S8587C23v31Ev();
extern void _ZN7S8587C23v32Ev();
extern void _ZN7S8587C23v33Ev();
extern void _ZN7S8587C23v34Ev();
extern void _ZN7S8587C23v35Ev();
extern void _ZN7S8587C23v36Ev();
extern void _ZN7S8587C23v37Ev();
extern void _ZN7S8587C23v38Ev();
extern void _ZN7S8587C23v39Ev();
extern void _ZN7S8587C23v40Ev();
extern void _ZN7S8587C23v41Ev();
extern void _ZN7S8587C23v42Ev();
extern void _ZN7S8587C23v43Ev();
extern void _ZN7S8587C23v44Ev();
extern void _ZN7S8587C23v45Ev();
extern void _ZN7S8587C23v46Ev();
extern void _ZN7S8587C23v47Ev();
static  VTBL_ENTRY vtc_S8587C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8587C2[0]),
  (VTBL_ENTRY)&_ZN7S8587C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8587C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v30Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v31Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v32Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v33Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v34Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v35Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v36Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v37Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v38Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v39Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v40Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v41Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v42Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v43Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v44Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v45Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v46Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v47Ev,
};
extern VTBL_ENTRY _ZTI7S8587C2[];
extern  VTBL_ENTRY _ZTV7S8587C2[];
Class_Descriptor cd_S8587C2 = {  "S8587C2", // class name
  0,0,//no base classes
  &(vtc_S8587C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,232), // object size
  NSPAIRA(_ZTI7S8587C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8587C2),39, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8587C1  : S8587C2 {
  void *s8587c1f0[2];
  int s8587c1f1;
  void *s8587c1f2;
  int s8587c1f3;
  void *s8587c1f4;
  int s8587c1f5;
  unsigned int s8587c1f6:1;
  int s8587c1f7[7];
  ::S3214C18 s8587c1f8;
  int s8587c1f9[2];
  ::S3214C23 s8587c1f10;
  ::S3214C12 s8587c1f11;
  ::S3214C12 s8587c1f12;
  ::S3214C12 s8587c1f13;
  ::S3214C12 s8587c1f14;
  ::S3214C12 s8587c1f15;
  ::S3214C23 s8587c1f16;
  void *s8587c1f17;
  ::S3214C12 s8587c1f18;
  void *s8587c1f19;
  int s8587c1f20;
  virtual  ~S8587C1(); // _ZN7S8587C1D1Ev
  virtual void  v1(); // _ZN7S8587C12v1Ev
  virtual void  v2(); // _ZN7S8587C12v2Ev
  virtual void  v3(); // _ZN7S8587C12v3Ev
  virtual void  v4(); // _ZN7S8587C12v4Ev
  virtual void  v5(); // _ZN7S8587C12v5Ev
  virtual void  v6(); // _ZN7S8587C12v6Ev
  virtual void  v7(); // _ZN7S8587C12v7Ev
  virtual void  v8(); // _ZN7S8587C12v8Ev
  virtual void  v9(); // _ZN7S8587C12v9Ev
  virtual void  v10(); // _ZN7S8587C13v10Ev
  virtual void  v11(); // _ZN7S8587C13v11Ev
  virtual void  v12(); // _ZN7S8587C13v12Ev
  S8587C1(); // tgen
};
//SIG(1 S8587C1) C1{ BC2{ vd v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 Fp[2] Fi Fp Fi[3] FC3{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC4 Fi[8] FC3 FC8{ m FC3 FC3 Fc} FC6 Fi[2] Fp Fi FC9{ BC7} Fi[2] Fp Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp[2] Fi Fp Fi Fp Fi Fi:1 Fi[7] FC10{ BC7} Fi[2] FC9 FC11{ BC7} FC11 FC11 FC11 FC11 FC9 Fp FC11 Fp Fi}


 S8587C1 ::~S8587C1(){ note_dtor("S8587C1", this);}
void  S8587C1 ::v1(){vfunc_called(this, "_ZN7S8587C12v1Ev");}
void  S8587C1 ::v2(){vfunc_called(this, "_ZN7S8587C12v2Ev");}
void  S8587C1 ::v3(){vfunc_called(this, "_ZN7S8587C12v3Ev");}
void  S8587C1 ::v4(){vfunc_called(this, "_ZN7S8587C12v4Ev");}
void  S8587C1 ::v5(){vfunc_called(this, "_ZN7S8587C12v5Ev");}
void  S8587C1 ::v6(){vfunc_called(this, "_ZN7S8587C12v6Ev");}
void  S8587C1 ::v7(){vfunc_called(this, "_ZN7S8587C12v7Ev");}
void  S8587C1 ::v8(){vfunc_called(this, "_ZN7S8587C12v8Ev");}
void  S8587C1 ::v9(){vfunc_called(this, "_ZN7S8587C12v9Ev");}
void  S8587C1 ::v10(){vfunc_called(this, "_ZN7S8587C13v10Ev");}
void  S8587C1 ::v11(){vfunc_called(this, "_ZN7S8587C13v11Ev");}
void  S8587C1 ::v12(){vfunc_called(this, "_ZN7S8587C13v12Ev");}
S8587C1 ::S8587C1(){ note_ctor("S8587C1", this);} // tgen

static void Test_S8587C1()
{
  extern Class_Descriptor cd_S8587C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(74,106)];
    init_test(&cd_S8587C1, buf);
    S8587C1 *dp, &lv = *(dp=new (buf) S8587C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(584,420), "sizeof(S8587C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8587C1)");
    check_base_class_offset(lv, (S8587C2*), 0, "S8587C1");
    check_field_offset(lv, s8587c1f0, ABISELECT(320,232), "S8587C1.s8587c1f0");
    check_field_offset(lv, s8587c1f1, ABISELECT(336,240), "S8587C1.s8587c1f1");
    check_field_offset(lv, s8587c1f2, ABISELECT(344,244), "S8587C1.s8587c1f2");
    check_field_offset(lv, s8587c1f3, ABISELECT(352,248), "S8587C1.s8587c1f3");
    check_field_offset(lv, s8587c1f4, ABISELECT(360,252), "S8587C1.s8587c1f4");
    check_field_offset(lv, s8587c1f5, ABISELECT(368,256), "S8587C1.s8587c1f5");
    set_bf_and_test(lv, s8587c1f6, ABISELECT(372,260), 0, 1, 1, "S8587C1");
    check_field_offset(lv, s8587c1f7, ABISELECT(376,264), "S8587C1.s8587c1f7");
    check_field_offset(lv, s8587c1f8, ABISELECT(408,292), "S8587C1.s8587c1f8");
    check_field_offset(lv, s8587c1f9, ABISELECT(424,304), "S8587C1.s8587c1f9");
    check_field_offset(lv, s8587c1f10, ABISELECT(432,312), "S8587C1.s8587c1f10");
    check_field_offset(lv, s8587c1f11, ABISELECT(448,324), "S8587C1.s8587c1f11");
    check_field_offset(lv, s8587c1f12, ABISELECT(464,336), "S8587C1.s8587c1f12");
    check_field_offset(lv, s8587c1f13, ABISELECT(480,348), "S8587C1.s8587c1f13");
    check_field_offset(lv, s8587c1f14, ABISELECT(496,360), "S8587C1.s8587c1f14");
    check_field_offset(lv, s8587c1f15, ABISELECT(512,372), "S8587C1.s8587c1f15");
    check_field_offset(lv, s8587c1f16, ABISELECT(528,384), "S8587C1.s8587c1f16");
    check_field_offset(lv, s8587c1f17, ABISELECT(544,396), "S8587C1.s8587c1f17");
    check_field_offset(lv, s8587c1f18, ABISELECT(552,400), "S8587C1.s8587c1f18");
    check_field_offset(lv, s8587c1f19, ABISELECT(568,412), "S8587C1.s8587c1f19");
    check_field_offset(lv, s8587c1f20, ABISELECT(576,416), "S8587C1.s8587c1f20");
    test_class_info(&lv, &cd_S8587C1);
    dp->~S8587C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8587C1(Test_S8587C1, "S8587C1", ABISELECT(584,420));

#else // __cplusplus

extern void _ZN7S8587C1C1Ev();
extern void _ZN7S8587C1D1Ev();
Name_Map name_map_S8587C1[] = {
  NSPAIR(_ZN7S8587C1C1Ev),
  NSPAIR(_ZN7S8587C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8587C2;
extern VTBL_ENTRY _ZTI7S8587C2[];
extern  VTBL_ENTRY _ZTV7S8587C2[];
static Base_Class bases_S8587C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8587C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8587C1[];
extern void _ZN7S8587C1D1Ev();
extern void _ZN7S8587C1D0Ev();
extern void _ZN7S8587C23v13Ev();
extern void _ZN7S8587C23v14Ev();
extern void _ZN7S8587C23v15Ev();
extern void _ZN7S8587C23v16Ev();
extern void _ZN7S8587C23v17Ev();
extern void _ZN7S8587C23v18Ev();
extern void _ZN7S8587C23v19Ev();
extern void _ZN7S8587C23v20Ev();
extern void _ZN7S8587C23v21Ev();
extern void _ZN7S8587C23v22Ev();
extern void _ZN7S8587C23v23Ev();
extern void _ZN7S8587C23v24Ev();
extern void _ZN7S8587C23v25Ev();
extern void _ZN7S8587C23v26Ev();
extern void _ZN7S8587C23v27Ev();
extern void _ZN7S8587C23v28Ev();
extern void _ZN7S8587C23v29Ev();
extern void _ZN7S8587C23v30Ev();
extern void _ZN7S8587C23v31Ev();
extern void _ZN7S8587C23v32Ev();
extern void _ZN7S8587C23v33Ev();
extern void _ZN7S8587C23v34Ev();
extern void _ZN7S8587C23v35Ev();
extern void _ZN7S8587C23v36Ev();
extern void _ZN7S8587C23v37Ev();
extern void _ZN7S8587C23v38Ev();
extern void _ZN7S8587C23v39Ev();
extern void _ZN7S8587C23v40Ev();
extern void _ZN7S8587C23v41Ev();
extern void _ZN7S8587C23v42Ev();
extern void _ZN7S8587C23v43Ev();
extern void _ZN7S8587C23v44Ev();
extern void _ZN7S8587C23v45Ev();
extern void _ZN7S8587C23v46Ev();
extern void _ZN7S8587C23v47Ev();
extern void _ZN7S8587C12v1Ev();
extern void _ZN7S8587C12v2Ev();
extern void _ZN7S8587C12v3Ev();
extern void _ZN7S8587C12v4Ev();
extern void _ZN7S8587C12v5Ev();
extern void _ZN7S8587C12v6Ev();
extern void _ZN7S8587C12v7Ev();
extern void _ZN7S8587C12v8Ev();
extern void _ZN7S8587C12v9Ev();
extern void _ZN7S8587C13v10Ev();
extern void _ZN7S8587C13v11Ev();
extern void _ZN7S8587C13v12Ev();
static  VTBL_ENTRY vtc_S8587C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8587C1[0]),
  (VTBL_ENTRY)&_ZN7S8587C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8587C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v30Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v31Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v32Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v33Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v34Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v35Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v36Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v37Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v38Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v39Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v40Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v41Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v42Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v43Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v44Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v45Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v46Ev,
  (VTBL_ENTRY)&_ZN7S8587C23v47Ev,
  (VTBL_ENTRY)&_ZN7S8587C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8587C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8587C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8587C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8587C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8587C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8587C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8587C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8587C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8587C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8587C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8587C13v12Ev,
};
extern VTBL_ENTRY _ZTI7S8587C1[];
extern  VTBL_ENTRY _ZTV7S8587C1[];
Class_Descriptor cd_S8587C1 = {  "S8587C1", // class name
  bases_S8587C1, 1,
  &(vtc_S8587C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(584,420), // object size
  NSPAIRA(_ZTI7S8587C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8587C1),51, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8614C2_nt  {
  void *s8614c2f0;
  ::S4227C37 s8614c2f1;
  int s8614c2f2;
  ::S9141C28_nt s8614c2f3;
  unsigned int s8614c2f4:1;
  unsigned int s8614c2f5:1;
  unsigned int s8614c2f6:1;
  unsigned int s8614c2f7:1;
  unsigned int s8614c2f8:1;
  unsigned int s8614c2f9:1;
  unsigned int s8614c2f10:1;
  int s8614c2f11:3;
  int s8614c2f12:3;
  ::S3214C23 s8614c2f13;
  int s8614c2f14;
  virtual  ~S8614C2_nt(); // _ZN10S8614C2_ntD1Ev
  virtual void  v15(); // _ZN10S8614C2_nt3v15Ev
  virtual void  v16(); // _ZN10S8614C2_nt3v16Ev
  virtual void  v17(); // _ZN10S8614C2_nt3v17Ev
  virtual void  v18(); // _ZN10S8614C2_nt3v18Ev
  virtual void  v19(); // _ZN10S8614C2_nt3v19Ev
  virtual void  v20(); // _ZN10S8614C2_nt3v20Ev
  virtual void  v21(); // _ZN10S8614C2_nt3v21Ev
  virtual void  v22(); // _ZN10S8614C2_nt3v22Ev
  virtual void  v23(); // _ZN10S8614C2_nt3v23Ev
  virtual void  v24(); // _ZN10S8614C2_nt3v24Ev
  virtual void  v25(); // _ZN10S8614C2_nt3v25Ev
  virtual void  v26(); // _ZN10S8614C2_nt3v26Ev
  virtual void  v27(); // _ZN10S8614C2_nt3v27Ev
  virtual void  v28(); // _ZN10S8614C2_nt3v28Ev
  virtual void  v29(); // _ZN10S8614C2_nt3v29Ev
  virtual void  v30(); // _ZN10S8614C2_nt3v30Ev
  virtual void  v31(); // _ZN10S8614C2_nt3v31Ev
  virtual void  v32(); // _ZN10S8614C2_nt3v32Ev
  S8614C2_nt(); // tgen
};
//SIG(-1 S8614C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S8614C2_nt ::~S8614C2_nt(){ note_dtor("S8614C2_nt", this);}
void  S8614C2_nt ::v15(){vfunc_called(this, "_ZN10S8614C2_nt3v15Ev");}
void  S8614C2_nt ::v16(){vfunc_called(this, "_ZN10S8614C2_nt3v16Ev");}
void  S8614C2_nt ::v17(){vfunc_called(this, "_ZN10S8614C2_nt3v17Ev");}
void  S8614C2_nt ::v18(){vfunc_called(this, "_ZN10S8614C2_nt3v18Ev");}
void  S8614C2_nt ::v19(){vfunc_called(this, "_ZN10S8614C2_nt3v19Ev");}
void  S8614C2_nt ::v20(){vfunc_called(this, "_ZN10S8614C2_nt3v20Ev");}
void  S8614C2_nt ::v21(){vfunc_called(this, "_ZN10S8614C2_nt3v21Ev");}
void  S8614C2_nt ::v22(){vfunc_called(this, "_ZN10S8614C2_nt3v22Ev");}
void  S8614C2_nt ::v23(){vfunc_called(this, "_ZN10S8614C2_nt3v23Ev");}
void  S8614C2_nt ::v24(){vfunc_called(this, "_ZN10S8614C2_nt3v24Ev");}
void  S8614C2_nt ::v25(){vfunc_called(this, "_ZN10S8614C2_nt3v25Ev");}
void  S8614C2_nt ::v26(){vfunc_called(this, "_ZN10S8614C2_nt3v26Ev");}
void  S8614C2_nt ::v27(){vfunc_called(this, "_ZN10S8614C2_nt3v27Ev");}
void  S8614C2_nt ::v28(){vfunc_called(this, "_ZN10S8614C2_nt3v28Ev");}
void  S8614C2_nt ::v29(){vfunc_called(this, "_ZN10S8614C2_nt3v29Ev");}
void  S8614C2_nt ::v30(){vfunc_called(this, "_ZN10S8614C2_nt3v30Ev");}
void  S8614C2_nt ::v31(){vfunc_called(this, "_ZN10S8614C2_nt3v31Ev");}
void  S8614C2_nt ::v32(){vfunc_called(this, "_ZN10S8614C2_nt3v32Ev");}
S8614C2_nt ::S8614C2_nt(){ note_ctor("S8614C2_nt", this);} // tgen

//skip512 S8614C2_nt

#else // __cplusplus

extern void _ZN10S8614C2_ntC1Ev();
extern void _ZN10S8614C2_ntD1Ev();
Name_Map name_map_S8614C2_nt[] = {
  NSPAIR(_ZN10S8614C2_ntC1Ev),
  NSPAIR(_ZN10S8614C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8614C2_nt[];
extern void _ZN10S8614C2_ntD1Ev();
extern void _ZN10S8614C2_ntD0Ev();
extern void _ZN10S8614C2_nt3v15Ev();
extern void _ZN10S8614C2_nt3v16Ev();
extern void _ZN10S8614C2_nt3v17Ev();
extern void _ZN10S8614C2_nt3v18Ev();
extern void _ZN10S8614C2_nt3v19Ev();
extern void _ZN10S8614C2_nt3v20Ev();
extern void _ZN10S8614C2_nt3v21Ev();
extern void _ZN10S8614C2_nt3v22Ev();
extern void _ZN10S8614C2_nt3v23Ev();
extern void _ZN10S8614C2_nt3v24Ev();
extern void _ZN10S8614C2_nt3v25Ev();
extern void _ZN10S8614C2_nt3v26Ev();
extern void _ZN10S8614C2_nt3v27Ev();
extern void _ZN10S8614C2_nt3v28Ev();
extern void _ZN10S8614C2_nt3v29Ev();
extern void _ZN10S8614C2_nt3v30Ev();
extern void _ZN10S8614C2_nt3v31Ev();
extern void _ZN10S8614C2_nt3v32Ev();
static  VTBL_ENTRY vtc_S8614C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8614C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8614C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v32Ev,
};
extern VTBL_ENTRY _ZTI10S8614C2_nt[];
VTBL_ENTRY *P__ZTI10S8614C2_nt = _ZTI10S8614C2_nt; 
extern  VTBL_ENTRY _ZTV10S8614C2_nt[];
Class_Descriptor cd_S8614C2_nt = {  "S8614C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8614C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI10S8614C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8614C2_nt),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8614C7_nt  {
  virtual  ~S8614C7_nt(); // _ZN10S8614C7_ntD1Ev
  virtual void  v33(); // _ZN10S8614C7_nt3v33Ev
  virtual void  v34(); // _ZN10S8614C7_nt3v34Ev
  virtual void  v35(); // _ZN10S8614C7_nt3v35Ev
  virtual void  v36(); // _ZN10S8614C7_nt3v36Ev
  virtual void  v37(); // _ZN10S8614C7_nt3v37Ev
  S8614C7_nt(); // tgen
};
//SIG(-1 S8614C7_nt) C1{ vd v1 v2 v3 v4 v5}


 S8614C7_nt ::~S8614C7_nt(){ note_dtor("S8614C7_nt", this);}
void  S8614C7_nt ::v33(){vfunc_called(this, "_ZN10S8614C7_nt3v33Ev");}
void  S8614C7_nt ::v34(){vfunc_called(this, "_ZN10S8614C7_nt3v34Ev");}
void  S8614C7_nt ::v35(){vfunc_called(this, "_ZN10S8614C7_nt3v35Ev");}
void  S8614C7_nt ::v36(){vfunc_called(this, "_ZN10S8614C7_nt3v36Ev");}
void  S8614C7_nt ::v37(){vfunc_called(this, "_ZN10S8614C7_nt3v37Ev");}
S8614C7_nt ::S8614C7_nt(){ note_ctor("S8614C7_nt", this);} // tgen

//skip512 S8614C7_nt

#else // __cplusplus

extern void _ZN10S8614C7_ntC1Ev();
extern void _ZN10S8614C7_ntD1Ev();
Name_Map name_map_S8614C7_nt[] = {
  NSPAIR(_ZN10S8614C7_ntC1Ev),
  NSPAIR(_ZN10S8614C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8614C7_nt[];
extern void _ZN10S8614C7_ntD1Ev();
extern void _ZN10S8614C7_ntD0Ev();
extern void _ZN10S8614C7_nt3v33Ev();
extern void _ZN10S8614C7_nt3v34Ev();
extern void _ZN10S8614C7_nt3v35Ev();
extern void _ZN10S8614C7_nt3v36Ev();
extern void _ZN10S8614C7_nt3v37Ev();
static  VTBL_ENTRY vtc_S8614C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8614C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S8614C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8614C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S8614C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S8614C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S8614C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S8614C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S8614C7_nt3v37Ev,
};
extern VTBL_ENTRY _ZTI10S8614C7_nt[];
VTBL_ENTRY *P__ZTI10S8614C7_nt = _ZTI10S8614C7_nt; 
extern  VTBL_ENTRY _ZTV10S8614C7_nt[];
Class_Descriptor cd_S8614C7_nt = {  "S8614C7_nt", // class name
  0,0,//no base classes
  &(vtc_S8614C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S8614C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8614C7_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  S8614C10  {
  virtual void  v42(); // _ZN8S8614C103v42Ev
  virtual void  v43(); // _ZN8S8614C103v43Ev
  virtual void  v44(); // _ZN8S8614C103v44Ev
  virtual void  v45(); // _ZN8S8614C103v45Ev
  ~S8614C10(); // tgen
  S8614C10(); // tgen
};
//SIG(-1 S8614C10) C1{ v1 v2 v3 v4}


void  S8614C10 ::v42(){vfunc_called(this, "_ZN8S8614C103v42Ev");}
void  S8614C10 ::v43(){vfunc_called(this, "_ZN8S8614C103v43Ev");}
void  S8614C10 ::v44(){vfunc_called(this, "_ZN8S8614C103v44Ev");}
void  S8614C10 ::v45(){vfunc_called(this, "_ZN8S8614C103v45Ev");}
S8614C10 ::~S8614C10(){ note_dtor("S8614C10", this);} // tgen
S8614C10 ::S8614C10(){ note_ctor("S8614C10", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S8614C10C1Ev();
extern void _ZN8S8614C10D1Ev();
Name_Map name_map_S8614C10[] = {
  NSPAIR(_ZN8S8614C10C1Ev),
  NSPAIR(_ZN8S8614C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S8614C10[];
extern void _ZN8S8614C103v42Ev();
extern void _ZN8S8614C103v43Ev();
extern void _ZN8S8614C103v44Ev();
extern void _ZN8S8614C103v45Ev();
static  VTBL_ENTRY vtc_S8614C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S8614C10[0]),
  (VTBL_ENTRY)&_ZN8S8614C103v42Ev,
  (VTBL_ENTRY)&_ZN8S8614C103v43Ev,
  (VTBL_ENTRY)&_ZN8S8614C103v44Ev,
  (VTBL_ENTRY)&_ZN8S8614C103v45Ev,
};
extern VTBL_ENTRY _ZTI8S8614C10[];
extern  VTBL_ENTRY _ZTV8S8614C10[];
Class_Descriptor cd_S8614C10 = {  "S8614C10", // class name
  0,0,//no base classes
  &(vtc_S8614C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S8614C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S8614C10),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  S8614C9  : S8614C10 {
  void *s8614c9f0;
  ::S3444C17_nt s8614c9f1;
  virtual void  v38(); // _ZN7S8614C93v38Ev
  virtual void  v39(); // _ZN7S8614C93v39Ev
  virtual void  v40(); // _ZN7S8614C93v40Ev
  virtual void  v41(); // _ZN7S8614C93v41Ev
  ~S8614C9(); // tgen
  S8614C9(); // tgen
};
//SIG(-1 S8614C9) C1{ BC2{ v5 v6 v7 v8} v1 v2 v3 v4 Fp FC3{ m Fi[4]}}


void  S8614C9 ::v38(){vfunc_called(this, "_ZN7S8614C93v38Ev");}
void  S8614C9 ::v39(){vfunc_called(this, "_ZN7S8614C93v39Ev");}
void  S8614C9 ::v40(){vfunc_called(this, "_ZN7S8614C93v40Ev");}
void  S8614C9 ::v41(){vfunc_called(this, "_ZN7S8614C93v41Ev");}
S8614C9 ::~S8614C9(){ note_dtor("S8614C9", this);} // tgen
S8614C9 ::S8614C9(){ note_ctor("S8614C9", this);} // tgen

static void Test_S8614C9()
{
  extern Class_Descriptor cd_S8614C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S8614C9, buf);
    S8614C9 *dp, &lv = *(dp=new (buf) S8614C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S8614C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8614C9)");
    check_base_class_offset(lv, (S8614C10*), 0, "S8614C9");
    check_field_offset(lv, s8614c9f0, ABISELECT(8,4), "S8614C9.s8614c9f0");
    check_field_offset(lv, s8614c9f1, ABISELECT(16,8), "S8614C9.s8614c9f1");
    test_class_info(&lv, &cd_S8614C9);
    dp->~S8614C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8614C9(Test_S8614C9, "S8614C9", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S8614C9C1Ev();
extern void _ZN7S8614C9D1Ev();
Name_Map name_map_S8614C9[] = {
  NSPAIR(_ZN7S8614C9C1Ev),
  NSPAIR(_ZN7S8614C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8614C10;
extern VTBL_ENTRY _ZTI8S8614C10[];
extern  VTBL_ENTRY _ZTV8S8614C10[];
static Base_Class bases_S8614C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8614C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8614C9[];
extern void _ZN8S8614C103v42Ev();
extern void _ZN8S8614C103v43Ev();
extern void _ZN8S8614C103v44Ev();
extern void _ZN8S8614C103v45Ev();
extern void _ZN7S8614C93v38Ev();
extern void _ZN7S8614C93v39Ev();
extern void _ZN7S8614C93v40Ev();
extern void _ZN7S8614C93v41Ev();
static  VTBL_ENTRY vtc_S8614C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8614C9[0]),
  (VTBL_ENTRY)&_ZN8S8614C103v42Ev,
  (VTBL_ENTRY)&_ZN8S8614C103v43Ev,
  (VTBL_ENTRY)&_ZN8S8614C103v44Ev,
  (VTBL_ENTRY)&_ZN8S8614C103v45Ev,
  (VTBL_ENTRY)&_ZN7S8614C93v38Ev,
  (VTBL_ENTRY)&_ZN7S8614C93v39Ev,
  (VTBL_ENTRY)&_ZN7S8614C93v40Ev,
  (VTBL_ENTRY)&_ZN7S8614C93v41Ev,
};
extern VTBL_ENTRY _ZTI7S8614C9[];
extern  VTBL_ENTRY _ZTV7S8614C9[];
Class_Descriptor cd_S8614C9 = {  "S8614C9", // class name
  bases_S8614C9, 1,
  &(vtc_S8614C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S8614C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8614C9),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  S8614C18_nt  {
  unsigned int s8614c18f0:1;
  unsigned int s8614c18f1:1;
  unsigned int s8614c18f2:1;
  unsigned int s8614c18f3:1;
  unsigned int s8614c18f4:1;
  void  mf8614c18(); // _ZN11S8614C18_nt9mf8614c18Ev
};
//SIG(-1 S8614C18_nt) C1{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1}


void  S8614C18_nt ::mf8614c18(){}

//skip512 S8614C18_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8614C1  : S8614C2_nt , S8614C7_nt {
  int s8614c1f0[5];
  void *s8614c1f1[3];
  int s8614c1f2;
  ::S3444C17_nt s8614c1f3;
  ::S3444C17_nt s8614c1f4;
  int s8614c1f5;
  unsigned int s8614c1f6:1;
  unsigned int s8614c1f7:1;
  ::S8614C9 s8614c1f8;
  ::S8614C9 s8614c1f9;
  void *s8614c1f10;
  int s8614c1f11;
  ::S3214C18 s8614c1f12;
  ::S9141C26 s8614c1f13;
  ::S9141C20_nt s8614c1f14;
  ::S8614C18_nt s8614c1f15;
  virtual  ~S8614C1(); // _ZN7S8614C1D1Ev
  virtual void  v1(); // _ZN7S8614C12v1Ev
  virtual void  v2(); // _ZN7S8614C12v2Ev
  virtual void  v3(); // _ZN7S8614C12v3Ev
  virtual void  v4(); // _ZN7S8614C12v4Ev
  virtual void  v5(); // _ZN7S8614C12v5Ev
  virtual void  v6(); // _ZN7S8614C12v6Ev
  virtual void  v7(); // _ZN7S8614C12v7Ev
  virtual void  v8(); // _ZN7S8614C12v8Ev
  virtual void  v9(); // _ZN7S8614C12v9Ev
  virtual void  v10(); // _ZN7S8614C13v10Ev
  virtual void  v11(); // _ZN7S8614C13v11Ev
  virtual void  v12(); // _ZN7S8614C13v12Ev
  virtual void  v13(); // _ZN7S8614C13v13Ev
  virtual void  v14(); // _ZN7S8614C13v14Ev
  S8614C1(); // tgen
};
//SIG(1 S8614C1) C1{ BC2{ vd v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} BC7{ vd v33 v34 v35 v36 v37} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[5] Fp[3] Fi FC8{ m Fi[4]} FC8 Fi Fi:1 Fi:1 FC9{ BC10{ v42 v43 v44 v45} v38 v39 v40 v41 Fp FC8} FC9 Fp Fi FC11{ BC5} FC12{ BC13{ m FC4 Fp Fi}} FC14{ BC15{ m FC6 Fp Fi}} FC16{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1}}


 S8614C1 ::~S8614C1(){ note_dtor("S8614C1", this);}
void  S8614C1 ::v1(){vfunc_called(this, "_ZN7S8614C12v1Ev");}
void  S8614C1 ::v2(){vfunc_called(this, "_ZN7S8614C12v2Ev");}
void  S8614C1 ::v3(){vfunc_called(this, "_ZN7S8614C12v3Ev");}
void  S8614C1 ::v4(){vfunc_called(this, "_ZN7S8614C12v4Ev");}
void  S8614C1 ::v5(){vfunc_called(this, "_ZN7S8614C12v5Ev");}
void  S8614C1 ::v6(){vfunc_called(this, "_ZN7S8614C12v6Ev");}
void  S8614C1 ::v7(){vfunc_called(this, "_ZN7S8614C12v7Ev");}
void  S8614C1 ::v8(){vfunc_called(this, "_ZN7S8614C12v8Ev");}
void  S8614C1 ::v9(){vfunc_called(this, "_ZN7S8614C12v9Ev");}
void  S8614C1 ::v10(){vfunc_called(this, "_ZN7S8614C13v10Ev");}
void  S8614C1 ::v11(){vfunc_called(this, "_ZN7S8614C13v11Ev");}
void  S8614C1 ::v12(){vfunc_called(this, "_ZN7S8614C13v12Ev");}
void  S8614C1 ::v13(){vfunc_called(this, "_ZN7S8614C13v13Ev");}
void  S8614C1 ::v14(){vfunc_called(this, "_ZN7S8614C13v14Ev");}
S8614C1 ::S8614C1(){ note_ctor("S8614C1", this);} // tgen

static void Test_S8614C1()
{
  extern Class_Descriptor cd_S8614C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(44,61)];
    init_test(&cd_S8614C1, buf);
    S8614C1 *dp, &lv = *(dp=new (buf) S8614C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(344,240), "sizeof(S8614C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8614C1)");
    check_base_class_offset(lv, (S8614C2_nt*), 0, "S8614C1");
    check_base_class_offset(lv, (S8614C7_nt*), ABISELECT(72,48), "S8614C1");
    check_field_offset(lv, s8614c1f0, ABISELECT(80,52), "S8614C1.s8614c1f0");
    check_field_offset(lv, s8614c1f1, ABISELECT(104,72), "S8614C1.s8614c1f1");
    check_field_offset(lv, s8614c1f2, ABISELECT(128,84), "S8614C1.s8614c1f2");
    check_field_offset(lv, s8614c1f3, ABISELECT(132,88), "S8614C1.s8614c1f3");
    check_field_offset(lv, s8614c1f4, ABISELECT(148,104), "S8614C1.s8614c1f4");
    check_field_offset(lv, s8614c1f5, ABISELECT(164,120), "S8614C1.s8614c1f5");
    set_bf_and_test(lv, s8614c1f6, ABISELECT(168,124), 0, 1, 1, "S8614C1");
    set_bf_and_test(lv, s8614c1f7, ABISELECT(168,124), 1, 1, 1, "S8614C1");
    check_field_offset(lv, s8614c1f8, ABISELECT(176,128), "S8614C1.s8614c1f8");
    check_field_offset(lv, s8614c1f9, ABISELECT(208,152), "S8614C1.s8614c1f9");
    check_field_offset(lv, s8614c1f10, ABISELECT(240,176), "S8614C1.s8614c1f10");
    check_field_offset(lv, s8614c1f11, ABISELECT(248,180), "S8614C1.s8614c1f11");
    check_field_offset(lv, s8614c1f12, ABISELECT(256,184), "S8614C1.s8614c1f12");
    check_field_offset(lv, s8614c1f13, ABISELECT(272,196), "S8614C1.s8614c1f13");
    check_field_offset(lv, s8614c1f14, ABISELECT(304,216), "S8614C1.s8614c1f14");
    check_field_offset(lv, s8614c1f15, ABISELECT(336,236), "S8614C1.s8614c1f15");
    test_class_info(&lv, &cd_S8614C1);
    dp->~S8614C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8614C1(Test_S8614C1, "S8614C1", ABISELECT(344,240));

#else // __cplusplus

extern void _ZN7S8614C1C1Ev();
extern void _ZN7S8614C1D1Ev();
Name_Map name_map_S8614C1[] = {
  NSPAIR(_ZN7S8614C1C1Ev),
  NSPAIR(_ZN7S8614C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8614C2_nt;
extern VTBL_ENTRY _ZTI10S8614C2_nt[];
extern  VTBL_ENTRY _ZTV10S8614C2_nt[];
extern Class_Descriptor cd_S8614C7_nt;
extern VTBL_ENTRY _ZTI10S8614C7_nt[];
extern  VTBL_ENTRY _ZTV10S8614C7_nt[];
static Base_Class bases_S8614C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8614C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S8614C7_nt,    ABISELECT(72,48), //bcp->offset
    36, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S8614C1[];
extern void _ZN7S8614C1D1Ev();
extern void _ZN7S8614C1D0Ev();
extern void _ZN10S8614C2_nt3v15Ev();
extern void _ZN10S8614C2_nt3v16Ev();
extern void _ZN10S8614C2_nt3v17Ev();
extern void _ZN10S8614C2_nt3v18Ev();
extern void _ZN10S8614C2_nt3v19Ev();
extern void _ZN10S8614C2_nt3v20Ev();
extern void _ZN10S8614C2_nt3v21Ev();
extern void _ZN10S8614C2_nt3v22Ev();
extern void _ZN10S8614C2_nt3v23Ev();
extern void _ZN10S8614C2_nt3v24Ev();
extern void _ZN10S8614C2_nt3v25Ev();
extern void _ZN10S8614C2_nt3v26Ev();
extern void _ZN10S8614C2_nt3v27Ev();
extern void _ZN10S8614C2_nt3v28Ev();
extern void _ZN10S8614C2_nt3v29Ev();
extern void _ZN10S8614C2_nt3v30Ev();
extern void _ZN10S8614C2_nt3v31Ev();
extern void _ZN10S8614C2_nt3v32Ev();
extern void _ZN7S8614C12v1Ev();
extern void _ZN7S8614C12v2Ev();
extern void _ZN7S8614C12v3Ev();
extern void _ZN7S8614C12v4Ev();
extern void _ZN7S8614C12v5Ev();
extern void _ZN7S8614C12v6Ev();
extern void _ZN7S8614C12v7Ev();
extern void _ZN7S8614C12v8Ev();
extern void _ZN7S8614C12v9Ev();
extern void _ZN7S8614C13v10Ev();
extern void _ZN7S8614C13v11Ev();
extern void _ZN7S8614C13v12Ev();
extern void _ZN7S8614C13v13Ev();
extern void _ZN7S8614C13v14Ev();
extern void ABISELECT(_ZThn72_N7S8614C1D1Ev,_ZThn48_N7S8614C1D1Ev)();
extern void ABISELECT(_ZThn72_N7S8614C1D0Ev,_ZThn48_N7S8614C1D0Ev)();
extern void _ZN10S8614C7_nt3v33Ev();
extern void _ZN10S8614C7_nt3v34Ev();
extern void _ZN10S8614C7_nt3v35Ev();
extern void _ZN10S8614C7_nt3v36Ev();
extern void _ZN10S8614C7_nt3v37Ev();
static  VTBL_ENTRY vtc_S8614C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8614C1[0]),
  (VTBL_ENTRY)&_ZN7S8614C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8614C1D0Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S8614C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN7S8614C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8614C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8614C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8614C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8614C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8614C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8614C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8614C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8614C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8614C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8614C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8614C13v12Ev,
  (VTBL_ENTRY)&_ZN7S8614C13v13Ev,
  (VTBL_ENTRY)&_ZN7S8614C13v14Ev,
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI7S8614C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S8614C1D1Ev,_ZThn48_N7S8614C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S8614C1D0Ev,_ZThn48_N7S8614C1D0Ev),
  (VTBL_ENTRY)&_ZN10S8614C7_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S8614C7_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S8614C7_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S8614C7_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S8614C7_nt3v37Ev,
};
extern VTBL_ENTRY _ZTI7S8614C1[];
extern  VTBL_ENTRY _ZTV7S8614C1[];
Class_Descriptor cd_S8614C1 = {  "S8614C1", // class name
  bases_S8614C1, 2,
  &(vtc_S8614C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(344,240), // object size
  NSPAIRA(_ZTI7S8614C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S8614C1),45, //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  S4208C3  {
  void *s4208c3f0[2];
  int s4208c3f1;
  void *s4208c3f2;
  int s4208c3f3[3];
  ::S3214C13_nt s4208c3f4;
  unsigned int s4208c3f5:1;
  unsigned int s4208c3f6:1;
  unsigned int s4208c3f7:1;
  void *s4208c3f8[2];
  ::S9141C26 s4208c3f9;
  void *s4208c3f10;
  int s4208c3f11;
  ::S9141C26 s4208c3f12;
  int s4208c3f13[8];
  ::S3214C13_nt s4208c3f14;
  ::S9142C8_nt s4208c3f15;
  ::S9141C28_nt s4208c3f16;
  int s4208c3f17[2];
  void *s4208c3f18;
  int s4208c3f19;
  ::S3214C23 s4208c3f20;
  int s4208c3f21[2];
  void *s4208c3f22;
  int s4208c3f23;
  virtual  ~S4208C3(); // _ZN7S4208C3D1Ev
  virtual void  v10(); // _ZN7S4208C33v10Ev
  virtual void  v11(); // _ZN7S4208C33v11Ev
  virtual void  v12(); // _ZN7S4208C33v12Ev
  virtual void  v13(); // _ZN7S4208C33v13Ev
  virtual void  v14(); // _ZN7S4208C33v14Ev
  virtual void  v15(); // _ZN7S4208C33v15Ev
  virtual void  v16(); // _ZN7S4208C33v16Ev
  virtual void  v17(); // _ZN7S4208C33v17Ev
  virtual void  v18(); // _ZN7S4208C33v18Ev
  virtual void  v19(); // _ZN7S4208C33v19Ev
  virtual void  v20(); // _ZN7S4208C33v20Ev
  virtual void  v21(); // _ZN7S4208C33v21Ev
  virtual void  v22(); // _ZN7S4208C33v22Ev
  virtual void  v23(); // _ZN7S4208C33v23Ev
  virtual void  v24(); // _ZN7S4208C33v24Ev
  virtual void  v25(); // _ZN7S4208C33v25Ev
  virtual void  v26(); // _ZN7S4208C33v26Ev
  virtual void  v27(); // _ZN7S4208C33v27Ev
  virtual void  v28(); // _ZN7S4208C33v28Ev
  virtual void  v29(); // _ZN7S4208C33v29Ev
  virtual void  v30(); // _ZN7S4208C33v30Ev
  virtual void  v31(); // _ZN7S4208C33v31Ev
  virtual void  v32(); // _ZN7S4208C33v32Ev
  virtual void  v33(); // _ZN7S4208C33v33Ev
  virtual void  v34(); // _ZN7S4208C33v34Ev
  virtual void  v35(); // _ZN7S4208C33v35Ev
  virtual void  v36(); // _ZN7S4208C33v36Ev
  virtual void  v37(); // _ZN7S4208C33v37Ev
  virtual void  v38(); // _ZN7S4208C33v38Ev
  virtual void  v39(); // _ZN7S4208C33v39Ev
  virtual void  v40(); // _ZN7S4208C33v40Ev
  virtual void  v41(); // _ZN7S4208C33v41Ev
  virtual void  v42(); // _ZN7S4208C33v42Ev
  virtual void  v43(); // _ZN7S4208C33v43Ev
  virtual void  v44(); // _ZN7S4208C33v44Ev
  S4208C3(); // tgen
};
//SIG(-1 S4208C3) 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 Fp[2] Fi Fp Fi[3] FC2{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC3 Fi[8] FC2 FC7{ m FC2 FC2 Fc} FC5 Fi[2] Fp Fi FC8{ BC6} Fi[2] Fp Fi}


 S4208C3 ::~S4208C3(){ note_dtor("S4208C3", this);}
void  S4208C3 ::v10(){vfunc_called(this, "_ZN7S4208C33v10Ev");}
void  S4208C3 ::v11(){vfunc_called(this, "_ZN7S4208C33v11Ev");}
void  S4208C3 ::v12(){vfunc_called(this, "_ZN7S4208C33v12Ev");}
void  S4208C3 ::v13(){vfunc_called(this, "_ZN7S4208C33v13Ev");}
void  S4208C3 ::v14(){vfunc_called(this, "_ZN7S4208C33v14Ev");}
void  S4208C3 ::v15(){vfunc_called(this, "_ZN7S4208C33v15Ev");}
void  S4208C3 ::v16(){vfunc_called(this, "_ZN7S4208C33v16Ev");}
void  S4208C3 ::v17(){vfunc_called(this, "_ZN7S4208C33v17Ev");}
void  S4208C3 ::v18(){vfunc_called(this, "_ZN7S4208C33v18Ev");}
void  S4208C3 ::v19(){vfunc_called(this, "_ZN7S4208C33v19Ev");}
void  S4208C3 ::v20(){vfunc_called(this, "_ZN7S4208C33v20Ev");}
void  S4208C3 ::v21(){vfunc_called(this, "_ZN7S4208C33v21Ev");}
void  S4208C3 ::v22(){vfunc_called(this, "_ZN7S4208C33v22Ev");}
void  S4208C3 ::v23(){vfunc_called(this, "_ZN7S4208C33v23Ev");}
void  S4208C3 ::v24(){vfunc_called(this, "_ZN7S4208C33v24Ev");}
void  S4208C3 ::v25(){vfunc_called(this, "_ZN7S4208C33v25Ev");}
void  S4208C3 ::v26(){vfunc_called(this, "_ZN7S4208C33v26Ev");}
void  S4208C3 ::v27(){vfunc_called(this, "_ZN7S4208C33v27Ev");}
void  S4208C3 ::v28(){vfunc_called(this, "_ZN7S4208C33v28Ev");}
void  S4208C3 ::v29(){vfunc_called(this, "_ZN7S4208C33v29Ev");}
void  S4208C3 ::v30(){vfunc_called(this, "_ZN7S4208C33v30Ev");}
void  S4208C3 ::v31(){vfunc_called(this, "_ZN7S4208C33v31Ev");}
void  S4208C3 ::v32(){vfunc_called(this, "_ZN7S4208C33v32Ev");}
void  S4208C3 ::v33(){vfunc_called(this, "_ZN7S4208C33v33Ev");}
void  S4208C3 ::v34(){vfunc_called(this, "_ZN7S4208C33v34Ev");}
void  S4208C3 ::v35(){vfunc_called(this, "_ZN7S4208C33v35Ev");}
void  S4208C3 ::v36(){vfunc_called(this, "_ZN7S4208C33v36Ev");}
void  S4208C3 ::v37(){vfunc_called(this, "_ZN7S4208C33v37Ev");}
void  S4208C3 ::v38(){vfunc_called(this, "_ZN7S4208C33v38Ev");}
void  S4208C3 ::v39(){vfunc_called(this, "_ZN7S4208C33v39Ev");}
void  S4208C3 ::v40(){vfunc_called(this, "_ZN7S4208C33v40Ev");}
void  S4208C3 ::v41(){vfunc_called(this, "_ZN7S4208C33v41Ev");}
void  S4208C3 ::v42(){vfunc_called(this, "_ZN7S4208C33v42Ev");}
void  S4208C3 ::v43(){vfunc_called(this, "_ZN7S4208C33v43Ev");}
void  S4208C3 ::v44(){vfunc_called(this, "_ZN7S4208C33v44Ev");}
S4208C3 ::S4208C3(){ note_ctor("S4208C3", this);} // tgen

static void Test_S4208C3()
{
  extern Class_Descriptor cd_S4208C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,59)];
    init_test(&cd_S4208C3, buf);
    S4208C3 *dp, &lv = *(dp=new (buf) S4208C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,232), "sizeof(S4208C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4208C3)");
    check_field_offset(lv, s4208c3f0, ABISELECT(8,4), "S4208C3.s4208c3f0");
    check_field_offset(lv, s4208c3f1, ABISELECT(24,12), "S4208C3.s4208c3f1");
    check_field_offset(lv, s4208c3f2, ABISELECT(32,16), "S4208C3.s4208c3f2");
    check_field_offset(lv, s4208c3f3, ABISELECT(40,20), "S4208C3.s4208c3f3");
    check_field_offset(lv, s4208c3f4, ABISELECT(52,32), "S4208C3.s4208c3f4");
    set_bf_and_test(lv, s4208c3f5, ABISELECT(64,44), 0, 1, 1, "S4208C3");
    set_bf_and_test(lv, s4208c3f6, ABISELECT(64,44), 1, 1, 1, "S4208C3");
    set_bf_and_test(lv, s4208c3f7, ABISELECT(64,44), 2, 1, 1, "S4208C3");
    check_field_offset(lv, s4208c3f8, ABISELECT(72,48), "S4208C3.s4208c3f8");
    check_field_offset(lv, s4208c3f9, ABISELECT(88,56), "S4208C3.s4208c3f9");
    check_field_offset(lv, s4208c3f10, ABISELECT(120,76), "S4208C3.s4208c3f10");
    check_field_offset(lv, s4208c3f11, ABISELECT(128,80), "S4208C3.s4208c3f11");
    check_field_offset(lv, s4208c3f12, ABISELECT(136,84), "S4208C3.s4208c3f12");
    check_field_offset(lv, s4208c3f13, ABISELECT(168,104), "S4208C3.s4208c3f13");
    check_field_offset(lv, s4208c3f14, ABISELECT(200,136), "S4208C3.s4208c3f14");
    check_field_offset(lv, s4208c3f15, ABISELECT(212,148), "S4208C3.s4208c3f15");
    check_field_offset(lv, s4208c3f16, ABISELECT(240,176), "S4208C3.s4208c3f16");
    check_field_offset(lv, s4208c3f17, ABISELECT(256,188), "S4208C3.s4208c3f17");
    check_field_offset(lv, s4208c3f18, ABISELECT(264,196), "S4208C3.s4208c3f18");
    check_field_offset(lv, s4208c3f19, ABISELECT(272,200), "S4208C3.s4208c3f19");
    check_field_offset(lv, s4208c3f20, ABISELECT(280,204), "S4208C3.s4208c3f20");
    check_field_offset(lv, s4208c3f21, ABISELECT(296,216), "S4208C3.s4208c3f21");
    check_field_offset(lv, s4208c3f22, ABISELECT(304,224), "S4208C3.s4208c3f22");
    check_field_offset(lv, s4208c3f23, ABISELECT(312,228), "S4208C3.s4208c3f23");
    test_class_info(&lv, &cd_S4208C3);
    dp->~S4208C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4208C3(Test_S4208C3, "S4208C3", ABISELECT(320,232));

#else // __cplusplus

extern void _ZN7S4208C3C1Ev();
extern void _ZN7S4208C3D1Ev();
Name_Map name_map_S4208C3[] = {
  NSPAIR(_ZN7S4208C3C1Ev),
  NSPAIR(_ZN7S4208C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4208C3[];
extern void _ZN7S4208C3D1Ev();
extern void _ZN7S4208C3D0Ev();
extern void _ZN7S4208C33v10Ev();
extern void _ZN7S4208C33v11Ev();
extern void _ZN7S4208C33v12Ev();
extern void _ZN7S4208C33v13Ev();
extern void _ZN7S4208C33v14Ev();
extern void _ZN7S4208C33v15Ev();
extern void _ZN7S4208C33v16Ev();
extern void _ZN7S4208C33v17Ev();
extern void _ZN7S4208C33v18Ev();
extern void _ZN7S4208C33v19Ev();
extern void _ZN7S4208C33v20Ev();
extern void _ZN7S4208C33v21Ev();
extern void _ZN7S4208C33v22Ev();
extern void _ZN7S4208C33v23Ev();
extern void _ZN7S4208C33v24Ev();
extern void _ZN7S4208C33v25Ev();
extern void _ZN7S4208C33v26Ev();
extern void _ZN7S4208C33v27Ev();
extern void _ZN7S4208C33v28Ev();
extern void _ZN7S4208C33v29Ev();
extern void _ZN7S4208C33v30Ev();
extern void _ZN7S4208C33v31Ev();
extern void _ZN7S4208C33v32Ev();
extern void _ZN7S4208C33v33Ev();
extern void _ZN7S4208C33v34Ev();
extern void _ZN7S4208C33v35Ev();
extern void _ZN7S4208C33v36Ev();
extern void _ZN7S4208C33v37Ev();
extern void _ZN7S4208C33v38Ev();
extern void _ZN7S4208C33v39Ev();
extern void _ZN7S4208C33v40Ev();
extern void _ZN7S4208C33v41Ev();
extern void _ZN7S4208C33v42Ev();
extern void _ZN7S4208C33v43Ev();
extern void _ZN7S4208C33v44Ev();
static  VTBL_ENTRY vtc_S4208C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4208C3[0]),
  (VTBL_ENTRY)&_ZN7S4208C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4208C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v10Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v25Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v26Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v27Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v38Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v39Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v40Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v41Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v42Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v43Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v44Ev,
};
extern VTBL_ENTRY _ZTI7S4208C3[];
extern  VTBL_ENTRY _ZTV7S4208C3[];
Class_Descriptor cd_S4208C3 = {  "S4208C3", // class name
  0,0,//no base classes
  &(vtc_S4208C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,232), // object size
  NSPAIRA(_ZTI7S4208C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4208C3),39, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4208C2  : S4208C3 {
  void *s4208c2f0;
  int s4208c2f1[4];
  ::S3214C18 s4208c2f2;
  virtual void  v45(); // _ZN7S4208C23v45Ev
  virtual void  v46(); // _ZN7S4208C23v46Ev
  virtual void  v47(); // _ZN7S4208C23v47Ev
  virtual void  v48(); // _ZN7S4208C23v48Ev
  virtual void  v49(); // _ZN7S4208C23v49Ev
  virtual void  v50(); // _ZN7S4208C23v50Ev
  virtual void  v51(); // _ZN7S4208C23v51Ev
  virtual void  v52(); // _ZN7S4208C23v52Ev
  virtual void  v53(); // _ZN7S4208C23v53Ev
  virtual void  v54(); // _ZN7S4208C23v54Ev
  virtual void  v55(); // _ZN7S4208C23v55Ev
  ~S4208C2(); // tgen
  S4208C2(); // tgen
};
//SIG(-1 S4208C2) C1{ BC2{ vd 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 Fp[2] Fi Fp Fi[3] FC3{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC4 Fi[8] FC3 FC8{ m FC3 FC3 Fc} FC6 Fi[2] Fp Fi FC9{ BC7} Fi[2] Fp Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp Fi[4] FC10{ BC7}}


void  S4208C2 ::v45(){vfunc_called(this, "_ZN7S4208C23v45Ev");}
void  S4208C2 ::v46(){vfunc_called(this, "_ZN7S4208C23v46Ev");}
void  S4208C2 ::v47(){vfunc_called(this, "_ZN7S4208C23v47Ev");}
void  S4208C2 ::v48(){vfunc_called(this, "_ZN7S4208C23v48Ev");}
void  S4208C2 ::v49(){vfunc_called(this, "_ZN7S4208C23v49Ev");}
void  S4208C2 ::v50(){vfunc_called(this, "_ZN7S4208C23v50Ev");}
void  S4208C2 ::v51(){vfunc_called(this, "_ZN7S4208C23v51Ev");}
void  S4208C2 ::v52(){vfunc_called(this, "_ZN7S4208C23v52Ev");}
void  S4208C2 ::v53(){vfunc_called(this, "_ZN7S4208C23v53Ev");}
void  S4208C2 ::v54(){vfunc_called(this, "_ZN7S4208C23v54Ev");}
void  S4208C2 ::v55(){vfunc_called(this, "_ZN7S4208C23v55Ev");}
S4208C2 ::~S4208C2(){ note_dtor("S4208C2", this);} // tgen
S4208C2 ::S4208C2(){ note_ctor("S4208C2", this);} // tgen

static void Test_S4208C2()
{
  extern Class_Descriptor cd_S4208C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(46,67)];
    init_test(&cd_S4208C2, buf);
    S4208C2 *dp, &lv = *(dp=new (buf) S4208C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(360,264), "sizeof(S4208C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4208C2)");
    check_base_class_offset(lv, (S4208C3*), 0, "S4208C2");
    check_field_offset(lv, s4208c2f0, ABISELECT(320,232), "S4208C2.s4208c2f0");
    check_field_offset(lv, s4208c2f1, ABISELECT(328,236), "S4208C2.s4208c2f1");
    check_field_offset(lv, s4208c2f2, ABISELECT(344,252), "S4208C2.s4208c2f2");
    test_class_info(&lv, &cd_S4208C2);
    dp->~S4208C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4208C2(Test_S4208C2, "S4208C2", ABISELECT(360,264));

#else // __cplusplus

extern void _ZN7S4208C2C1Ev();
extern void _ZN7S4208C2D1Ev();
Name_Map name_map_S4208C2[] = {
  NSPAIR(_ZN7S4208C2C1Ev),
  NSPAIR(_ZN7S4208C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4208C3;
extern VTBL_ENTRY _ZTI7S4208C3[];
extern  VTBL_ENTRY _ZTV7S4208C3[];
static Base_Class bases_S4208C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4208C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4208C2[];
extern void _ZN7S4208C2D1Ev();
extern void _ZN7S4208C2D0Ev();
extern void _ZN7S4208C33v10Ev();
extern void _ZN7S4208C33v11Ev();
extern void _ZN7S4208C33v12Ev();
extern void _ZN7S4208C33v13Ev();
extern void _ZN7S4208C33v14Ev();
extern void _ZN7S4208C33v15Ev();
extern void _ZN7S4208C33v16Ev();
extern void _ZN7S4208C33v17Ev();
extern void _ZN7S4208C33v18Ev();
extern void _ZN7S4208C33v19Ev();
extern void _ZN7S4208C33v20Ev();
extern void _ZN7S4208C33v21Ev();
extern void _ZN7S4208C33v22Ev();
extern void _ZN7S4208C33v23Ev();
extern void _ZN7S4208C33v24Ev();
extern void _ZN7S4208C33v25Ev();
extern void _ZN7S4208C33v26Ev();
extern void _ZN7S4208C33v27Ev();
extern void _ZN7S4208C33v28Ev();
extern void _ZN7S4208C33v29Ev();
extern void _ZN7S4208C33v30Ev();
extern void _ZN7S4208C33v31Ev();
extern void _ZN7S4208C33v32Ev();
extern void _ZN7S4208C33v33Ev();
extern void _ZN7S4208C33v34Ev();
extern void _ZN7S4208C33v35Ev();
extern void _ZN7S4208C33v36Ev();
extern void _ZN7S4208C33v37Ev();
extern void _ZN7S4208C33v38Ev();
extern void _ZN7S4208C33v39Ev();
extern void _ZN7S4208C33v40Ev();
extern void _ZN7S4208C33v41Ev();
extern void _ZN7S4208C33v42Ev();
extern void _ZN7S4208C33v43Ev();
extern void _ZN7S4208C33v44Ev();
extern void _ZN7S4208C23v45Ev();
extern void _ZN7S4208C23v46Ev();
extern void _ZN7S4208C23v47Ev();
extern void _ZN7S4208C23v48Ev();
extern void _ZN7S4208C23v49Ev();
extern void _ZN7S4208C23v50Ev();
extern void _ZN7S4208C23v51Ev();
extern void _ZN7S4208C23v52Ev();
extern void _ZN7S4208C23v53Ev();
extern void _ZN7S4208C23v54Ev();
extern void _ZN7S4208C23v55Ev();
static  VTBL_ENTRY vtc_S4208C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4208C2[0]),
  (VTBL_ENTRY)&_ZN7S4208C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4208C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v10Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v25Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v26Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v27Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v38Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v39Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v40Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v41Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v42Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v43Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v44Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v45Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v46Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v47Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v48Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v49Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v50Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v51Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v52Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v53Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v54Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v55Ev,
};
extern VTBL_ENTRY _ZTI7S4208C2[];
extern  VTBL_ENTRY _ZTV7S4208C2[];
Class_Descriptor cd_S4208C2 = {  "S4208C2", // class name
  bases_S4208C2, 1,
  &(vtc_S4208C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(360,264), // object size
  NSPAIRA(_ZTI7S4208C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4208C2),50, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4208C13  {
  void *s4208c13f0[3];
  int s4208c13f1[3];
  void  mf4208c13(); // _ZN8S4208C139mf4208c13Ev
  virtual  ~S4208C13(); // _ZN8S4208C13D1Ev
  S4208C13(); // tgen
};
//SIG(-1 S4208C13) C1{ vd m Fp[3] Fi[3]}


void  S4208C13 ::mf4208c13(){}
 S4208C13 ::~S4208C13(){ note_dtor("S4208C13", this);}
S4208C13 ::S4208C13(){ note_ctor("S4208C13", this);} // tgen

static void Test_S4208C13()
{
  extern Class_Descriptor cd_S4208C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S4208C13, buf);
    S4208C13 *dp, &lv = *(dp=new (buf) S4208C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S4208C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4208C13)");
    check_field_offset(lv, s4208c13f0, ABISELECT(8,4), "S4208C13.s4208c13f0");
    check_field_offset(lv, s4208c13f1, ABISELECT(32,16), "S4208C13.s4208c13f1");
    test_class_info(&lv, &cd_S4208C13);
    dp->~S4208C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4208C13(Test_S4208C13, "S4208C13", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S4208C13C1Ev();
extern void _ZN8S4208C13D1Ev();
Name_Map name_map_S4208C13[] = {
  NSPAIR(_ZN8S4208C13C1Ev),
  NSPAIR(_ZN8S4208C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S4208C13[];
extern void _ZN8S4208C13D1Ev();
extern void _ZN8S4208C13D0Ev();
static  VTBL_ENTRY vtc_S4208C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S4208C13[0]),
  (VTBL_ENTRY)&_ZN8S4208C13D1Ev,
  (VTBL_ENTRY)&_ZN8S4208C13D0Ev,
};
extern VTBL_ENTRY _ZTI8S4208C13[];
extern  VTBL_ENTRY _ZTV8S4208C13[];
Class_Descriptor cd_S4208C13 = {  "S4208C13", // class name
  0,0,//no base classes
  &(vtc_S4208C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S4208C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S4208C13),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  S4208C1  : S4208C2 {
  void *s4208c1f0;
  ::S4208C13 s4208c1f1;
  void *s4208c1f2[2];
  virtual  ~S4208C1(); // _ZN7S4208C1D1Ev
  virtual void  v1(); // _ZN7S4208C12v1Ev
  virtual void  v2(); // _ZN7S4208C12v2Ev
  virtual void  v3(); // _ZN7S4208C12v3Ev
  virtual void  v4(); // _ZN7S4208C12v4Ev
  virtual void  v5(); // _ZN7S4208C12v5Ev
  virtual void  v6(); // _ZN7S4208C12v6Ev
  virtual void  v7(); // _ZN7S4208C12v7Ev
  virtual void  v8(); // _ZN7S4208C12v8Ev
  virtual void  v9(); // _ZN7S4208C12v9Ev
  S4208C1(); // tgen
};
//SIG(1 S4208C1) C1{ BC2{ BC3{ vd 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 Fp[2] Fi Fp Fi[3] FC4{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC5{ BC6{ m FC7{ BC8{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC5 Fi[8] FC4 FC9{ m FC4 FC4 Fc} FC7 Fi[2] Fp Fi FC10{ BC8} Fi[2] Fp Fi} v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 Fp Fi[4] FC11{ BC8}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp FC12{ vd m Fp[3] Fi[3]} Fp[2]}


 S4208C1 ::~S4208C1(){ note_dtor("S4208C1", this);}
void  S4208C1 ::v1(){vfunc_called(this, "_ZN7S4208C12v1Ev");}
void  S4208C1 ::v2(){vfunc_called(this, "_ZN7S4208C12v2Ev");}
void  S4208C1 ::v3(){vfunc_called(this, "_ZN7S4208C12v3Ev");}
void  S4208C1 ::v4(){vfunc_called(this, "_ZN7S4208C12v4Ev");}
void  S4208C1 ::v5(){vfunc_called(this, "_ZN7S4208C12v5Ev");}
void  S4208C1 ::v6(){vfunc_called(this, "_ZN7S4208C12v6Ev");}
void  S4208C1 ::v7(){vfunc_called(this, "_ZN7S4208C12v7Ev");}
void  S4208C1 ::v8(){vfunc_called(this, "_ZN7S4208C12v8Ev");}
void  S4208C1 ::v9(){vfunc_called(this, "_ZN7S4208C12v9Ev");}
S4208C1 ::S4208C1(){ note_ctor("S4208C1", this);} // tgen

static void Test_S4208C1()
{
  extern Class_Descriptor cd_S4208C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(55,77)];
    init_test(&cd_S4208C1, buf);
    S4208C1 *dp, &lv = *(dp=new (buf) S4208C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,304), "sizeof(S4208C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4208C1)");
    check_base_class_offset(lv, (S4208C3*)(S4208C2*), 0, "S4208C1");
    check_base_class_offset(lv, (S4208C2*), 0, "S4208C1");
    check_field_offset(lv, s4208c1f0, ABISELECT(360,264), "S4208C1.s4208c1f0");
    check_field_offset(lv, s4208c1f1, ABISELECT(368,268), "S4208C1.s4208c1f1");
    check_field_offset(lv, s4208c1f2, ABISELECT(416,296), "S4208C1.s4208c1f2");
    test_class_info(&lv, &cd_S4208C1);
    dp->~S4208C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4208C1(Test_S4208C1, "S4208C1", ABISELECT(432,304));

#else // __cplusplus

extern void _ZN7S4208C1C1Ev();
extern void _ZN7S4208C1D1Ev();
Name_Map name_map_S4208C1[] = {
  NSPAIR(_ZN7S4208C1C1Ev),
  NSPAIR(_ZN7S4208C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4208C3;
extern VTBL_ENTRY _ZTI7S4208C3[];
extern  VTBL_ENTRY _ZTV7S4208C3[];
extern Class_Descriptor cd_S4208C2;
extern VTBL_ENTRY _ZTI7S4208C2[];
extern  VTBL_ENTRY _ZTV7S4208C2[];
static Base_Class bases_S4208C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4208C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4208C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4208C1[];
extern void _ZN7S4208C1D1Ev();
extern void _ZN7S4208C1D0Ev();
extern void _ZN7S4208C33v10Ev();
extern void _ZN7S4208C33v11Ev();
extern void _ZN7S4208C33v12Ev();
extern void _ZN7S4208C33v13Ev();
extern void _ZN7S4208C33v14Ev();
extern void _ZN7S4208C33v15Ev();
extern void _ZN7S4208C33v16Ev();
extern void _ZN7S4208C33v17Ev();
extern void _ZN7S4208C33v18Ev();
extern void _ZN7S4208C33v19Ev();
extern void _ZN7S4208C33v20Ev();
extern void _ZN7S4208C33v21Ev();
extern void _ZN7S4208C33v22Ev();
extern void _ZN7S4208C33v23Ev();
extern void _ZN7S4208C33v24Ev();
extern void _ZN7S4208C33v25Ev();
extern void _ZN7S4208C33v26Ev();
extern void _ZN7S4208C33v27Ev();
extern void _ZN7S4208C33v28Ev();
extern void _ZN7S4208C33v29Ev();
extern void _ZN7S4208C33v30Ev();
extern void _ZN7S4208C33v31Ev();
extern void _ZN7S4208C33v32Ev();
extern void _ZN7S4208C33v33Ev();
extern void _ZN7S4208C33v34Ev();
extern void _ZN7S4208C33v35Ev();
extern void _ZN7S4208C33v36Ev();
extern void _ZN7S4208C33v37Ev();
extern void _ZN7S4208C33v38Ev();
extern void _ZN7S4208C33v39Ev();
extern void _ZN7S4208C33v40Ev();
extern void _ZN7S4208C33v41Ev();
extern void _ZN7S4208C33v42Ev();
extern void _ZN7S4208C33v43Ev();
extern void _ZN7S4208C33v44Ev();
extern void _ZN7S4208C23v45Ev();
extern void _ZN7S4208C23v46Ev();
extern void _ZN7S4208C23v47Ev();
extern void _ZN7S4208C23v48Ev();
extern void _ZN7S4208C23v49Ev();
extern void _ZN7S4208C23v50Ev();
extern void _ZN7S4208C23v51Ev();
extern void _ZN7S4208C23v52Ev();
extern void _ZN7S4208C23v53Ev();
extern void _ZN7S4208C23v54Ev();
extern void _ZN7S4208C23v55Ev();
extern void _ZN7S4208C12v1Ev();
extern void _ZN7S4208C12v2Ev();
extern void _ZN7S4208C12v3Ev();
extern void _ZN7S4208C12v4Ev();
extern void _ZN7S4208C12v5Ev();
extern void _ZN7S4208C12v6Ev();
extern void _ZN7S4208C12v7Ev();
extern void _ZN7S4208C12v8Ev();
extern void _ZN7S4208C12v9Ev();
static  VTBL_ENTRY vtc_S4208C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4208C1[0]),
  (VTBL_ENTRY)&_ZN7S4208C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4208C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v10Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v25Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v26Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v27Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v38Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v39Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v40Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v41Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v42Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v43Ev,
  (VTBL_ENTRY)&_ZN7S4208C33v44Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v45Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v46Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v47Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v48Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v49Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v50Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v51Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v52Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v53Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v54Ev,
  (VTBL_ENTRY)&_ZN7S4208C23v55Ev,
  (VTBL_ENTRY)&_ZN7S4208C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4208C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4208C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4208C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4208C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4208C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4208C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4208C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4208C12v9Ev,
};
extern VTBL_ENTRY _ZTI7S4208C1[];
extern  VTBL_ENTRY _ZTV7S4208C1[];
Class_Descriptor cd_S4208C1 = {  "S4208C1", // class name
  bases_S4208C1, 2,
  &(vtc_S4208C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(432,304), // object size
  NSPAIRA(_ZTI7S4208C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4208C1),59, //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  S8635C2  {
  void *s8635c2f0;
  ::S4227C37 s8635c2f1;
  int s8635c2f2;
  ::S9141C28_nt s8635c2f3;
  unsigned int s8635c2f4:1;
  unsigned int s8635c2f5:1;
  unsigned int s8635c2f6:1;
  unsigned int s8635c2f7:1;
  unsigned int s8635c2f8:1;
  unsigned int s8635c2f9:1;
  unsigned int s8635c2f10:1;
  int s8635c2f11:3;
  int s8635c2f12:3;
  ::S3214C23 s8635c2f13;
  int s8635c2f14;
  virtual  ~S8635C2(); // _ZN7S8635C2D1Ev
  virtual void  v16(); // _ZN7S8635C23v16Ev
  virtual void  v17(); // _ZN7S8635C23v17Ev
  virtual void  v18(); // _ZN7S8635C23v18Ev
  virtual void  v19(); // _ZN7S8635C23v19Ev
  virtual void  v20(); // _ZN7S8635C23v20Ev
  virtual void  v21(); // _ZN7S8635C23v21Ev
  virtual void  v22(); // _ZN7S8635C23v22Ev
  virtual void  v23(); // _ZN7S8635C23v23Ev
  virtual void  v24(); // _ZN7S8635C23v24Ev
  virtual void  v25(); // _ZN7S8635C23v25Ev
  virtual void  v26(); // _ZN7S8635C23v26Ev
  virtual void  v27(); // _ZN7S8635C23v27Ev
  virtual void  v28(); // _ZN7S8635C23v28Ev
  virtual void  v29(); // _ZN7S8635C23v29Ev
  virtual void  v30(); // _ZN7S8635C23v30Ev
  virtual void  v31(); // _ZN7S8635C23v31Ev
  virtual void  v32(); // _ZN7S8635C23v32Ev
  virtual void  v33(); // _ZN7S8635C23v33Ev
  S8635C2(); // tgen
};
//SIG(-1 S8635C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S8635C2 ::~S8635C2(){ note_dtor("S8635C2", this);}
void  S8635C2 ::v16(){vfunc_called(this, "_ZN7S8635C23v16Ev");}
void  S8635C2 ::v17(){vfunc_called(this, "_ZN7S8635C23v17Ev");}
void  S8635C2 ::v18(){vfunc_called(this, "_ZN7S8635C23v18Ev");}
void  S8635C2 ::v19(){vfunc_called(this, "_ZN7S8635C23v19Ev");}
void  S8635C2 ::v20(){vfunc_called(this, "_ZN7S8635C23v20Ev");}
void  S8635C2 ::v21(){vfunc_called(this, "_ZN7S8635C23v21Ev");}
void  S8635C2 ::v22(){vfunc_called(this, "_ZN7S8635C23v22Ev");}
void  S8635C2 ::v23(){vfunc_called(this, "_ZN7S8635C23v23Ev");}
void  S8635C2 ::v24(){vfunc_called(this, "_ZN7S8635C23v24Ev");}
void  S8635C2 ::v25(){vfunc_called(this, "_ZN7S8635C23v25Ev");}
void  S8635C2 ::v26(){vfunc_called(this, "_ZN7S8635C23v26Ev");}
void  S8635C2 ::v27(){vfunc_called(this, "_ZN7S8635C23v27Ev");}
void  S8635C2 ::v28(){vfunc_called(this, "_ZN7S8635C23v28Ev");}
void  S8635C2 ::v29(){vfunc_called(this, "_ZN7S8635C23v29Ev");}
void  S8635C2 ::v30(){vfunc_called(this, "_ZN7S8635C23v30Ev");}
void  S8635C2 ::v31(){vfunc_called(this, "_ZN7S8635C23v31Ev");}
void  S8635C2 ::v32(){vfunc_called(this, "_ZN7S8635C23v32Ev");}
void  S8635C2 ::v33(){vfunc_called(this, "_ZN7S8635C23v33Ev");}
S8635C2 ::S8635C2(){ note_ctor("S8635C2", this);} // tgen

static void Test_S8635C2()
{
  extern Class_Descriptor cd_S8635C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S8635C2, buf);
    S8635C2 *dp, &lv = *(dp=new (buf) S8635C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S8635C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8635C2)");
    check_field_offset(lv, s8635c2f0, ABISELECT(8,4), "S8635C2.s8635c2f0");
    check_field_offset(lv, s8635c2f1, ABISELECT(16,8), "S8635C2.s8635c2f1");
    check_field_offset(lv, s8635c2f2, ABISELECT(20,12), "S8635C2.s8635c2f2");
    check_field_offset(lv, s8635c2f3, ABISELECT(24,16), "S8635C2.s8635c2f3");
    set_bf_and_test(lv, s8635c2f4, ABISELECT(40,28), 0, 1, 1, "S8635C2");
    set_bf_and_test(lv, s8635c2f5, ABISELECT(40,28), 1, 1, 1, "S8635C2");
    set_bf_and_test(lv, s8635c2f6, ABISELECT(40,28), 2, 1, 1, "S8635C2");
    set_bf_and_test(lv, s8635c2f7, ABISELECT(40,28), 3, 1, 1, "S8635C2");
    set_bf_and_test(lv, s8635c2f8, ABISELECT(40,28), 4, 1, 1, "S8635C2");
    set_bf_and_test(lv, s8635c2f9, ABISELECT(40,28), 5, 1, 1, "S8635C2");
    set_bf_and_test(lv, s8635c2f10, ABISELECT(40,28), 6, 1, 1, "S8635C2");
    set_bf_and_test(lv, s8635c2f11, ABISELECT(40,28), 7, 3, 1, "S8635C2");
    set_bf_and_test(lv, s8635c2f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S8635C2");
    set_bf_and_test(lv, s8635c2f12, ABISELECT(41,29), 2, 3, 1, "S8635C2");
    set_bf_and_test(lv, s8635c2f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S8635C2");
    check_field_offset(lv, s8635c2f13, ABISELECT(48,32), "S8635C2.s8635c2f13");
    check_field_offset(lv, s8635c2f14, ABISELECT(64,44), "S8635C2.s8635c2f14");
    test_class_info(&lv, &cd_S8635C2);
    dp->~S8635C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8635C2(Test_S8635C2, "S8635C2", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S8635C2C1Ev();
extern void _ZN7S8635C2D1Ev();
Name_Map name_map_S8635C2[] = {
  NSPAIR(_ZN7S8635C2C1Ev),
  NSPAIR(_ZN7S8635C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8635C2[];
extern void _ZN7S8635C2D1Ev();
extern void _ZN7S8635C2D0Ev();
extern void _ZN7S8635C23v16Ev();
extern void _ZN7S8635C23v17Ev();
extern void _ZN7S8635C23v18Ev();
extern void _ZN7S8635C23v19Ev();
extern void _ZN7S8635C23v20Ev();
extern void _ZN7S8635C23v21Ev();
extern void _ZN7S8635C23v22Ev();
extern void _ZN7S8635C23v23Ev();
extern void _ZN7S8635C23v24Ev();
extern void _ZN7S8635C23v25Ev();
extern void _ZN7S8635C23v26Ev();
extern void _ZN7S8635C23v27Ev();
extern void _ZN7S8635C23v28Ev();
extern void _ZN7S8635C23v29Ev();
extern void _ZN7S8635C23v30Ev();
extern void _ZN7S8635C23v31Ev();
extern void _ZN7S8635C23v32Ev();
extern void _ZN7S8635C23v33Ev();
static  VTBL_ENTRY vtc_S8635C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8635C2[0]),
  (VTBL_ENTRY)&_ZN7S8635C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8635C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v30Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v31Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v32Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v33Ev,
};
extern VTBL_ENTRY _ZTI7S8635C2[];
extern  VTBL_ENTRY _ZTV7S8635C2[];
Class_Descriptor cd_S8635C2 = {  "S8635C2", // class name
  0,0,//no base classes
  &(vtc_S8635C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S8635C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8635C2),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8635C15_nt  {
  void *s8635c15f0[3];
  void  mf8635c15(); // _ZN11S8635C15_nt9mf8635c15Ev
};
//SIG(-1 S8635C15_nt) C1{ m Fp[3]}


void  S8635C15_nt ::mf8635c15(){}

//skip512 S8635C15_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8635C14_nt  {
  ::S8635C15_nt s8635c14f0;
  unsigned int s8635c14f1:1;
  virtual  ~S8635C14_nt(); // _ZN11S8635C14_ntD1Ev
  virtual void  v35(); // _ZN11S8635C14_nt3v35Ev
  virtual void  v36(); // _ZN11S8635C14_nt3v36Ev
  virtual void  v37(); // _ZN11S8635C14_nt3v37Ev
  virtual void  v38(); // _ZN11S8635C14_nt3v38Ev
  virtual void  v39(); // _ZN11S8635C14_nt3v39Ev
  virtual void  v40(); // _ZN11S8635C14_nt3v40Ev
  virtual void  v41(); // _ZN11S8635C14_nt3v41Ev
  S8635C14_nt(); // tgen
};
//SIG(-1 S8635C14_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S8635C14_nt ::~S8635C14_nt(){ note_dtor("S8635C14_nt", this);}
void  S8635C14_nt ::v35(){vfunc_called(this, "_ZN11S8635C14_nt3v35Ev");}
void  S8635C14_nt ::v36(){vfunc_called(this, "_ZN11S8635C14_nt3v36Ev");}
void  S8635C14_nt ::v37(){vfunc_called(this, "_ZN11S8635C14_nt3v37Ev");}
void  S8635C14_nt ::v38(){vfunc_called(this, "_ZN11S8635C14_nt3v38Ev");}
void  S8635C14_nt ::v39(){vfunc_called(this, "_ZN11S8635C14_nt3v39Ev");}
void  S8635C14_nt ::v40(){vfunc_called(this, "_ZN11S8635C14_nt3v40Ev");}
void  S8635C14_nt ::v41(){vfunc_called(this, "_ZN11S8635C14_nt3v41Ev");}
S8635C14_nt ::S8635C14_nt(){ note_ctor("S8635C14_nt", this);} // tgen

//skip512 S8635C14_nt

#else // __cplusplus

extern void _ZN11S8635C14_ntC1Ev();
extern void _ZN11S8635C14_ntD1Ev();
Name_Map name_map_S8635C14_nt[] = {
  NSPAIR(_ZN11S8635C14_ntC1Ev),
  NSPAIR(_ZN11S8635C14_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S8635C14_nt[];
extern void _ZN11S8635C14_ntD1Ev();
extern void _ZN11S8635C14_ntD0Ev();
extern void _ZN11S8635C14_nt3v35Ev();
extern void _ZN11S8635C14_nt3v36Ev();
extern void _ZN11S8635C14_nt3v37Ev();
extern void _ZN11S8635C14_nt3v38Ev();
extern void _ZN11S8635C14_nt3v39Ev();
extern void _ZN11S8635C14_nt3v40Ev();
extern void _ZN11S8635C14_nt3v41Ev();
static  VTBL_ENTRY vtc_S8635C14_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S8635C14_nt[0]),
  (VTBL_ENTRY)&_ZN11S8635C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v37Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v40Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v41Ev,
};
extern VTBL_ENTRY _ZTI11S8635C14_nt[];
VTBL_ENTRY *P__ZTI11S8635C14_nt = _ZTI11S8635C14_nt; 
extern  VTBL_ENTRY _ZTV11S8635C14_nt[];
Class_Descriptor cd_S8635C14_nt = {  "S8635C14_nt", // class name
  0,0,//no base classes
  &(vtc_S8635C14_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI11S8635C14_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S8635C14_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  S8635C16_nt  {
  void *s8635c16f0;
  int s8635c16f1[2];
  ::S3214C6_nt s8635c16f2;
  void *s8635c16f3;
  void  mf8635c16(); // _ZN11S8635C16_nt9mf8635c16Ev
};
//SIG(-1 S8635C16_nt) C1{ m Fp Fi[2] FC2{ BC3{ m Fp Fi[2]}} Fp}


void  S8635C16_nt ::mf8635c16(){}

//skip512 S8635C16_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8635C13  : S8635C14_nt {
  ::S8635C16_nt s8635c13f0;
  virtual  ~S8635C13(); // _ZN8S8635C13D1Ev
  virtual void  v34(); // _ZN8S8635C133v34Ev
  S8635C13(); // tgen
};
//SIG(-1 S8635C13) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 FC3{ m Fp[3]} Fi:1} vd v1 FC4{ m Fp Fi[2] FC5{ BC6{ m Fp Fi[2]}} Fp}}


 S8635C13 ::~S8635C13(){ note_dtor("S8635C13", this);}
void  S8635C13 ::v34(){vfunc_called(this, "_ZN8S8635C133v34Ev");}
S8635C13 ::S8635C13(){ note_ctor("S8635C13", this);} // tgen

static void Test_S8635C13()
{
  extern Class_Descriptor cd_S8635C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S8635C13, buf);
    S8635C13 *dp, &lv = *(dp=new (buf) S8635C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S8635C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8635C13)");
    check_base_class_offset(lv, (S8635C14_nt*), 0, "S8635C13");
    check_field_offset(lv, s8635c13f0, ABISELECT(40,20), "S8635C13.s8635c13f0");
    test_class_info(&lv, &cd_S8635C13);
    dp->~S8635C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8635C13(Test_S8635C13, "S8635C13", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S8635C13C1Ev();
extern void _ZN8S8635C13D1Ev();
Name_Map name_map_S8635C13[] = {
  NSPAIR(_ZN8S8635C13C1Ev),
  NSPAIR(_ZN8S8635C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8635C14_nt;
extern VTBL_ENTRY _ZTI11S8635C14_nt[];
extern  VTBL_ENTRY _ZTV11S8635C14_nt[];
static Base_Class bases_S8635C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8635C14_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S8635C13[];
extern void _ZN8S8635C13D1Ev();
extern void _ZN8S8635C13D0Ev();
extern void _ZN11S8635C14_nt3v35Ev();
extern void _ZN11S8635C14_nt3v36Ev();
extern void _ZN11S8635C14_nt3v37Ev();
extern void _ZN11S8635C14_nt3v38Ev();
extern void _ZN11S8635C14_nt3v39Ev();
extern void _ZN11S8635C14_nt3v40Ev();
extern void _ZN11S8635C14_nt3v41Ev();
extern void _ZN8S8635C133v34Ev();
static  VTBL_ENTRY vtc_S8635C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S8635C13[0]),
  (VTBL_ENTRY)&_ZN8S8635C13D1Ev,
  (VTBL_ENTRY)&_ZN8S8635C13D0Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v35Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v36Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v37Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v38Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v39Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v40Ev,
  (VTBL_ENTRY)&_ZN11S8635C14_nt3v41Ev,
  (VTBL_ENTRY)&_ZN8S8635C133v34Ev,
};
extern VTBL_ENTRY _ZTI8S8635C13[];
extern  VTBL_ENTRY _ZTV8S8635C13[];
Class_Descriptor cd_S8635C13 = {  "S8635C13", // class name
  bases_S8635C13, 1,
  &(vtc_S8635C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S8635C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S8635C13),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  S8635C1  : S8635C2 {
  ::S3214C18 s8635c1f0;
  void *s8635c1f1[3];
  ::S3214C12 s8635c1f2;
  int s8635c1f3[2];
  ::S3214C13_nt s8635c1f4;
  ::S4227C27 s8635c1f5;
  ::S4227C27 s8635c1f6;
  unsigned int s8635c1f7:1;
  unsigned int s8635c1f8:1;
  unsigned int s8635c1f9:1;
  unsigned int s8635c1f10:1;
  unsigned int s8635c1f11:1;
  unsigned int s8635c1f12:1;
  ::S8614C18_nt s8635c1f13;
  ::S3444C17_nt s8635c1f14;
  ::S8635C13 s8635c1f15;
  virtual void  v1(); // _ZN7S8635C12v1Ev
  virtual void  v2(); // _ZN7S8635C12v2Ev
  virtual void  v3(); // _ZN7S8635C12v3Ev
  virtual void  v4(); // _ZN7S8635C12v4Ev
  virtual void  v5(); // _ZN7S8635C12v5Ev
  virtual void  v6(); // _ZN7S8635C12v6Ev
  virtual void  v7(); // _ZN7S8635C12v7Ev
  virtual void  v8(); // _ZN7S8635C12v8Ev
  virtual void  v9(); // _ZN7S8635C12v9Ev
  virtual void  v10(); // _ZN7S8635C13v10Ev
  virtual void  v11(); // _ZN7S8635C13v11Ev
  virtual void  v12(); // _ZN7S8635C13v12Ev
  virtual void  v13(); // _ZN7S8635C13v13Ev
  virtual void  v14(); // _ZN7S8635C13v14Ev
  virtual void  v15(); // _ZN7S8635C13v15Ev
  ~S8635C1(); // tgen
  S8635C1(); // tgen
};
//SIG(1 S8635C1) C1{ BC2{ vd v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 FC7{ BC5} Fp[3] FC8{ BC5} Fi[2] FC9{ m Fi[3]} FC10{ m} FC10 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC11{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1} FC12{ m Fi[4]} FC13{ BC14{ vd v35 v36 v37 v38 v39 v40 v41 FC15{ m Fp[3]} Fi:1} vd v34 FC16{ m Fp Fi[2] FC17{ BC5} Fp}}}


void  S8635C1 ::v1(){vfunc_called(this, "_ZN7S8635C12v1Ev");}
void  S8635C1 ::v2(){vfunc_called(this, "_ZN7S8635C12v2Ev");}
void  S8635C1 ::v3(){vfunc_called(this, "_ZN7S8635C12v3Ev");}
void  S8635C1 ::v4(){vfunc_called(this, "_ZN7S8635C12v4Ev");}
void  S8635C1 ::v5(){vfunc_called(this, "_ZN7S8635C12v5Ev");}
void  S8635C1 ::v6(){vfunc_called(this, "_ZN7S8635C12v6Ev");}
void  S8635C1 ::v7(){vfunc_called(this, "_ZN7S8635C12v7Ev");}
void  S8635C1 ::v8(){vfunc_called(this, "_ZN7S8635C12v8Ev");}
void  S8635C1 ::v9(){vfunc_called(this, "_ZN7S8635C12v9Ev");}
void  S8635C1 ::v10(){vfunc_called(this, "_ZN7S8635C13v10Ev");}
void  S8635C1 ::v11(){vfunc_called(this, "_ZN7S8635C13v11Ev");}
void  S8635C1 ::v12(){vfunc_called(this, "_ZN7S8635C13v12Ev");}
void  S8635C1 ::v13(){vfunc_called(this, "_ZN7S8635C13v13Ev");}
void  S8635C1 ::v14(){vfunc_called(this, "_ZN7S8635C13v14Ev");}
void  S8635C1 ::v15(){vfunc_called(this, "_ZN7S8635C13v15Ev");}
S8635C1 ::~S8635C1(){ note_dtor("S8635C1", this);} // tgen
S8635C1 ::S8635C1(){ note_ctor("S8635C1", this);} // tgen

static void Test_S8635C1()
{
  extern Class_Descriptor cd_S8635C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,45)];
    init_test(&cd_S8635C1, buf);
    S8635C1 *dp, &lv = *(dp=new (buf) S8635C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,176), "sizeof(S8635C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8635C1)");
    check_base_class_offset(lv, (S8635C2*), 0, "S8635C1");
    check_field_offset(lv, s8635c1f0, ABISELECT(72,48), "S8635C1.s8635c1f0");
    check_field_offset(lv, s8635c1f1, ABISELECT(88,60), "S8635C1.s8635c1f1");
    check_field_offset(lv, s8635c1f2, ABISELECT(112,72), "S8635C1.s8635c1f2");
    check_field_offset(lv, s8635c1f3, ABISELECT(128,84), "S8635C1.s8635c1f3");
    check_field_offset(lv, s8635c1f4, ABISELECT(136,92), "S8635C1.s8635c1f4");
    check_field_offset(lv, s8635c1f5, ABISELECT(148,104), "S8635C1.s8635c1f5");
    check_field_offset(lv, s8635c1f6, ABISELECT(149,105), "S8635C1.s8635c1f6");
    set_bf_and_test(lv, s8635c1f7, ABISELECT(150,106), 0, 1, 1, "S8635C1");
    set_bf_and_test(lv, s8635c1f8, ABISELECT(150,106), 1, 1, 1, "S8635C1");
    set_bf_and_test(lv, s8635c1f9, ABISELECT(150,106), 2, 1, 1, "S8635C1");
    set_bf_and_test(lv, s8635c1f10, ABISELECT(150,106), 3, 1, 1, "S8635C1");
    set_bf_and_test(lv, s8635c1f11, ABISELECT(150,106), 4, 1, 1, "S8635C1");
    set_bf_and_test(lv, s8635c1f12, ABISELECT(150,106), 5, 1, 1, "S8635C1");
    check_field_offset(lv, s8635c1f13, ABISELECT(152,108), "S8635C1.s8635c1f13");
    check_field_offset(lv, s8635c1f14, ABISELECT(156,112), "S8635C1.s8635c1f14");
    check_field_offset(lv, s8635c1f15, ABISELECT(176,128), "S8635C1.s8635c1f15");
    test_class_info(&lv, &cd_S8635C1);
    dp->~S8635C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8635C1(Test_S8635C1, "S8635C1", ABISELECT(256,176));

#else // __cplusplus

extern void _ZN7S8635C1C1Ev();
extern void _ZN7S8635C1D1Ev();
Name_Map name_map_S8635C1[] = {
  NSPAIR(_ZN7S8635C1C1Ev),
  NSPAIR(_ZN7S8635C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8635C2;
extern VTBL_ENTRY _ZTI7S8635C2[];
extern  VTBL_ENTRY _ZTV7S8635C2[];
static Base_Class bases_S8635C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8635C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8635C1[];
extern void _ZN7S8635C1D1Ev();
extern void _ZN7S8635C1D0Ev();
extern void _ZN7S8635C23v16Ev();
extern void _ZN7S8635C23v17Ev();
extern void _ZN7S8635C23v18Ev();
extern void _ZN7S8635C23v19Ev();
extern void _ZN7S8635C23v20Ev();
extern void _ZN7S8635C23v21Ev();
extern void _ZN7S8635C23v22Ev();
extern void _ZN7S8635C23v23Ev();
extern void _ZN7S8635C23v24Ev();
extern void _ZN7S8635C23v25Ev();
extern void _ZN7S8635C23v26Ev();
extern void _ZN7S8635C23v27Ev();
extern void _ZN7S8635C23v28Ev();
extern void _ZN7S8635C23v29Ev();
extern void _ZN7S8635C23v30Ev();
extern void _ZN7S8635C23v31Ev();
extern void _ZN7S8635C23v32Ev();
extern void _ZN7S8635C23v33Ev();
extern void _ZN7S8635C12v1Ev();
extern void _ZN7S8635C12v2Ev();
extern void _ZN7S8635C12v3Ev();
extern void _ZN7S8635C12v4Ev();
extern void _ZN7S8635C12v5Ev();
extern void _ZN7S8635C12v6Ev();
extern void _ZN7S8635C12v7Ev();
extern void _ZN7S8635C12v8Ev();
extern void _ZN7S8635C12v9Ev();
extern void _ZN7S8635C13v10Ev();
extern void _ZN7S8635C13v11Ev();
extern void _ZN7S8635C13v12Ev();
extern void _ZN7S8635C13v13Ev();
extern void _ZN7S8635C13v14Ev();
extern void _ZN7S8635C13v15Ev();
static  VTBL_ENTRY vtc_S8635C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8635C1[0]),
  (VTBL_ENTRY)&_ZN7S8635C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8635C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v30Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v31Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v32Ev,
  (VTBL_ENTRY)&_ZN7S8635C23v33Ev,
  (VTBL_ENTRY)&_ZN7S8635C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8635C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8635C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8635C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8635C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8635C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8635C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8635C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8635C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8635C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8635C13v11Ev,
  (VTBL_ENTRY)&_ZN7S8635C13v12Ev,
  (VTBL_ENTRY)&_ZN7S8635C13v13Ev,
  (VTBL_ENTRY)&_ZN7S8635C13v14Ev,
  (VTBL_ENTRY)&_ZN7S8635C13v15Ev,
};
extern VTBL_ENTRY _ZTI7S8635C1[];
extern  VTBL_ENTRY _ZTV7S8635C1[];
Class_Descriptor cd_S8635C1 = {  "S8635C1", // class name
  bases_S8635C1, 1,
  &(vtc_S8635C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,176), // object size
  NSPAIRA(_ZTI7S8635C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8635C1),37, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10036C2  {
  void *s10036c2f0;
  ::S4227C37 s10036c2f1;
  int s10036c2f2;
  ::S9141C28_nt s10036c2f3;
  unsigned int s10036c2f4:1;
  unsigned int s10036c2f5:1;
  unsigned int s10036c2f6:1;
  unsigned int s10036c2f7:1;
  unsigned int s10036c2f8:1;
  unsigned int s10036c2f9:1;
  unsigned int s10036c2f10:1;
  int s10036c2f11:3;
  int s10036c2f12:3;
  ::S3214C23 s10036c2f13;
  int s10036c2f14;
  virtual  ~S10036C2(); // _ZN8S10036C2D1Ev
  virtual void  v6(); // _ZN8S10036C22v6Ev
  virtual void  v7(); // _ZN8S10036C22v7Ev
  virtual void  v8(); // _ZN8S10036C22v8Ev
  virtual void  v9(); // _ZN8S10036C22v9Ev
  virtual void  v10(); // _ZN8S10036C23v10Ev
  virtual void  v11(); // _ZN8S10036C23v11Ev
  virtual void  v12(); // _ZN8S10036C23v12Ev
  virtual void  v13(); // _ZN8S10036C23v13Ev
  virtual void  v14(); // _ZN8S10036C23v14Ev
  virtual void  v15(); // _ZN8S10036C23v15Ev
  virtual void  v16(); // _ZN8S10036C23v16Ev
  virtual void  v17(); // _ZN8S10036C23v17Ev
  virtual void  v18(); // _ZN8S10036C23v18Ev
  virtual void  v19(); // _ZN8S10036C23v19Ev
  virtual void  v20(); // _ZN8S10036C23v20Ev
  virtual void  v21(); // _ZN8S10036C23v21Ev
  virtual void  v22(); // _ZN8S10036C23v22Ev
  virtual void  v23(); // _ZN8S10036C23v23Ev
  S10036C2(); // tgen
};
//SIG(-1 S10036C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S10036C2 ::~S10036C2(){ note_dtor("S10036C2", this);}
void  S10036C2 ::v6(){vfunc_called(this, "_ZN8S10036C22v6Ev");}
void  S10036C2 ::v7(){vfunc_called(this, "_ZN8S10036C22v7Ev");}
void  S10036C2 ::v8(){vfunc_called(this, "_ZN8S10036C22v8Ev");}
void  S10036C2 ::v9(){vfunc_called(this, "_ZN8S10036C22v9Ev");}
void  S10036C2 ::v10(){vfunc_called(this, "_ZN8S10036C23v10Ev");}
void  S10036C2 ::v11(){vfunc_called(this, "_ZN8S10036C23v11Ev");}
void  S10036C2 ::v12(){vfunc_called(this, "_ZN8S10036C23v12Ev");}
void  S10036C2 ::v13(){vfunc_called(this, "_ZN8S10036C23v13Ev");}
void  S10036C2 ::v14(){vfunc_called(this, "_ZN8S10036C23v14Ev");}
void  S10036C2 ::v15(){vfunc_called(this, "_ZN8S10036C23v15Ev");}
void  S10036C2 ::v16(){vfunc_called(this, "_ZN8S10036C23v16Ev");}
void  S10036C2 ::v17(){vfunc_called(this, "_ZN8S10036C23v17Ev");}
void  S10036C2 ::v18(){vfunc_called(this, "_ZN8S10036C23v18Ev");}
void  S10036C2 ::v19(){vfunc_called(this, "_ZN8S10036C23v19Ev");}
void  S10036C2 ::v20(){vfunc_called(this, "_ZN8S10036C23v20Ev");}
void  S10036C2 ::v21(){vfunc_called(this, "_ZN8S10036C23v21Ev");}
void  S10036C2 ::v22(){vfunc_called(this, "_ZN8S10036C23v22Ev");}
void  S10036C2 ::v23(){vfunc_called(this, "_ZN8S10036C23v23Ev");}
S10036C2 ::S10036C2(){ note_ctor("S10036C2", this);} // tgen

static void Test_S10036C2()
{
  extern Class_Descriptor cd_S10036C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S10036C2, buf);
    S10036C2 *dp, &lv = *(dp=new (buf) S10036C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S10036C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10036C2)");
    check_field_offset(lv, s10036c2f0, ABISELECT(8,4), "S10036C2.s10036c2f0");
    check_field_offset(lv, s10036c2f1, ABISELECT(16,8), "S10036C2.s10036c2f1");
    check_field_offset(lv, s10036c2f2, ABISELECT(20,12), "S10036C2.s10036c2f2");
    check_field_offset(lv, s10036c2f3, ABISELECT(24,16), "S10036C2.s10036c2f3");
    set_bf_and_test(lv, s10036c2f4, ABISELECT(40,28), 0, 1, 1, "S10036C2");
    set_bf_and_test(lv, s10036c2f5, ABISELECT(40,28), 1, 1, 1, "S10036C2");
    set_bf_and_test(lv, s10036c2f6, ABISELECT(40,28), 2, 1, 1, "S10036C2");
    set_bf_and_test(lv, s10036c2f7, ABISELECT(40,28), 3, 1, 1, "S10036C2");
    set_bf_and_test(lv, s10036c2f8, ABISELECT(40,28), 4, 1, 1, "S10036C2");
    set_bf_and_test(lv, s10036c2f9, ABISELECT(40,28), 5, 1, 1, "S10036C2");
    set_bf_and_test(lv, s10036c2f10, ABISELECT(40,28), 6, 1, 1, "S10036C2");
    set_bf_and_test(lv, s10036c2f11, ABISELECT(40,28), 7, 3, 1, "S10036C2");
    set_bf_and_test(lv, s10036c2f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S10036C2");
    set_bf_and_test(lv, s10036c2f12, ABISELECT(41,29), 2, 3, 1, "S10036C2");
    set_bf_and_test(lv, s10036c2f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S10036C2");
    check_field_offset(lv, s10036c2f13, ABISELECT(48,32), "S10036C2.s10036c2f13");
    check_field_offset(lv, s10036c2f14, ABISELECT(64,44), "S10036C2.s10036c2f14");
    test_class_info(&lv, &cd_S10036C2);
    dp->~S10036C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10036C2(Test_S10036C2, "S10036C2", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN8S10036C2C1Ev();
extern void _ZN8S10036C2D1Ev();
Name_Map name_map_S10036C2[] = {
  NSPAIR(_ZN8S10036C2C1Ev),
  NSPAIR(_ZN8S10036C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10036C2[];
extern void _ZN8S10036C2D1Ev();
extern void _ZN8S10036C2D0Ev();
extern void _ZN8S10036C22v6Ev();
extern void _ZN8S10036C22v7Ev();
extern void _ZN8S10036C22v8Ev();
extern void _ZN8S10036C22v9Ev();
extern void _ZN8S10036C23v10Ev();
extern void _ZN8S10036C23v11Ev();
extern void _ZN8S10036C23v12Ev();
extern void _ZN8S10036C23v13Ev();
extern void _ZN8S10036C23v14Ev();
extern void _ZN8S10036C23v15Ev();
extern void _ZN8S10036C23v16Ev();
extern void _ZN8S10036C23v17Ev();
extern void _ZN8S10036C23v18Ev();
extern void _ZN8S10036C23v19Ev();
extern void _ZN8S10036C23v20Ev();
extern void _ZN8S10036C23v21Ev();
extern void _ZN8S10036C23v22Ev();
extern void _ZN8S10036C23v23Ev();
static  VTBL_ENTRY vtc_S10036C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10036C2[0]),
  (VTBL_ENTRY)&_ZN8S10036C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10036C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10036C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10036C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10036C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10036C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v21Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v22Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v23Ev,
};
extern VTBL_ENTRY _ZTI8S10036C2[];
extern  VTBL_ENTRY _ZTV8S10036C2[];
Class_Descriptor cd_S10036C2 = {  "S10036C2", // class name
  0,0,//no base classes
  &(vtc_S10036C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI8S10036C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10036C2),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10036C8  {
  ::S8635C15_nt s10036c8f0;
  unsigned int s10036c8f1:1;
  virtual  ~S10036C8(); // _ZN8S10036C8D1Ev
  virtual void  v26(); // _ZN8S10036C83v26Ev
  virtual void  v27(); // _ZN8S10036C83v27Ev
  virtual void  v28(); // _ZN8S10036C83v28Ev
  virtual void  v29(); // _ZN8S10036C83v29Ev
  virtual void  v30(); // _ZN8S10036C83v30Ev
  virtual void  v31(); // _ZN8S10036C83v31Ev
  virtual void  v32(); // _ZN8S10036C83v32Ev
  S10036C8(); // tgen
};
//SIG(-1 S10036C8) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ m Fp[3]} Fi:1}


 S10036C8 ::~S10036C8(){ note_dtor("S10036C8", this);}
void  S10036C8 ::v26(){vfunc_called(this, "_ZN8S10036C83v26Ev");}
void  S10036C8 ::v27(){vfunc_called(this, "_ZN8S10036C83v27Ev");}
void  S10036C8 ::v28(){vfunc_called(this, "_ZN8S10036C83v28Ev");}
void  S10036C8 ::v29(){vfunc_called(this, "_ZN8S10036C83v29Ev");}
void  S10036C8 ::v30(){vfunc_called(this, "_ZN8S10036C83v30Ev");}
void  S10036C8 ::v31(){vfunc_called(this, "_ZN8S10036C83v31Ev");}
void  S10036C8 ::v32(){vfunc_called(this, "_ZN8S10036C83v32Ev");}
S10036C8 ::S10036C8(){ note_ctor("S10036C8", this);} // tgen

static void Test_S10036C8()
{
  extern Class_Descriptor cd_S10036C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S10036C8, buf);
    S10036C8 *dp, &lv = *(dp=new (buf) S10036C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S10036C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10036C8)");
    check_field_offset(lv, s10036c8f0, ABISELECT(8,4), "S10036C8.s10036c8f0");
    set_bf_and_test(lv, s10036c8f1, ABISELECT(32,16), 0, 1, 1, "S10036C8");
    test_class_info(&lv, &cd_S10036C8);
    dp->~S10036C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10036C8(Test_S10036C8, "S10036C8", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S10036C8C1Ev();
extern void _ZN8S10036C8D1Ev();
Name_Map name_map_S10036C8[] = {
  NSPAIR(_ZN8S10036C8C1Ev),
  NSPAIR(_ZN8S10036C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10036C8[];
extern void _ZN8S10036C8D1Ev();
extern void _ZN8S10036C8D0Ev();
extern void _ZN8S10036C83v26Ev();
extern void _ZN8S10036C83v27Ev();
extern void _ZN8S10036C83v28Ev();
extern void _ZN8S10036C83v29Ev();
extern void _ZN8S10036C83v30Ev();
extern void _ZN8S10036C83v31Ev();
extern void _ZN8S10036C83v32Ev();
static  VTBL_ENTRY vtc_S10036C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10036C8[0]),
  (VTBL_ENTRY)&_ZN8S10036C8D1Ev,
  (VTBL_ENTRY)&_ZN8S10036C8D0Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v26Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v27Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v28Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v29Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v30Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v31Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v32Ev,
};
extern VTBL_ENTRY _ZTI8S10036C8[];
extern  VTBL_ENTRY _ZTV8S10036C8[];
Class_Descriptor cd_S10036C8 = {  "S10036C8", // class name
  0,0,//no base classes
  &(vtc_S10036C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S10036C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10036C8),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  S10036C7  : S10036C8 {
  ::S9141C26 s10036c7f0;
  virtual void  v24(); // _ZN8S10036C73v24Ev
  virtual void  v25(); // _ZN8S10036C73v25Ev
  ~S10036C7(); // tgen
  S10036C7(); // tgen
};
//SIG(-1 S10036C7) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 FC3{ m Fp[3]} Fi:1} v1 v2 FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}}}


void  S10036C7 ::v24(){vfunc_called(this, "_ZN8S10036C73v24Ev");}
void  S10036C7 ::v25(){vfunc_called(this, "_ZN8S10036C73v25Ev");}
S10036C7 ::~S10036C7(){ note_dtor("S10036C7", this);} // tgen
S10036C7 ::S10036C7(){ note_ctor("S10036C7", this);} // tgen

static void Test_S10036C7()
{
  extern Class_Descriptor cd_S10036C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S10036C7, buf);
    S10036C7 *dp, &lv = *(dp=new (buf) S10036C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S10036C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10036C7)");
    check_base_class_offset(lv, (S10036C8*), 0, "S10036C7");
    check_field_offset(lv, s10036c7f0, ABISELECT(40,20), "S10036C7.s10036c7f0");
    test_class_info(&lv, &cd_S10036C7);
    dp->~S10036C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10036C7(Test_S10036C7, "S10036C7", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN8S10036C7C1Ev();
extern void _ZN8S10036C7D1Ev();
Name_Map name_map_S10036C7[] = {
  NSPAIR(_ZN8S10036C7C1Ev),
  NSPAIR(_ZN8S10036C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10036C8;
extern VTBL_ENTRY _ZTI8S10036C8[];
extern  VTBL_ENTRY _ZTV8S10036C8[];
static Base_Class bases_S10036C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10036C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10036C7[];
extern void _ZN8S10036C7D1Ev();
extern void _ZN8S10036C7D0Ev();
extern void _ZN8S10036C83v26Ev();
extern void _ZN8S10036C83v27Ev();
extern void _ZN8S10036C83v28Ev();
extern void _ZN8S10036C83v29Ev();
extern void _ZN8S10036C83v30Ev();
extern void _ZN8S10036C83v31Ev();
extern void _ZN8S10036C83v32Ev();
extern void _ZN8S10036C73v24Ev();
extern void _ZN8S10036C73v25Ev();
static  VTBL_ENTRY vtc_S10036C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10036C7[0]),
  (VTBL_ENTRY)&_ZN8S10036C7D1Ev,
  (VTBL_ENTRY)&_ZN8S10036C7D0Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v26Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v27Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v28Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v29Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v30Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v31Ev,
  (VTBL_ENTRY)&_ZN8S10036C83v32Ev,
  (VTBL_ENTRY)&_ZN8S10036C73v24Ev,
  (VTBL_ENTRY)&_ZN8S10036C73v25Ev,
};
extern VTBL_ENTRY _ZTI8S10036C7[];
extern  VTBL_ENTRY _ZTV8S10036C7[];
Class_Descriptor cd_S10036C7 = {  "S10036C7", // class name
  bases_S10036C7, 1,
  &(vtc_S10036C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI8S10036C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10036C7),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  S10036C14_nt  {
  ::S3214C13_nt s10036c14f0;
  ::S3214C13_nt s10036c14f1;
  int s10036c14f2;
  void  mf10036c14(); // _ZN12S10036C14_nt10mf10036c14Ev
};
//SIG(-1 S10036C14_nt) C1{ m FC2{ m Fi[3]} FC2 Fi}


void  S10036C14_nt ::mf10036c14(){}

//skip512 S10036C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10036C1  : S10036C2 {
  ::S10036C7 s10036c1f0;
  void *s10036c1f1;
  int s10036c1f2[3];
  unsigned int s10036c1f3:1;
  unsigned int s10036c1f4:1;
  unsigned int s10036c1f5:1;
  unsigned int s10036c1f6:1;
  unsigned int s10036c1f7:1;
  char s10036c1f8[2];
  int s10036c1f9[6];
  void *s10036c1f10;
  ::S3444C17_nt s10036c1f11;
  ::S10036C14_nt s10036c1f12;
  void *s10036c1f13[2];
  ::S8614C9 s10036c1f14;
  ::S8614C9 s10036c1f15;
  virtual  ~S10036C1(); // _ZN8S10036C1D1Ev
  virtual void  v1(); // _ZN8S10036C12v1Ev
  virtual void  v2(); // _ZN8S10036C12v2Ev
  virtual void  v3(); // _ZN8S10036C12v3Ev
  virtual void  v4(); // _ZN8S10036C12v4Ev
  virtual void  v5(); // _ZN8S10036C12v5Ev
  S10036C1(); // tgen
};
//SIG(1 S10036C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} vd v1 v2 v3 v4 v5 FC7{ BC8{ vd v26 v27 v28 v29 v30 v31 v32 FC9{ m Fp[3]} Fi:1} v24 v25 FC10{ BC11{ m FC4 Fp Fi}}} Fp Fi[3] Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc[2] Fi[6] Fp FC12{ m Fi[4]} FC13{ m FC14{ m Fi[3]} FC14 Fi} Fp[2] FC15{ BC16{ v37 v38 v39 v40} v33 v34 v35 v36 Fp FC12} FC15}


 S10036C1 ::~S10036C1(){ note_dtor("S10036C1", this);}
void  S10036C1 ::v1(){vfunc_called(this, "_ZN8S10036C12v1Ev");}
void  S10036C1 ::v2(){vfunc_called(this, "_ZN8S10036C12v2Ev");}
void  S10036C1 ::v3(){vfunc_called(this, "_ZN8S10036C12v3Ev");}
void  S10036C1 ::v4(){vfunc_called(this, "_ZN8S10036C12v4Ev");}
void  S10036C1 ::v5(){vfunc_called(this, "_ZN8S10036C12v5Ev");}
S10036C1 ::S10036C1(){ note_ctor("S10036C1", this);} // tgen

static void Test_S10036C1()
{
  extern Class_Descriptor cd_S10036C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(42,60)];
    init_test(&cd_S10036C1, buf);
    S10036C1 *dp, &lv = *(dp=new (buf) S10036C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(328,236), "sizeof(S10036C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10036C1)");
    check_base_class_offset(lv, (S10036C2*), 0, "S10036C1");
    check_field_offset(lv, s10036c1f0, ABISELECT(72,48), "S10036C1.s10036c1f0");
    check_field_offset(lv, s10036c1f1, ABISELECT(144,88), "S10036C1.s10036c1f1");
    check_field_offset(lv, s10036c1f2, ABISELECT(152,92), "S10036C1.s10036c1f2");
    set_bf_and_test(lv, s10036c1f3, ABISELECT(164,104), 0, 1, 1, "S10036C1");
    set_bf_and_test(lv, s10036c1f4, ABISELECT(164,104), 1, 1, 1, "S10036C1");
    set_bf_and_test(lv, s10036c1f5, ABISELECT(164,104), 2, 1, 1, "S10036C1");
    set_bf_and_test(lv, s10036c1f6, ABISELECT(164,104), 3, 1, 1, "S10036C1");
    set_bf_and_test(lv, s10036c1f7, ABISELECT(164,104), 4, 1, 1, "S10036C1");
    check_field_offset(lv, s10036c1f8, ABISELECT(165,105), "S10036C1.s10036c1f8");
    check_field_offset(lv, s10036c1f9, ABISELECT(168,108), "S10036C1.s10036c1f9");
    check_field_offset(lv, s10036c1f10, ABISELECT(192,132), "S10036C1.s10036c1f10");
    check_field_offset(lv, s10036c1f11, ABISELECT(200,136), "S10036C1.s10036c1f11");
    check_field_offset(lv, s10036c1f12, ABISELECT(216,152), "S10036C1.s10036c1f12");
    check_field_offset(lv, s10036c1f13, ABISELECT(248,180), "S10036C1.s10036c1f13");
    check_field_offset(lv, s10036c1f14, ABISELECT(264,188), "S10036C1.s10036c1f14");
    check_field_offset(lv, s10036c1f15, ABISELECT(296,212), "S10036C1.s10036c1f15");
    test_class_info(&lv, &cd_S10036C1);
    dp->~S10036C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10036C1(Test_S10036C1, "S10036C1", ABISELECT(328,236));

#else // __cplusplus

extern void _ZN8S10036C1C1Ev();
extern void _ZN8S10036C1D1Ev();
Name_Map name_map_S10036C1[] = {
  NSPAIR(_ZN8S10036C1C1Ev),
  NSPAIR(_ZN8S10036C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10036C2;
extern VTBL_ENTRY _ZTI8S10036C2[];
extern  VTBL_ENTRY _ZTV8S10036C2[];
static Base_Class bases_S10036C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10036C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10036C1[];
extern void _ZN8S10036C1D1Ev();
extern void _ZN8S10036C1D0Ev();
extern void _ZN8S10036C22v6Ev();
extern void _ZN8S10036C22v7Ev();
extern void _ZN8S10036C22v8Ev();
extern void _ZN8S10036C22v9Ev();
extern void _ZN8S10036C23v10Ev();
extern void _ZN8S10036C23v11Ev();
extern void _ZN8S10036C23v12Ev();
extern void _ZN8S10036C23v13Ev();
extern void _ZN8S10036C23v14Ev();
extern void _ZN8S10036C23v15Ev();
extern void _ZN8S10036C23v16Ev();
extern void _ZN8S10036C23v17Ev();
extern void _ZN8S10036C23v18Ev();
extern void _ZN8S10036C23v19Ev();
extern void _ZN8S10036C23v20Ev();
extern void _ZN8S10036C23v21Ev();
extern void _ZN8S10036C23v22Ev();
extern void _ZN8S10036C23v23Ev();
extern void _ZN8S10036C12v1Ev();
extern void _ZN8S10036C12v2Ev();
extern void _ZN8S10036C12v3Ev();
extern void _ZN8S10036C12v4Ev();
extern void _ZN8S10036C12v5Ev();
static  VTBL_ENTRY vtc_S10036C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10036C1[0]),
  (VTBL_ENTRY)&_ZN8S10036C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10036C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10036C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10036C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10036C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10036C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v21Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v22Ev,
  (VTBL_ENTRY)&_ZN8S10036C23v23Ev,
  (VTBL_ENTRY)&_ZN8S10036C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10036C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10036C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10036C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10036C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10036C1[];
extern  VTBL_ENTRY _ZTV8S10036C1[];
Class_Descriptor cd_S10036C1 = {  "S10036C1", // class name
  bases_S10036C1, 1,
  &(vtc_S10036C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(328,236), // object size
  NSPAIRA(_ZTI8S10036C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10036C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6721C2  {
  int s6721c2f0;
  __tsi64 s6721c2f1;
  void *s6721c2f2[4];
  int s6721c2f3[2];
  void *s6721c2f4;
  ::S3214C4_nt s6721c2f5;
  void *s6721c2f6[2];
  virtual  ~S6721C2(); // _ZN7S6721C2D1Ev
  virtual void  v3(); // _ZN7S6721C22v3Ev
  virtual void  v4(); // _ZN7S6721C22v4Ev
  virtual void  v5(); // _ZN7S6721C22v5Ev
  virtual void  v6(); // _ZN7S6721C22v6Ev
  virtual void  v7(); // _ZN7S6721C22v7Ev
  virtual void  v8(); // _ZN7S6721C22v8Ev
  virtual void  v9(); // _ZN7S6721C22v9Ev
  virtual void  v10(); // _ZN7S6721C23v10Ev
  virtual void  v11(); // _ZN7S6721C23v11Ev
  virtual void  v12(); // _ZN7S6721C23v12Ev
  virtual void  v13(); // _ZN7S6721C23v13Ev
  virtual void  v14(); // _ZN7S6721C23v14Ev
  virtual void  v15(); // _ZN7S6721C23v15Ev
  virtual void  v16(); // _ZN7S6721C23v16Ev
  virtual void  v17(); // _ZN7S6721C23v17Ev
  virtual void  v18(); // _ZN7S6721C23v18Ev
  virtual void  v19(); // _ZN7S6721C23v19Ev
  virtual void  v20(); // _ZN7S6721C23v20Ev
  virtual void  v21(); // _ZN7S6721C23v21Ev
  virtual void  v22(); // _ZN7S6721C23v22Ev
  virtual void  v23(); // _ZN7S6721C23v23Ev
  virtual void  v24(); // _ZN7S6721C23v24Ev
  virtual void  v25(); // _ZN7S6721C23v25Ev
  virtual void  v26(); // _ZN7S6721C23v26Ev
  virtual void  v27(); // _ZN7S6721C23v27Ev
  virtual void  v28(); // _ZN7S6721C23v28Ev
  virtual void  v29(); // _ZN7S6721C23v29Ev
  virtual void  v30(); // _ZN7S6721C23v30Ev
  virtual void  v31(); // _ZN7S6721C23v31Ev
  virtual void  v32(); // _ZN7S6721C23v32Ev
  virtual void  v33(); // _ZN7S6721C23v33Ev
  virtual void  v34(); // _ZN7S6721C23v34Ev
  virtual void  v35(); // _ZN7S6721C23v35Ev
  virtual void  v36(); // _ZN7S6721C23v36Ev
  virtual void  v37(); // _ZN7S6721C23v37Ev
  virtual void  v38(); // _ZN7S6721C23v38Ev
  virtual void  v39(); // _ZN7S6721C23v39Ev
  virtual void  v40(); // _ZN7S6721C23v40Ev
  virtual void  v41(); // _ZN7S6721C23v41Ev
  virtual void  v42(); // _ZN7S6721C23v42Ev
  virtual void  v43(); // _ZN7S6721C23v43Ev
  virtual void  v44(); // _ZN7S6721C23v44Ev
  virtual void  v45(); // _ZN7S6721C23v45Ev
  virtual void  v46(); // _ZN7S6721C23v46Ev
  virtual void  v47(); // _ZN7S6721C23v47Ev
  virtual void  v48(); // _ZN7S6721C23v48Ev
  virtual void  v49(); // _ZN7S6721C23v49Ev
  virtual void  v50(); // _ZN7S6721C23v50Ev
  virtual void  v51(); // _ZN7S6721C23v51Ev
  virtual void  v52(); // _ZN7S6721C23v52Ev
  virtual void  v53(); // _ZN7S6721C23v53Ev
  virtual void  v54(); // _ZN7S6721C23v54Ev
  virtual void  v55(); // _ZN7S6721C23v55Ev
  virtual void  v56(); // _ZN7S6721C23v56Ev
  virtual void  v57(); // _ZN7S6721C23v57Ev
  virtual void  v58(); // _ZN7S6721C23v58Ev
  virtual void  v59(); // _ZN7S6721C23v59Ev
  virtual void  v60(); // _ZN7S6721C23v60Ev
  virtual void  v61(); // _ZN7S6721C23v61Ev
  virtual void  v62(); // _ZN7S6721C23v62Ev
  virtual void  v63(); // _ZN7S6721C23v63Ev
  virtual void  v64(); // _ZN7S6721C23v64Ev
  virtual void  v65(); // _ZN7S6721C23v65Ev
  virtual void  v66(); // _ZN7S6721C23v66Ev
  S6721C2(); // tgen
};
//SIG(-1 S6721C2) 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]}


 S6721C2 ::~S6721C2(){ note_dtor("S6721C2", this);}
void  S6721C2 ::v3(){vfunc_called(this, "_ZN7S6721C22v3Ev");}
void  S6721C2 ::v4(){vfunc_called(this, "_ZN7S6721C22v4Ev");}
void  S6721C2 ::v5(){vfunc_called(this, "_ZN7S6721C22v5Ev");}
void  S6721C2 ::v6(){vfunc_called(this, "_ZN7S6721C22v6Ev");}
void  S6721C2 ::v7(){vfunc_called(this, "_ZN7S6721C22v7Ev");}
void  S6721C2 ::v8(){vfunc_called(this, "_ZN7S6721C22v8Ev");}
void  S6721C2 ::v9(){vfunc_called(this, "_ZN7S6721C22v9Ev");}
void  S6721C2 ::v10(){vfunc_called(this, "_ZN7S6721C23v10Ev");}
void  S6721C2 ::v11(){vfunc_called(this, "_ZN7S6721C23v11Ev");}
void  S6721C2 ::v12(){vfunc_called(this, "_ZN7S6721C23v12Ev");}
void  S6721C2 ::v13(){vfunc_called(this, "_ZN7S6721C23v13Ev");}
void  S6721C2 ::v14(){vfunc_called(this, "_ZN7S6721C23v14Ev");}
void  S6721C2 ::v15(){vfunc_called(this, "_ZN7S6721C23v15Ev");}
void  S6721C2 ::v16(){vfunc_called(this, "_ZN7S6721C23v16Ev");}
void  S6721C2 ::v17(){vfunc_called(this, "_ZN7S6721C23v17Ev");}
void  S6721C2 ::v18(){vfunc_called(this, "_ZN7S6721C23v18Ev");}
void  S6721C2 ::v19(){vfunc_called(this, "_ZN7S6721C23v19Ev");}
void  S6721C2 ::v20(){vfunc_called(this, "_ZN7S6721C23v20Ev");}
void  S6721C2 ::v21(){vfunc_called(this, "_ZN7S6721C23v21Ev");}
void  S6721C2 ::v22(){vfunc_called(this, "_ZN7S6721C23v22Ev");}
void  S6721C2 ::v23(){vfunc_called(this, "_ZN7S6721C23v23Ev");}
void  S6721C2 ::v24(){vfunc_called(this, "_ZN7S6721C23v24Ev");}
void  S6721C2 ::v25(){vfunc_called(this, "_ZN7S6721C23v25Ev");}
void  S6721C2 ::v26(){vfunc_called(this, "_ZN7S6721C23v26Ev");}
void  S6721C2 ::v27(){vfunc_called(this, "_ZN7S6721C23v27Ev");}
void  S6721C2 ::v28(){vfunc_called(this, "_ZN7S6721C23v28Ev");}
void  S6721C2 ::v29(){vfunc_called(this, "_ZN7S6721C23v29Ev");}
void  S6721C2 ::v30(){vfunc_called(this, "_ZN7S6721C23v30Ev");}
void  S6721C2 ::v31(){vfunc_called(this, "_ZN7S6721C23v31Ev");}
void  S6721C2 ::v32(){vfunc_called(this, "_ZN7S6721C23v32Ev");}
void  S6721C2 ::v33(){vfunc_called(this, "_ZN7S6721C23v33Ev");}
void  S6721C2 ::v34(){vfunc_called(this, "_ZN7S6721C23v34Ev");}
void  S6721C2 ::v35(){vfunc_called(this, "_ZN7S6721C23v35Ev");}
void  S6721C2 ::v36(){vfunc_called(this, "_ZN7S6721C23v36Ev");}
void  S6721C2 ::v37(){vfunc_called(this, "_ZN7S6721C23v37Ev");}
void  S6721C2 ::v38(){vfunc_called(this, "_ZN7S6721C23v38Ev");}
void  S6721C2 ::v39(){vfunc_called(this, "_ZN7S6721C23v39Ev");}
void  S6721C2 ::v40(){vfunc_called(this, "_ZN7S6721C23v40Ev");}
void  S6721C2 ::v41(){vfunc_called(this, "_ZN7S6721C23v41Ev");}
void  S6721C2 ::v42(){vfunc_called(this, "_ZN7S6721C23v42Ev");}
void  S6721C2 ::v43(){vfunc_called(this, "_ZN7S6721C23v43Ev");}
void  S6721C2 ::v44(){vfunc_called(this, "_ZN7S6721C23v44Ev");}
void  S6721C2 ::v45(){vfunc_called(this, "_ZN7S6721C23v45Ev");}
void  S6721C2 ::v46(){vfunc_called(this, "_ZN7S6721C23v46Ev");}
void  S6721C2 ::v47(){vfunc_called(this, "_ZN7S6721C23v47Ev");}
void  S6721C2 ::v48(){vfunc_called(this, "_ZN7S6721C23v48Ev");}
void  S6721C2 ::v49(){vfunc_called(this, "_ZN7S6721C23v49Ev");}
void  S6721C2 ::v50(){vfunc_called(this, "_ZN7S6721C23v50Ev");}
void  S6721C2 ::v51(){vfunc_called(this, "_ZN7S6721C23v51Ev");}
void  S6721C2 ::v52(){vfunc_called(this, "_ZN7S6721C23v52Ev");}
void  S6721C2 ::v53(){vfunc_called(this, "_ZN7S6721C23v53Ev");}
void  S6721C2 ::v54(){vfunc_called(this, "_ZN7S6721C23v54Ev");}
void  S6721C2 ::v55(){vfunc_called(this, "_ZN7S6721C23v55Ev");}
void  S6721C2 ::v56(){vfunc_called(this, "_ZN7S6721C23v56Ev");}
void  S6721C2 ::v57(){vfunc_called(this, "_ZN7S6721C23v57Ev");}
void  S6721C2 ::v58(){vfunc_called(this, "_ZN7S6721C23v58Ev");}
void  S6721C2 ::v59(){vfunc_called(this, "_ZN7S6721C23v59Ev");}
void  S6721C2 ::v60(){vfunc_called(this, "_ZN7S6721C23v60Ev");}
void  S6721C2 ::v61(){vfunc_called(this, "_ZN7S6721C23v61Ev");}
void  S6721C2 ::v62(){vfunc_called(this, "_ZN7S6721C23v62Ev");}
void  S6721C2 ::v63(){vfunc_called(this, "_ZN7S6721C23v63Ev");}
void  S6721C2 ::v64(){vfunc_called(this, "_ZN7S6721C23v64Ev");}
void  S6721C2 ::v65(){vfunc_called(this, "_ZN7S6721C23v65Ev");}
void  S6721C2 ::v66(){vfunc_called(this, "_ZN7S6721C23v66Ev");}
S6721C2 ::S6721C2(){ note_ctor("S6721C2", this);} // tgen

static void Test_S6721C2()
{
  extern Class_Descriptor cd_S6721C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S6721C2, buf);
    S6721C2 *dp, &lv = *(dp=new (buf) S6721C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S6721C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6721C2)");
    check_field_offset(lv, s6721c2f0, ABISELECT(8,4), "S6721C2.s6721c2f0");
    check_field_offset(lv, s6721c2f1, ABISELECT(16,8), "S6721C2.s6721c2f1");
    check_field_offset(lv, s6721c2f2, ABISELECT(24,16), "S6721C2.s6721c2f2");
    check_field_offset(lv, s6721c2f3, ABISELECT(56,32), "S6721C2.s6721c2f3");
    check_field_offset(lv, s6721c2f4, ABISELECT(64,40), "S6721C2.s6721c2f4");
    check_field_offset(lv, s6721c2f5, ABISELECT(72,44), "S6721C2.s6721c2f5");
    check_field_offset(lv, s6721c2f6, ABISELECT(80,52), "S6721C2.s6721c2f6");
    test_class_info(&lv, &cd_S6721C2);
    dp->~S6721C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6721C2(Test_S6721C2, "S6721C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S6721C2C1Ev();
extern void _ZN7S6721C2D1Ev();
Name_Map name_map_S6721C2[] = {
  NSPAIR(_ZN7S6721C2C1Ev),
  NSPAIR(_ZN7S6721C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6721C2[];
extern void _ZN7S6721C2D1Ev();
extern void _ZN7S6721C2D0Ev();
extern void _ZN7S6721C22v3Ev();
extern void _ZN7S6721C22v4Ev();
extern void _ZN7S6721C22v5Ev();
extern void _ZN7S6721C22v6Ev();
extern void _ZN7S6721C22v7Ev();
extern void _ZN7S6721C22v8Ev();
extern void _ZN7S6721C22v9Ev();
extern void _ZN7S6721C23v10Ev();
extern void _ZN7S6721C23v11Ev();
extern void _ZN7S6721C23v12Ev();
extern void _ZN7S6721C23v13Ev();
extern void _ZN7S6721C23v14Ev();
extern void _ZN7S6721C23v15Ev();
extern void _ZN7S6721C23v16Ev();
extern void _ZN7S6721C23v17Ev();
extern void _ZN7S6721C23v18Ev();
extern void _ZN7S6721C23v19Ev();
extern void _ZN7S6721C23v20Ev();
extern void _ZN7S6721C23v21Ev();
extern void _ZN7S6721C23v22Ev();
extern void _ZN7S6721C23v23Ev();
extern void _ZN7S6721C23v24Ev();
extern void _ZN7S6721C23v25Ev();
extern void _ZN7S6721C23v26Ev();
extern void _ZN7S6721C23v27Ev();
extern void _ZN7S6721C23v28Ev();
extern void _ZN7S6721C23v29Ev();
extern void _ZN7S6721C23v30Ev();
extern void _ZN7S6721C23v31Ev();
extern void _ZN7S6721C23v32Ev();
extern void _ZN7S6721C23v33Ev();
extern void _ZN7S6721C23v34Ev();
extern void _ZN7S6721C23v35Ev();
extern void _ZN7S6721C23v36Ev();
extern void _ZN7S6721C23v37Ev();
extern void _ZN7S6721C23v38Ev();
extern void _ZN7S6721C23v39Ev();
extern void _ZN7S6721C23v40Ev();
extern void _ZN7S6721C23v41Ev();
extern void _ZN7S6721C23v42Ev();
extern void _ZN7S6721C23v43Ev();
extern void _ZN7S6721C23v44Ev();
extern void _ZN7S6721C23v45Ev();
extern void _ZN7S6721C23v46Ev();
extern void _ZN7S6721C23v47Ev();
extern void _ZN7S6721C23v48Ev();
extern void _ZN7S6721C23v49Ev();
extern void _ZN7S6721C23v50Ev();
extern void _ZN7S6721C23v51Ev();
extern void _ZN7S6721C23v52Ev();
extern void _ZN7S6721C23v53Ev();
extern void _ZN7S6721C23v54Ev();
extern void _ZN7S6721C23v55Ev();
extern void _ZN7S6721C23v56Ev();
extern void _ZN7S6721C23v57Ev();
extern void _ZN7S6721C23v58Ev();
extern void _ZN7S6721C23v59Ev();
extern void _ZN7S6721C23v60Ev();
extern void _ZN7S6721C23v61Ev();
extern void _ZN7S6721C23v62Ev();
extern void _ZN7S6721C23v63Ev();
extern void _ZN7S6721C23v64Ev();
extern void _ZN7S6721C23v65Ev();
extern void _ZN7S6721C23v66Ev();
static  VTBL_ENTRY vtc_S6721C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6721C2[0]),
  (VTBL_ENTRY)&_ZN7S6721C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6721C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v66Ev,
};
extern VTBL_ENTRY _ZTI7S6721C2[];
extern  VTBL_ENTRY _ZTV7S6721C2[];
Class_Descriptor cd_S6721C2 = {  "S6721C2", // class name
  0,0,//no base classes
  &(vtc_S6721C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S6721C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6721C2),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  S6721C1  : S6721C2 {
  ::S3444C13 s6721c1f0;
  virtual  ~S6721C1(); // _ZN7S6721C1D1Ev
  virtual void  v1(); // _ZN7S6721C12v1Ev
  virtual void  v2(); // _ZN7S6721C12v2Ev
  S6721C1(); // tgen
};
//SIG(1 S6721C1) C1{ BC2{ vd v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 FC4{ m FC5{ BC6{ BC7{ BC8{ m Fp Fi[2]}}}} Fi Fi:1 Fi:1 Fi:1 Fi:1 Fc FC5 FC5 FC5 FC5 Fi:1 FC9{ m Fi[4]} Fi:1 Fi[8] Fi:1 Fi}}


 S6721C1 ::~S6721C1(){ note_dtor("S6721C1", this);}
void  S6721C1 ::v1(){vfunc_called(this, "_ZN7S6721C12v1Ev");}
void  S6721C1 ::v2(){vfunc_called(this, "_ZN7S6721C12v2Ev");}
S6721C1 ::S6721C1(){ note_ctor("S6721C1", this);} // tgen

static void Test_S6721C1()
{
  extern Class_Descriptor cd_S6721C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(32,49)];
    init_test(&cd_S6721C1, buf);
    S6721C1 *dp, &lv = *(dp=new (buf) S6721C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(248,192), "sizeof(S6721C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6721C1)");
    check_base_class_offset(lv, (S6721C2*), 0, "S6721C1");
    check_field_offset(lv, s6721c1f0, ABISELECT(96,60), "S6721C1.s6721c1f0");
    test_class_info(&lv, &cd_S6721C1);
    dp->~S6721C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6721C1(Test_S6721C1, "S6721C1", ABISELECT(248,192));

#else // __cplusplus

extern void _ZN7S6721C1C1Ev();
extern void _ZN7S6721C1D1Ev();
Name_Map name_map_S6721C1[] = {
  NSPAIR(_ZN7S6721C1C1Ev),
  NSPAIR(_ZN7S6721C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6721C2;
extern VTBL_ENTRY _ZTI7S6721C2[];
extern  VTBL_ENTRY _ZTV7S6721C2[];
static Base_Class bases_S6721C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6721C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6721C1[];
extern void _ZN7S6721C1D1Ev();
extern void _ZN7S6721C1D0Ev();
extern void _ZN7S6721C22v3Ev();
extern void _ZN7S6721C22v4Ev();
extern void _ZN7S6721C22v5Ev();
extern void _ZN7S6721C22v6Ev();
extern void _ZN7S6721C22v7Ev();
extern void _ZN7S6721C22v8Ev();
extern void _ZN7S6721C22v9Ev();
extern void _ZN7S6721C23v10Ev();
extern void _ZN7S6721C23v11Ev();
extern void _ZN7S6721C23v12Ev();
extern void _ZN7S6721C23v13Ev();
extern void _ZN7S6721C23v14Ev();
extern void _ZN7S6721C23v15Ev();
extern void _ZN7S6721C23v16Ev();
extern void _ZN7S6721C23v17Ev();
extern void _ZN7S6721C23v18Ev();
extern void _ZN7S6721C23v19Ev();
extern void _ZN7S6721C23v20Ev();
extern void _ZN7S6721C23v21Ev();
extern void _ZN7S6721C23v22Ev();
extern void _ZN7S6721C23v23Ev();
extern void _ZN7S6721C23v24Ev();
extern void _ZN7S6721C23v25Ev();
extern void _ZN7S6721C23v26Ev();
extern void _ZN7S6721C23v27Ev();
extern void _ZN7S6721C23v28Ev();
extern void _ZN7S6721C23v29Ev();
extern void _ZN7S6721C23v30Ev();
extern void _ZN7S6721C23v31Ev();
extern void _ZN7S6721C23v32Ev();
extern void _ZN7S6721C23v33Ev();
extern void _ZN7S6721C23v34Ev();
extern void _ZN7S6721C23v35Ev();
extern void _ZN7S6721C23v36Ev();
extern void _ZN7S6721C23v37Ev();
extern void _ZN7S6721C23v38Ev();
extern void _ZN7S6721C23v39Ev();
extern void _ZN7S6721C23v40Ev();
extern void _ZN7S6721C23v41Ev();
extern void _ZN7S6721C23v42Ev();
extern void _ZN7S6721C23v43Ev();
extern void _ZN7S6721C23v44Ev();
extern void _ZN7S6721C23v45Ev();
extern void _ZN7S6721C23v46Ev();
extern void _ZN7S6721C23v47Ev();
extern void _ZN7S6721C23v48Ev();
extern void _ZN7S6721C23v49Ev();
extern void _ZN7S6721C23v50Ev();
extern void _ZN7S6721C23v51Ev();
extern void _ZN7S6721C23v52Ev();
extern void _ZN7S6721C23v53Ev();
extern void _ZN7S6721C23v54Ev();
extern void _ZN7S6721C23v55Ev();
extern void _ZN7S6721C23v56Ev();
extern void _ZN7S6721C23v57Ev();
extern void _ZN7S6721C23v58Ev();
extern void _ZN7S6721C23v59Ev();
extern void _ZN7S6721C23v60Ev();
extern void _ZN7S6721C23v61Ev();
extern void _ZN7S6721C23v62Ev();
extern void _ZN7S6721C23v63Ev();
extern void _ZN7S6721C23v64Ev();
extern void _ZN7S6721C23v65Ev();
extern void _ZN7S6721C23v66Ev();
extern void _ZN7S6721C12v1Ev();
extern void _ZN7S6721C12v2Ev();
static  VTBL_ENTRY vtc_S6721C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6721C1[0]),
  (VTBL_ENTRY)&_ZN7S6721C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6721C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6721C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6721C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6721C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6721C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6721C1[];
extern  VTBL_ENTRY _ZTV7S6721C1[];
Class_Descriptor cd_S6721C1 = {  "S6721C1", // class name
  bases_S6721C1, 1,
  &(vtc_S6721C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(248,192), // object size
  NSPAIRA(_ZTI7S6721C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6721C1),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  S3467C5  {
  virtual void  v2(); // _ZN7S3467C52v2Ev
  ~S3467C5(); // tgen
  S3467C5(); // tgen
};
//SIG(-1 S3467C5) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S3467C5C1Ev();
extern void _ZN7S3467C5D1Ev();
Name_Map name_map_S3467C5[] = {
  NSPAIR(_ZN7S3467C5C1Ev),
  NSPAIR(_ZN7S3467C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3467C5[];
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY vtc_S3467C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C5[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
Class_Descriptor cd_S3467C5 = {  "S3467C5", // class name
  0,0,//no base classes
  &(vtc_S3467C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3467C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3467C5),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  S3467C4  : S3467C5 , virtual S20997C6 , S4227C37 {
  void *s3467c4f0[10];
  ~S3467C4(); // tgen
  S3467C4(); // tgen
};
//SIG(-1 S3467C4) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S3467C4()
{
  extern Class_Descriptor cd_S3467C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S3467C4, buf);
    S3467C4 *dp, &lv = *(dp=new (buf) S3467C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S3467C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C4)");
    check_base_class_offset(lv, (S3467C5*), 0, "S3467C4");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S3467C4");
    check_base_class_offset(lv, (S4227C37*), 0, "S3467C4");
    check_field_offset(lv, s3467c4f0, ABISELECT(8,4), "S3467C4.s3467c4f0");
    test_class_info(&lv, &cd_S3467C4);
    dp->~S3467C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C4(Test_S3467C4, "S3467C4", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN7S3467C4C1Ev();
extern void _ZN7S3467C4D1Ev();
Name_Map name_map_S3467C4[] = {
  NSPAIR(_ZN7S3467C4C1Ev),
  NSPAIR(_ZN7S3467C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S3467C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3467C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3467C4[];
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY vtc_S3467C4[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern VTBL_ENTRY _ZTV7S3467C4[];
static  VTT_ENTRY vtt_S3467C4[] = {
  {&(_ZTV7S3467C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
Class_Descriptor cd_S3467C4 = {  "S3467C4", // class name
  bases_S3467C4, 3,
  &(vtc_S3467C4[0]), // expected_vtbl_contents
  &(vtt_S3467C4[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI7S3467C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3467C4),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3467C4),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  S3467C10  : virtual S3467C5 {
  ::S3467C4 s3467c10f0[9];
  ~S3467C10(); // tgen
  S3467C10(); // tgen
};
//SIG(-1 S3467C10) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S3467C10()
{
  extern Class_Descriptor cd_S3467C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S3467C10, buf);
    S3467C10 *dp, &lv = *(dp=new (buf) S3467C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S3467C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C10)");
    check_base_class_offset(lv, (S3467C5*), 0, "S3467C10");
    check_field_offset(lv, s3467c10f0, ABISELECT(8,4), "S3467C10.s3467c10f0");
    test_class_info(&lv, &cd_S3467C10);
    dp->~S3467C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C10(Test_S3467C10, "S3467C10", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN8S3467C10C1Ev();
extern void _ZN8S3467C10D1Ev();
Name_Map name_map_S3467C10[] = {
  NSPAIR(_ZN8S3467C10C1Ev),
  NSPAIR(_ZN8S3467C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
static Base_Class bases_S3467C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3467C5,    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 _ZTI8S3467C10[];
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY vtc_S3467C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S3467C10[];
static  VTT_ENTRY vtt_S3467C10[] = {
  {&(_ZTV8S3467C10[4]),  4,5},
  {&(_ZTV8S3467C10[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
Class_Descriptor cd_S3467C10 = {  "S3467C10", // class name
  bases_S3467C10, 1,
  &(vtc_S3467C10[0]), // expected_vtbl_contents
  &(vtt_S3467C10[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI8S3467C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S3467C10),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C10),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  S3467C11  : virtual S20997C6 , virtual S3467C5 , S4227C37 {
  virtual  ~S3467C11(); // _ZN8S3467C11D2Ev
  S3467C11(); // tgen
};
//SIG(-1 S3467C11) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S3467C11()
{
  extern Class_Descriptor cd_S3467C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S3467C11, buf);
    S3467C11 *dp, &lv = *(dp=new (buf) S3467C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S3467C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C11)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S3467C11");
    check_base_class_offset(lv, (S3467C5*), 0, "S3467C11");
    check_base_class_offset(lv, (S4227C37*), 0, "S3467C11");
    test_class_info(&lv, &cd_S3467C11);
    dp->~S3467C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C11(Test_S3467C11, "S3467C11", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S3467C11C1Ev();
extern void _ZN8S3467C11D2Ev();
Name_Map name_map_S3467C11[] = {
  NSPAIR(_ZN8S3467C11C1Ev),
  NSPAIR(_ZN8S3467C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S3467C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3467C5,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C11[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY vtc_S3467C11[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern VTBL_ENTRY _ZTV8S3467C11[];
static  VTT_ENTRY vtt_S3467C11[] = {
  {&(_ZTV8S3467C11[5]),  5,8},
  {&(_ZTV8S3467C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
Class_Descriptor cd_S3467C11 = {  "S3467C11", // class name
  bases_S3467C11, 3,
  &(vtc_S3467C11[0]), // expected_vtbl_contents
  &(vtt_S3467C11[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S3467C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3467C11),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C11),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  S3467C12  : S3467C11 {
  virtual  ~S3467C12(); // _ZN8S3467C12D2Ev
  S3467C12(); // tgen
};
//SIG(-1 S3467C12) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S3467C12()
{
  extern Class_Descriptor cd_S3467C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S3467C12, buf);
    S3467C12 *dp, &lv = *(dp=new (buf) S3467C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S3467C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C12)");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*), ABISELECT(8,4), "S3467C12");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*), 0, "S3467C12");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*), 0, "S3467C12");
    check_base_class_offset(lv, (S3467C11*), 0, "S3467C12");
    test_class_info(&lv, &cd_S3467C12);
    dp->~S3467C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C12(Test_S3467C12, "S3467C12", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S3467C12C1Ev();
extern void _ZN8S3467C12D2Ev();
Name_Map name_map_S3467C12[] = {
  NSPAIR(_ZN8S3467C12C1Ev),
  NSPAIR(_ZN8S3467C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
static Base_Class bases_S3467C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C5,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C12[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C12D1Ev();
extern void _ZN8S3467C12D0Ev();
static  VTBL_ENTRY vtc_S3467C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D0Ev,
};
extern VTBL_ENTRY _ZTV8S3467C12[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
static  VTT_ENTRY vtt_S3467C12[] = {
  {&(_ZTV8S3467C12[5]),  5,8},
  {&(_tg__ZTV8S3467C11__8S3467C12[5]),  5,8},
  {&(_tg__ZTV8S3467C11__8S3467C12[5]),  5,8},
  {&(_ZTV8S3467C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S3467C12[];
extern  VTBL_ENTRY _ZTV8S3467C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C12[];
Class_Descriptor cd_S3467C12 = {  "S3467C12", // class name
  bases_S3467C12, 4,
  &(vtc_S3467C12[0]), // expected_vtbl_contents
  &(vtt_S3467C12[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S3467C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S3467C12),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C12),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  S3467C9  : virtual S4227C37 , S3467C10 , S3467C11 , S3467C12 {
  ~S3467C9(); // tgen
  S3467C9(); // tgen
};
//SIG(-1 S3467C9) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S3467C9()
{
  extern Class_Descriptor cd_S3467C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S3467C9, buf);
    S3467C9 *dp, &lv = *(dp=new (buf) S3467C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S3467C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C9)");
    /*is_ambiguous_... S3467C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S3467C9");
    check_base_class_offset(lv, (S3467C5*)(S3467C10*), 0, "S3467C9");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*), 0, "S3467C9");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C12*), 0, "S3467C9");
    check_base_class_offset(lv, (S3467C10*), 0, "S3467C9");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*), ABISELECT(1176,768), "S3467C9");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C12*), ABISELECT(1176,768), "S3467C9");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*), ABISELECT(1160,760), "S3467C9");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C11*), ABISELECT(1160,760), "S3467C9");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C12*), ABISELECT(1168,764), "S3467C9");
    check_base_class_offset(lv, (S3467C11*)(S3467C12*), ABISELECT(1168,764), "S3467C9");
    check_base_class_offset(lv, (S3467C12*), ABISELECT(1168,764), "S3467C9");
    test_class_info(&lv, &cd_S3467C9);
    dp->~S3467C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C9(Test_S3467C9, "S3467C9", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN7S3467C9C1Ev();
extern void _ZN7S3467C9D1Ev();
Name_Map name_map_S3467C9[] = {
  NSPAIR(_ZN7S3467C9C1Ev),
  NSPAIR(_ZN7S3467C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C10;
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C12;
extern VTBL_ENTRY _ZTI8S3467C12[];
extern  VTBL_ENTRY _ZTV8S3467C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C12[];
static Base_Class bases_S3467C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3467C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3467C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3467C12,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3467C9[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C9D1Ev();
extern void _ZN7S3467C9D0Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev)();
static  VTBL_ENTRY vtc_S3467C9[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S3467C9[];
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C10__7S3467C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C11__7S3467C9[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C11__7S3467C9[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C12D1Ev();
extern void _ZN8S3467C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C12__7S3467C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C118S3467C12__A1__7S3467C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C118S3467C12__A1__7S3467C9[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C12__7S3467C9[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
static  VTT_ENTRY vtt_S3467C9[] = {
  {&(_ZTV7S3467C9[6]),  6,25},
  {&(_tg__ZTV8S3467C10__7S3467C9[4]),  4,5},
  {&(_tg__ZTV8S3467C10__7S3467C9[4]),  4,5},
  {&(_tg__ZTV8S3467C11__7S3467C9[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C11__7S3467C9[3]),  3,4},
  {&(_tg__ZTV8S3467C12__7S3467C9[5]),  5,8},
  {&(_tg__ZTV8S3467C118S3467C12__A1__7S3467C9[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C118S3467C12__A1__7S3467C9[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C12__7S3467C9[3]),  3,4},
  {&(_ZTV7S3467C9[6]),  6,25},
  {&(_ZTV7S3467C9[14]),  14,25},
  {&(_ZTV7S3467C9[22]),  22,25},
};
extern VTBL_ENTRY _ZTI7S3467C9[];
extern  VTBL_ENTRY _ZTV7S3467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C9[];
Class_Descriptor cd_S3467C9 = {  "S3467C9", // class name
  bases_S3467C9, 9,
  &(vtc_S3467C9[0]), // expected_vtbl_contents
  &(vtt_S3467C9[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI7S3467C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3467C9),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3467C9),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  S3467C14  : virtual S3467C5 , S3467C4 , virtual S3467C9 {
  virtual  ~S3467C14(); // _ZN8S3467C14D2Ev
  S3467C14(); // tgen
};
//SIG(-1 S3467C14) C1{ VBC2{ v1} BC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC5 BC7{ VBC2 FC3[9]} BC8{ VBC4 VBC2 BC5 vd} BC9{ BC8 vd}} vd}


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

static void Test_S3467C14()
{
  extern Class_Descriptor cd_S3467C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(165,215)];
    init_test(&cd_S3467C14, buf);
    S3467C14 *dp, &lv = *(dp=new (buf) S3467C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1312,856), "sizeof(S3467C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C14)");
    /*is_ambiguous_... S3467C14::S3467C5 */ AMB_check_base_class_offset(lv, (S3467C5*), ABISELECT(128,84), "S3467C14");
    check_base_class_offset(lv, (S3467C5*)(S3467C10*)(S3467C9*), ABISELECT(128,84), "S3467C14");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C9*), ABISELECT(128,84), "S3467C14");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(128,84), "S3467C14");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*), 0, "S3467C14");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*), ABISELECT(88,44), "S3467C14");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C9*), ABISELECT(88,44), "S3467C14");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(88,44), "S3467C14");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*), 0, "S3467C14");
    check_base_class_offset(lv, (S3467C4*), 0, "S3467C14");
    /*is_ambiguous_... S3467C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C9*), ABISELECT(1304,852), "S3467C14");
    check_base_class_offset(lv, (S3467C10*)(S3467C9*), ABISELECT(128,84), "S3467C14");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C9*), ABISELECT(1288,844), "S3467C14");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C11*)(S3467C9*), ABISELECT(1288,844), "S3467C14");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1296,848), "S3467C14");
    check_base_class_offset(lv, (S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1296,848), "S3467C14");
    check_base_class_offset(lv, (S3467C12*)(S3467C9*), ABISELECT(1296,848), "S3467C14");
    check_base_class_offset(lv, (S3467C9*), ABISELECT(128,84), "S3467C14");
    test_class_info(&lv, &cd_S3467C14);
    dp->~S3467C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C14(Test_S3467C14, "S3467C14", ABISELECT(1312,856));

#else // __cplusplus

extern void _ZN8S3467C14C1Ev();
extern void _ZN8S3467C14D2Ev();
Name_Map name_map_S3467C14[] = {
  NSPAIR(_ZN8S3467C14C1Ev),
  NSPAIR(_ZN8S3467C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C10;
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C12;
extern VTBL_ENTRY _ZTI8S3467C12[];
extern  VTBL_ENTRY _ZTV8S3467C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C12[];
extern Class_Descriptor cd_S3467C9;
extern VTBL_ENTRY _ZTI7S3467C9[];
extern  VTBL_ENTRY _ZTV7S3467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C9[];
static Base_Class bases_S3467C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3467C5,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3467C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3467C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C10,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1288,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1288,844), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1296,848), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3467C12,    ABISELECT(1296,848), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S3467C9,    ABISELECT(128,84), //bcp->offset
    9, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C14[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C14D1Ev();
extern void _ZN8S3467C14D0Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S3467C14D1Ev,_ZThn84_N8S3467C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S3467C14D0Ev,_ZThn84_N8S3467C14D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY vtc_S3467C14[] = {
  ABISELECT(1304,852),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D0Ev,
  ABISELECT(-128,-84),
  -40,
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S3467C14[];
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__8S3467C14[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C9D1Ev();
extern void _ZN7S3467C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C14[] = {
  -40,
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C107S3467C9__8S3467C14[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C14[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C117S3467C9__8S3467C14[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C12D1Ev();
extern void _ZN8S3467C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C14[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C118S3467C127S3467C9__A1__8S3467C14[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__8S3467C14[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C127S3467C9__8S3467C14[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__7S3467C9__8S3467C14[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C12__7S3467C9__8S3467C14[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev),
};
static  VTT_ENTRY vtt_S3467C14[] = {
  {&(_ZTV8S3467C14[6]),  6,35},
  {&(_tg__ZTV7S3467C4__8S3467C14[3]),  3,4},
  {&(_ZTV8S3467C14[16]),  16,35},
  {&(_ZTV8S3467C14[16]),  16,35},
  {&(_ZTV8S3467C14[24]),  24,35},
  {&(_ZTV8S3467C14[32]),  32,35},
  {&(_tg__ZTV7S3467C9__8S3467C14[6]),  6,9},
  {&(_tg__ZTV8S3467C107S3467C9__8S3467C14[4]),  4,5},
  {&(_tg__ZTV8S3467C107S3467C9__8S3467C14[4]),  4,5},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C14[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C117S3467C9__8S3467C14[3]),  3,4},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C14[5]),  5,8},
  {&(_tg__ZTV8S3467C118S3467C127S3467C9__A1__8S3467C14[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__8S3467C14[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C127S3467C9__8S3467C14[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C14[6]),  6,9},
  {&(_tg__ZTV8S3467C11__7S3467C9__8S3467C14[5]),  5,8},
  {&(_tg__ZTV8S3467C12__7S3467C9__8S3467C14[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S3467C14[];
extern  VTBL_ENTRY _ZTV8S3467C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C14[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3467C14D0Ev,_ZThn84_N8S3467C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3467C14D1Ev,_ZThn84_N8S3467C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3467C14 = {  "S3467C14", // class name
  bases_S3467C14, 13,
  &(vtc_S3467C14[0]), // expected_vtbl_contents
  &(vtt_S3467C14[0]), // expected_vtt_contents
  ABISELECT(1312,856), // object size
  NSPAIRA(_ZTI8S3467C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3467C14),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C14),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C16  : S20997C6 , S3467C5 {
  ~S3467C16(); // tgen
  S3467C16(); // tgen
};
//SIG(-1 S3467C16) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S3467C16()
{
  extern Class_Descriptor cd_S3467C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S3467C16, buf);
    S3467C16 *dp, &lv = *(dp=new (buf) S3467C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S3467C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C16)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S3467C16");
    check_base_class_offset(lv, (S3467C5*), 0, "S3467C16");
    test_class_info(&lv, &cd_S3467C16);
    dp->~S3467C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C16(Test_S3467C16, "S3467C16", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S3467C16C1Ev();
extern void _ZN8S3467C16D1Ev();
Name_Map name_map_S3467C16[] = {
  NSPAIR(_ZN8S3467C16C1Ev),
  NSPAIR(_ZN8S3467C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
static Base_Class bases_S3467C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3467C5,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C16[];
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY vtc_S3467C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C16[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
Class_Descriptor cd_S3467C16 = {  "S3467C16", // class name
  bases_S3467C16, 2,
  &(vtc_S3467C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S3467C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3467C16),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C15  : S3467C16 {
  long double s3467c15f0;
  ~S3467C15(); // tgen
  S3467C15(); // tgen
};
//SIG(-1 S3467C15) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} FD}


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

static void Test_S3467C15()
{
  extern Class_Descriptor cd_S3467C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,15)];
    init_test(&cd_S3467C15, buf);
    S3467C15 *dp, &lv = *(dp=new (buf) S3467C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S3467C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3467C15)");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*), ABISELECT(8,4), "S3467C15");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*), 0, "S3467C15");
    check_base_class_offset(lv, (S3467C16*), 0, "S3467C15");
    check_field_offset(lv, s3467c15f0, ABISELECT(48,44), "S3467C15.s3467c15f0");
    test_class_info(&lv, &cd_S3467C15);
    dp->~S3467C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C15(Test_S3467C15, "S3467C15", ABISELECT(64,56));

#else // __cplusplus

extern void _ZN8S3467C15C1Ev();
extern void _ZN8S3467C15D1Ev();
Name_Map name_map_S3467C15[] = {
  NSPAIR(_ZN8S3467C15C1Ev),
  NSPAIR(_ZN8S3467C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
static Base_Class bases_S3467C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3467C5,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3467C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S3467C15[];
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY vtc_S3467C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C15[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern VTBL_ENTRY _ZTI8S3467C15[];
extern  VTBL_ENTRY _ZTV8S3467C15[];
Class_Descriptor cd_S3467C15 = {  "S3467C15", // class name
  bases_S3467C15, 3,
  &(vtc_S3467C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,56), // object size
  NSPAIRA(_ZTI8S3467C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S3467C15),3, //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  S3467C13  : virtual S3467C14 , S3467C15 {
  ~S3467C13(); // tgen
  S3467C13(); // tgen
};
//SIG(-1 S3467C13) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} BC11{ BC12{ BC5 BC3} FD}}


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

static void Test_S3467C13()
{
  extern Class_Descriptor cd_S3467C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S3467C13, buf);
    S3467C13 *dp, &lv = *(dp=new (buf) S3467C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S3467C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3467C13)");
    /*is_ambiguous_... S3467C14::S3467C5 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C14*), ABISELECT(192,140), "S3467C13");
    check_base_class_offset(lv, (S3467C5*)(S3467C10*)(S3467C9*), ABISELECT(192,140), "S3467C13");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C9*), ABISELECT(192,140), "S3467C13");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(192,140), "S3467C13");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*)(S3467C14*), ABISELECT(64,56), "S3467C13");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*)(S3467C14*), ABISELECT(152,100), "S3467C13");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C9*), ABISELECT(152,100), "S3467C13");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(152,100), "S3467C13");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*)(S3467C14*), ABISELECT(64,56), "S3467C13");
    check_base_class_offset(lv, (S3467C4*)(S3467C14*), ABISELECT(64,56), "S3467C13");
    /*is_ambiguous_... S3467C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C9*), 0, "S3467C13");
    check_base_class_offset(lv, (S3467C10*)(S3467C9*), ABISELECT(192,140), "S3467C13");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C9*), ABISELECT(1352,900), "S3467C13");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C11*)(S3467C9*), ABISELECT(1352,900), "S3467C13");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1360,904), "S3467C13");
    check_base_class_offset(lv, (S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1360,904), "S3467C13");
    check_base_class_offset(lv, (S3467C12*)(S3467C9*), ABISELECT(1360,904), "S3467C13");
    check_base_class_offset(lv, (S3467C9*)(S3467C14*), ABISELECT(192,140), "S3467C13");
    check_base_class_offset(lv, (S3467C14*), ABISELECT(64,56), "S3467C13");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*)(S3467C15*), ABISELECT(8,4), "S3467C13");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*)(S3467C15*), 0, "S3467C13");
    check_base_class_offset(lv, (S3467C16*)(S3467C15*), 0, "S3467C13");
    check_base_class_offset(lv, (S3467C15*), 0, "S3467C13");
    test_class_info(&lv, &cd_S3467C13);
    dp->~S3467C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C13(Test_S3467C13, "S3467C13", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN8S3467C13C1Ev();
extern void _ZN8S3467C13D1Ev();
Name_Map name_map_S3467C13[] = {
  NSPAIR(_ZN8S3467C13C1Ev),
  NSPAIR(_ZN8S3467C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C10;
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C12;
extern VTBL_ENTRY _ZTI8S3467C12[];
extern  VTBL_ENTRY _ZTV8S3467C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C12[];
extern Class_Descriptor cd_S3467C9;
extern VTBL_ENTRY _ZTI7S3467C9[];
extern  VTBL_ENTRY _ZTV7S3467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C9[];
extern Class_Descriptor cd_S3467C14;
extern VTBL_ENTRY _ZTI8S3467C14[];
extern  VTBL_ENTRY _ZTV8S3467C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C14[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
extern Class_Descriptor cd_S3467C15;
extern VTBL_ENTRY _ZTI8S3467C15[];
extern  VTBL_ENTRY _ZTV8S3467C15[];
static Base_Class bases_S3467C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3467C5,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3467C5,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S3467C4,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C10,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3467C11,    ABISELECT(1352,900), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3467C12,    ABISELECT(1360,904), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3467C9,    ABISELECT(192,140), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3467C14,    ABISELECT(64,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3467C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3467C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C13[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C13D1Ev();
extern void _ZN8S3467C13D0Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3467C13D1Ev,_ZThn56_N8S3467C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S3467C13D0Ev,_ZThn56_N8S3467C13D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZThn192_N8S3467C13D1Ev,_ZThn140_N8S3467C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev)();
extern void ABISELECT(_ZThn192_N8S3467C13D0Ev,_ZThn140_N8S3467C13D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C13D1Ev,_ZTvn760_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C13D0Ev,_ZTvn760_n28_N8S3467C13D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C13D1Ev,_ZTvn764_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C13D0Ev,_ZTvn764_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY vtc_S3467C13[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C13D0Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C13D1Ev,_ZTvn760_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C13D0Ev,_ZTvn760_n28_N8S3467C13D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C13D1Ev,_ZTvn764_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C13D0Ev,_ZTvn764_n28_N8S3467C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S3467C13[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C14D1Ev();
extern void _ZN8S3467C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C14__8S3467C13[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C14__8S3467C13[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S3467C14D1Ev,_ZThn84_N8S3467C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S3467C14D0Ev,_ZThn84_N8S3467C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C14__8S3467C13[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C14__8S3467C13[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C14__8S3467C13[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C9D1Ev();
extern void _ZN7S3467C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C13[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C107S3467C9__8S3467C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C13[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C117S3467C9__8S3467C13[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C12D1Ev();
extern void _ZN8S3467C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C13[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C118S3467C127S3467C9__A1__8S3467C13[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__8S3467C13[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C127S3467C9__8S3467C13[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__7S3467C9__8S3467C13[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C12__7S3467C9__8S3467C13[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev),
};
static  VTT_ENTRY vtt_S3467C13[] = {
  {&(_ZTV8S3467C13[7]),  7,47},
  {&(_ZTV8S3467C13[18]),  18,47},
  {&(_ZTV8S3467C13[28]),  28,47},
  {&(_ZTV8S3467C13[28]),  28,47},
  {&(_ZTV8S3467C13[36]),  36,47},
  {&(_ZTV8S3467C13[44]),  44,47},
  {&(_tg__ZTV8S3467C14__8S3467C13[6]),  6,9},
  {&(_tg__ZTV7S3467C48S3467C14__8S3467C13[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C14__8S3467C13[7]),  7,10},
  {&(_tg__ZTV7S3467C9__8S3467C14__8S3467C13[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C14__8S3467C13[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C14__8S3467C13[5]),  5,8},
  {&(_tg__ZTV7S3467C9__8S3467C13[6]),  6,9},
  {&(_tg__ZTV8S3467C107S3467C9__8S3467C13[4]),  4,5},
  {&(_tg__ZTV8S3467C107S3467C9__8S3467C13[4]),  4,5},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C13[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C117S3467C9__8S3467C13[3]),  3,4},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C13[5]),  5,8},
  {&(_tg__ZTV8S3467C118S3467C127S3467C9__A1__8S3467C13[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__8S3467C13[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C127S3467C9__8S3467C13[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C13[6]),  6,9},
  {&(_tg__ZTV8S3467C11__7S3467C9__8S3467C13[5]),  5,8},
  {&(_tg__ZTV8S3467C12__7S3467C9__8S3467C13[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S3467C13[];
extern  VTBL_ENTRY _ZTV8S3467C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C13[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3467C14D0Ev,_ZThn84_N8S3467C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3467C14D1Ev,_ZThn84_N8S3467C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3467C13D0Ev,_ZThn140_N8S3467C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S3467C13D1Ev,_ZThn140_N8S3467C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3467C13D0Ev,_ZThn56_N8S3467C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3467C13D1Ev,_ZThn56_N8S3467C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3467C13 = {  "S3467C13", // class name
  bases_S3467C13, 18,
  &(vtc_S3467C13[0]), // expected_vtbl_contents
  &(vtt_S3467C13[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI8S3467C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3467C13),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C13),24, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C8  : virtual S20997C6 , virtual S3467C9 , virtual S3467C13 {
  void *s3467c8f0;
  virtual  ~S3467C8(); // _ZN7S3467C8D2Ev
  S3467C8(); // tgen
};
//SIG(-1 S3467C8) C1{ VBC2{ m FL[5]} VBC3{ VBC4{ m} BC5{ VBC6{ v1} FC7{ BC6 VBC2 BC4 Fp[10]}[9]} BC8{ VBC2 VBC6 BC4 vd} BC9{ BC8 vd}} VBC10{ VBC11{ VBC6 BC7 VBC3 vd} BC12{ BC13{ BC2 BC6} FD}} vd Fp}


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

static void Test_S3467C8()
{
  extern Class_Descriptor cd_S3467C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,230)];
    init_test(&cd_S3467C8, buf);
    S3467C8 *dp, &lv = *(dp=new (buf) S3467C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,916), "sizeof(S3467C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3467C8)");
    /*is_ambiguous_... S3467C8::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(16,8), "S3467C8");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C9*), ABISELECT(16,8), "S3467C8");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(16,8), "S3467C8");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*)(S3467C14*), ABISELECT(16,8), "S3467C8");
    /*is_ambiguous_... S3467C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C9*), 0, "S3467C8");
    check_base_class_offset(lv, (S3467C5*)(S3467C10*)(S3467C9*), 0, "S3467C8");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C9*), 0, "S3467C8");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C12*)(S3467C9*), 0, "S3467C8");
    /*is_ambiguous_... S3467C14::S3467C5 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C14*), 0, "S3467C8");
    check_base_class_offset(lv, (S3467C10*)(S3467C9*), ABISELECT(56,48), "S3467C8");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C9*), ABISELECT(1216,808), "S3467C8");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C11*)(S3467C9*), ABISELECT(1216,808), "S3467C8");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1224,812), "S3467C8");
    check_base_class_offset(lv, (S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1224,812), "S3467C8");
    check_base_class_offset(lv, (S3467C12*)(S3467C9*), ABISELECT(1224,812), "S3467C8");
    check_base_class_offset(lv, (S3467C9*), ABISELECT(56,48), "S3467C8");
    check_base_class_offset(lv, (S3467C9*)(S3467C14*), ABISELECT(56,48), "S3467C8");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*)(S3467C14*), ABISELECT(1296,872), "S3467C8");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*)(S3467C14*), ABISELECT(1296,872), "S3467C8");
    check_base_class_offset(lv, (S3467C4*)(S3467C14*), ABISELECT(1296,872), "S3467C8");
    check_base_class_offset(lv, (S3467C14*)(S3467C13*), ABISELECT(1296,872), "S3467C8");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1240,820), "S3467C8");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1232,816), "S3467C8");
    check_base_class_offset(lv, (S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1232,816), "S3467C8");
    check_base_class_offset(lv, (S3467C15*)(S3467C13*), ABISELECT(1232,816), "S3467C8");
    check_base_class_offset(lv, (S3467C13*), ABISELECT(1232,816), "S3467C8");
    check_field_offset(lv, s3467c8f0, ABISELECT(8,4), "S3467C8.s3467c8f0");
    test_class_info(&lv, &cd_S3467C8);
    dp->~S3467C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C8(Test_S3467C8, "S3467C8", ABISELECT(1392,916));

#else // __cplusplus

extern void _ZN7S3467C8C1Ev();
extern void _ZN7S3467C8D2Ev();
Name_Map name_map_S3467C8[] = {
  NSPAIR(_ZN7S3467C8C1Ev),
  NSPAIR(_ZN7S3467C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C10;
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C12;
extern VTBL_ENTRY _ZTI8S3467C12[];
extern  VTBL_ENTRY _ZTV8S3467C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C12[];
extern Class_Descriptor cd_S3467C9;
extern VTBL_ENTRY _ZTI7S3467C9[];
extern  VTBL_ENTRY _ZTV7S3467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C9[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S3467C14;
extern VTBL_ENTRY _ZTI8S3467C14[];
extern  VTBL_ENTRY _ZTV8S3467C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C14[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
extern Class_Descriptor cd_S3467C15;
extern VTBL_ENTRY _ZTI8S3467C15[];
extern  VTBL_ENTRY _ZTV8S3467C15[];
extern Class_Descriptor cd_S3467C13;
extern VTBL_ENTRY _ZTI8S3467C13[];
extern  VTBL_ENTRY _ZTV8S3467C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C13[];
static Base_Class bases_S3467C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S3467C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3467C10,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1216,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S3467C11,    ABISELECT(1216,808), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1224,812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1224,812), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3467C12,    ABISELECT(1224,812), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3467C9,    ABISELECT(56,48), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3467C5,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_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_S4227C37,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C4,    ABISELECT(1296,872), //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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S3467C14,    ABISELECT(1296,872), //bcp->offset
    50, //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
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1240,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C5,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3467C16,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3467C15,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3467C13,    ABISELECT(1232,816), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3467C8[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C8D1Ev();
extern void _ZN7S3467C8D0Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn56_N7S3467C8D1Ev,_ZThn48_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn56_N7S3467C8D0Ev,_ZThn48_N7S3467C8D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C8D1Ev,_ZTvn760_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C8D0Ev,_ZTvn760_n28_N7S3467C8D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C8D1Ev,_ZTvn764_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C8D0Ev,_ZTvn764_n28_N7S3467C8D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn1232_N7S3467C8D1Ev,_ZThn816_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn1232_N7S3467C8D0Ev,_ZThn816_N7S3467C8D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn1296_N7S3467C8D1Ev,_ZThn872_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn1296_N7S3467C8D0Ev,_ZThn872_N7S3467C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3467C8[] = {
  ABISELECT(1296,872),
  ABISELECT(1232,816),
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C8D0Ev,
  ABISELECT(-56,-48),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev),
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(-1216,-808),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C8D1Ev,_ZTvn760_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C8D0Ev,_ZTvn760_n28_N7S3467C8D0Ev),
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(-1224,-812),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C8D1Ev,_ZTvn764_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C8D0Ev,_ZTvn764_n28_N7S3467C8D0Ev),
  ABISELECT(-1232,-816),
  0,
  ABISELECT(-1232,-816),
  ABISELECT(-1176,-768),
  ABISELECT(-1216,-808),
  ABISELECT(-1232,-816),
  ABISELECT(64,56),
  ABISELECT(-1232,-816),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev),
  ABISELECT(-1296,-872),
  0,
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  ABISELECT(-1296,-872),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S3467C8[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C9D1Ev();
extern void _ZN7S3467C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C8[] = {
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C107S3467C9__7S3467C8[] = {
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C107S3467C9__7S3467C8[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C8[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C117S3467C9__7S3467C8[] = {
  0,
  ABISELECT(1216,808),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C12D1Ev();
extern void _ZN8S3467C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C8[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C118S3467C127S3467C9__A1__7S3467C8[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__7S3467C8[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C127S3467C9__7S3467C8[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__7S3467C9__7S3467C8[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__7S3467C9__7S3467C8[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C12__7S3467C9__7S3467C8[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C13D1Ev();
extern void _ZN8S3467C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C8[] = {
  ABISELECT(-1232,-816),
  ABISELECT(-1176,-768),
  ABISELECT(-1216,-808),
  ABISELECT(-1232,-816),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C13D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3467C13D1Ev,_ZThn56_N8S3467C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S3467C13D0Ev,_ZThn56_N8S3467C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C14__8S3467C13__7S3467C8[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C13__7S3467C8[] = {
  0,
  ABISELECT(1232,816),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C13__7S3467C8[] = {
  ABISELECT(1176,768),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C13D1Ev,_ZTvn760_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C13D0Ev,_ZTvn760_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C13__7S3467C8[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C13D1Ev,_ZTvn760_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C13D0Ev,_ZTvn760_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C13D1Ev,_ZTvn764_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C13D0Ev,_ZTvn764_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C13__7S3467C8[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C13D1Ev,_ZTvn764_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C13D0Ev,_ZTvn764_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C14D1Ev();
extern void _ZN8S3467C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C8[] = {
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C14__7S3467C8[] = {
  ABISELECT(-1280,-864),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C14__7S3467C8[] = {
  0,
  ABISELECT(1296,872),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C14__7S3467C8[] = {
  ABISELECT(1240,824),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C14__7S3467C8[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C14__7S3467C8[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev),
};
static  VTT_ENTRY vtt_S3467C8[] = {
  {&(_ZTV7S3467C8[9]),  9,61},
  {&(_ZTV7S3467C8[19]),  19,61},
  {&(_ZTV7S3467C8[9]),  9,61},
  {&(_ZTV7S3467C8[27]),  27,61},
  {&(_ZTV7S3467C8[35]),  35,61},
  {&(_ZTV7S3467C8[47]),  47,61},
  {&(_ZTV7S3467C8[58]),  58,61},
  {&(_tg__ZTV7S3467C9__7S3467C8[6]),  6,9},
  {&(_tg__ZTV8S3467C107S3467C9__7S3467C8[4]),  4,5},
  {&(_tg__ZTV7S3467C5__8S3467C107S3467C9__7S3467C8[3]),  3,4},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C8[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C117S3467C9__7S3467C8[3]),  3,4},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C8[5]),  5,8},
  {&(_tg__ZTV8S3467C118S3467C127S3467C9__A1__7S3467C8[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__7S3467C8[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C127S3467C9__7S3467C8[3]),  3,4},
  {&(_tg__ZTV7S3467C5__7S3467C9__7S3467C8[3]),  3,4},
  {&(_tg__ZTV8S3467C11__7S3467C9__7S3467C8[5]),  5,8},
  {&(_tg__ZTV8S3467C12__7S3467C9__7S3467C8[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C8[7]),  7,10},
  {&(_tg__ZTV8S3467C14__8S3467C13__7S3467C8[8]),  8,11},
  {&(_tg__ZTV7S3467C5__8S3467C13__7S3467C8[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C13__7S3467C8[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C13__7S3467C8[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C13__7S3467C8[5]),  5,8},
  {&(_tg__ZTV8S3467C14__7S3467C8[6]),  6,9},
  {&(_tg__ZTV7S3467C48S3467C14__7S3467C8[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C14__7S3467C8[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C14__7S3467C8[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C14__7S3467C8[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C14__7S3467C8[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S3467C8[];
extern  VTBL_ENTRY _ZTV7S3467C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C8[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3467C13D0Ev,_ZThn56_N8S3467C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3467C13D1Ev,_ZThn56_N8S3467C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N7S3467C8D0Ev,_ZThn872_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N7S3467C8D1Ev,_ZThn872_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N7S3467C8D0Ev,_ZThn816_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N7S3467C8D1Ev,_ZThn816_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3467C8D0Ev,_ZThn48_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3467C8D1Ev,_ZThn48_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3467C8 = {  "S3467C8", // class name
  bases_S3467C8, 19,
  &(vtc_S3467C8[0]), // expected_vtbl_contents
  &(vtt_S3467C8[0]), // expected_vtt_contents
  ABISELECT(1392,916), // object size
  NSPAIRA(_ZTI7S3467C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3467C8),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3467C8),31, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C3  : virtual S3467C4 , virtual S3467C8 {
  ~S3467C3(); // tgen
  S3467C3(); // tgen
};
//SIG(-1 S3467C3) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC4 VBC7{ VBC5 BC8{ VBC3 FC2[9]} BC9{ VBC4 VBC3 BC5 vd} BC10{ BC9 vd}} VBC11{ VBC12{ VBC3 BC2 VBC7 vd} BC13{ BC14{ BC4 BC3} FD}} vd Fp}}


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

static void Test_S3467C3()
{
  extern Class_Descriptor cd_S3467C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(94,242)];
    init_test(&cd_S3467C3, buf);
    S3467C3 *dp, &lv = *(dp=new (buf) S3467C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1488,964), "sizeof(S3467C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3467C3)");
    /*is_ambiguous_... S3467C3::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C4*), ABISELECT(8,4), "S3467C3");
    /*is_ambiguous_... S3467C3::S3467C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C4*), ABISELECT(96,48), "S3467C3");
    /*is_ambiguous_... S3467C8::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C8*), ABISELECT(96,48), "S3467C3");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C9*), ABISELECT(96,48), "S3467C3");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(96,48), "S3467C3");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*)(S3467C14*), ABISELECT(96,48), "S3467C3");
    /*is_ambiguous_... S3467C3::S3467C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C4*), ABISELECT(8,4), "S3467C3");
    /*is_ambiguous_... S3467C3::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C4*), ABISELECT(8,4), "S3467C3");
    /*is_ambiguous_... S3467C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C9*), 0, "S3467C3");
    check_base_class_offset(lv, (S3467C5*)(S3467C10*)(S3467C9*), 0, "S3467C3");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C9*), 0, "S3467C3");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C12*)(S3467C9*), 0, "S3467C3");
    /*is_ambiguous_... S3467C14::S3467C5 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C14*), 0, "S3467C3");
    check_base_class_offset(lv, (S3467C10*)(S3467C9*), ABISELECT(152,96), "S3467C3");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C9*), ABISELECT(1312,856), "S3467C3");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C11*)(S3467C9*), ABISELECT(1312,856), "S3467C3");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1320,860), "S3467C3");
    check_base_class_offset(lv, (S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1320,860), "S3467C3");
    check_base_class_offset(lv, (S3467C12*)(S3467C9*), ABISELECT(1320,860), "S3467C3");
    check_base_class_offset(lv, (S3467C9*)(S3467C8*), ABISELECT(152,96), "S3467C3");
    check_base_class_offset(lv, (S3467C9*)(S3467C14*), ABISELECT(152,96), "S3467C3");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*)(S3467C14*), ABISELECT(1392,920), "S3467C3");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*)(S3467C14*), ABISELECT(1392,920), "S3467C3");
    check_base_class_offset(lv, (S3467C4*)(S3467C14*), ABISELECT(1392,920), "S3467C3");
    check_base_class_offset(lv, (S3467C14*)(S3467C13*), ABISELECT(1392,920), "S3467C3");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1336,868), "S3467C3");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1328,864), "S3467C3");
    check_base_class_offset(lv, (S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1328,864), "S3467C3");
    check_base_class_offset(lv, (S3467C15*)(S3467C13*), ABISELECT(1328,864), "S3467C3");
    check_base_class_offset(lv, (S3467C13*)(S3467C8*), ABISELECT(1328,864), "S3467C3");
    check_base_class_offset(lv, (S3467C8*), ABISELECT(136,88), "S3467C3");
    test_class_info(&lv, &cd_S3467C3);
    dp->~S3467C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C3(Test_S3467C3, "S3467C3", ABISELECT(1488,964));

#else // __cplusplus

extern void _ZN7S3467C3C1Ev();
extern void _ZN7S3467C3D1Ev();
Name_Map name_map_S3467C3[] = {
  NSPAIR(_ZN7S3467C3C1Ev),
  NSPAIR(_ZN7S3467C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C10;
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C12;
extern VTBL_ENTRY _ZTI8S3467C12[];
extern  VTBL_ENTRY _ZTV8S3467C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C12[];
extern Class_Descriptor cd_S3467C9;
extern VTBL_ENTRY _ZTI7S3467C9[];
extern  VTBL_ENTRY _ZTV7S3467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C9[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S3467C14;
extern VTBL_ENTRY _ZTI8S3467C14[];
extern  VTBL_ENTRY _ZTV8S3467C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C14[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
extern Class_Descriptor cd_S3467C15;
extern VTBL_ENTRY _ZTI8S3467C15[];
extern  VTBL_ENTRY _ZTV8S3467C15[];
extern Class_Descriptor cd_S3467C13;
extern VTBL_ENTRY _ZTI8S3467C13[];
extern  VTBL_ENTRY _ZTV8S3467C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C13[];
extern Class_Descriptor cd_S3467C8;
extern VTBL_ENTRY _ZTI7S3467C8[];
extern  VTBL_ENTRY _ZTV7S3467C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C8[];
static Base_Class bases_S3467C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3467C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C4,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C5,    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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3467C10,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1312,856), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1320,860), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3467C12,    ABISELECT(1320,860), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3467C9,    ABISELECT(152,96), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3467C5,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3467C4,    ABISELECT(1392,920), //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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3467C14,    ABISELECT(1392,920), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3467C5,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3467C16,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3467C15,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3467C13,    ABISELECT(1328,864), //bcp->offset
    58, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S3467C8,    ABISELECT(136,88), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3467C3[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C3D1Ev();
extern void _ZN7S3467C3D0Ev();
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S3467C3D1Ev,_ZThn88_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S3467C3D0Ev,_ZThn88_N7S3467C3D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S3467C3D1Ev,_ZThn96_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn152_N7S3467C3D0Ev,_ZThn96_N7S3467C3D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C3D1Ev,_ZTvn760_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C3D0Ev,_ZTvn760_n28_N7S3467C3D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C3D1Ev,_ZTvn764_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C3D0Ev,_ZTvn764_n28_N7S3467C3D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn1328_N7S3467C3D1Ev,_ZThn864_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn1328_N7S3467C3D0Ev,_ZThn864_N7S3467C3D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn1392_N7S3467C3D1Ev,_ZThn920_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn1392_N7S3467C3D0Ev,_ZThn920_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3467C3[] = {
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  0,
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C3D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev),
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C3D1Ev,_ZTvn760_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C3D0Ev,_ZTvn760_n28_N7S3467C3D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C3D1Ev,_ZTvn764_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C3D0Ev,_ZTvn764_n28_N7S3467C3D0Ev),
  ABISELECT(-1328,-864),
  0,
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev),
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S3467C3[];
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__7S3467C3[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C8D1Ev();
extern void _ZN7S3467C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C8__7S3467C3[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C8D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S3467C8D1Ev,_ZThn8_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S3467C8D0Ev,_ZThn8_N7S3467C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C8__7S3467C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__7S3467C8__7S3467C3[] = {
  0,
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C8D1Ev,_ZTvn760_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C8D0Ev,_ZTvn760_n28_N7S3467C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C8__7S3467C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C8D1Ev,_ZTvn760_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C8D0Ev,_ZTvn760_n28_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C8D1Ev,_ZTvn764_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C8D0Ev,_ZTvn764_n28_N7S3467C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C8__7S3467C3[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C8D1Ev,_ZTvn764_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C8D0Ev,_ZTvn764_n28_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn1192_N7S3467C8D1Ev,_ZThn776_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn1192_N7S3467C8D0Ev,_ZThn776_N7S3467C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C8__7S3467C3[] = {
  ABISELECT(-1192,-776),
  0,
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn1256_N7S3467C8D1Ev,_ZThn832_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn1256_N7S3467C8D0Ev,_ZThn832_N7S3467C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C8__7S3467C3[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C9D1Ev();
extern void _ZN7S3467C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C3[] = {
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C107S3467C9__7S3467C3[] = {
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C107S3467C9__7S3467C3[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C117S3467C9__7S3467C3[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C12D1Ev();
extern void _ZN8S3467C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C3[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C118S3467C127S3467C9__A1__7S3467C3[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__7S3467C3[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C127S3467C9__7S3467C3[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__7S3467C9__7S3467C3[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__7S3467C9__7S3467C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C12__7S3467C9__7S3467C3[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C13D1Ev();
extern void _ZN8S3467C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C3[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C13D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3467C13D1Ev,_ZThn56_N8S3467C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S3467C13D0Ev,_ZThn56_N8S3467C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C14__8S3467C13__7S3467C3[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C13__7S3467C3[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C13__7S3467C3[] = {
  ABISELECT(1176,768),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C13D1Ev,_ZTvn760_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C13D0Ev,_ZTvn760_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C13__7S3467C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C13D1Ev,_ZTvn760_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C13D0Ev,_ZTvn760_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C13D1Ev,_ZTvn764_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C13D0Ev,_ZTvn764_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C13__7S3467C3[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C13D1Ev,_ZTvn764_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C13D0Ev,_ZTvn764_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C14D1Ev();
extern void _ZN8S3467C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C3[] = {
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C14__A1__7S3467C3[] = {
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C14__7S3467C3[] = {
  0,
  ABISELECT(1392,920),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C14__7S3467C3[] = {
  ABISELECT(1240,824),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C14__7S3467C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C14__7S3467C3[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev),
};
static  VTT_ENTRY vtt_S3467C3[] = {
  {&(_ZTV7S3467C3[11]),  11,81},
  {&(_ZTV7S3467C3[18]),  18,81},
  {&(_ZTV7S3467C3[29]),  29,81},
  {&(_ZTV7S3467C3[39]),  39,81},
  {&(_ZTV7S3467C3[11]),  11,81},
  {&(_ZTV7S3467C3[47]),  47,81},
  {&(_ZTV7S3467C3[55]),  55,81},
  {&(_ZTV7S3467C3[67]),  67,81},
  {&(_ZTV7S3467C3[78]),  78,81},
  {&(_tg__ZTV7S3467C4__7S3467C3[3]),  3,4},
  {&(_tg__ZTV7S3467C8__7S3467C3[9]),  9,12},
  {&(_tg__ZTV7S3467C9__7S3467C8__7S3467C3[7]),  7,10},
  {&(_tg__ZTV7S3467C5__7S3467C8__7S3467C3[3]),  3,4},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C8__7S3467C3[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C8__7S3467C3[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C8__7S3467C3[9]),  9,12},
  {&(_tg__ZTV8S3467C14__7S3467C8__7S3467C3[8]),  8,11},
  {&(_tg__ZTV7S3467C9__7S3467C3[6]),  6,9},
  {&(_tg__ZTV8S3467C107S3467C9__7S3467C3[4]),  4,5},
  {&(_tg__ZTV7S3467C5__8S3467C107S3467C9__7S3467C3[3]),  3,4},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C3[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C117S3467C9__7S3467C3[3]),  3,4},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C3[5]),  5,8},
  {&(_tg__ZTV8S3467C118S3467C127S3467C9__A1__7S3467C3[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__7S3467C3[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C127S3467C9__7S3467C3[3]),  3,4},
  {&(_tg__ZTV7S3467C5__7S3467C9__7S3467C3[3]),  3,4},
  {&(_tg__ZTV8S3467C11__7S3467C9__7S3467C3[5]),  5,8},
  {&(_tg__ZTV8S3467C12__7S3467C9__7S3467C3[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C3[7]),  7,10},
  {&(_tg__ZTV8S3467C14__8S3467C13__7S3467C3[8]),  8,11},
  {&(_tg__ZTV7S3467C5__8S3467C13__7S3467C3[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C13__7S3467C3[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C13__7S3467C3[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C13__7S3467C3[5]),  5,8},
  {&(_tg__ZTV8S3467C14__7S3467C3[6]),  6,9},
  {&(_tg__ZTV7S3467C48S3467C14__A1__7S3467C3[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C14__7S3467C3[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C14__7S3467C3[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C14__7S3467C3[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C14__7S3467C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S3467C3[];
extern  VTBL_ENTRY _ZTV7S3467C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C3[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3467C13D0Ev,_ZThn56_N8S3467C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3467C13D1Ev,_ZThn56_N8S3467C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N7S3467C8D0Ev,_ZThn832_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N7S3467C8D1Ev,_ZThn832_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N7S3467C8D0Ev,_ZThn776_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N7S3467C8D1Ev,_ZThn776_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3467C8D0Ev,_ZThn8_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3467C8D1Ev,_ZThn8_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S3467C3D0Ev,_ZThn920_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S3467C3D1Ev,_ZThn920_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N7S3467C3D0Ev,_ZThn864_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N7S3467C3D1Ev,_ZThn864_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3467C3D0Ev,_ZThn96_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3467C3D1Ev,_ZThn96_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3467C3D0Ev,_ZThn88_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3467C3D1Ev,_ZThn88_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3467C3 = {  "S3467C3", // class name
  bases_S3467C3, 23,
  &(vtc_S3467C3[0]), // expected_vtbl_contents
  &(vtt_S3467C3[0]), // expected_vtt_contents
  ABISELECT(1488,964), // object size
  NSPAIRA(_ZTI7S3467C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3467C3),81, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3467C3),41, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C18  : virtual S10258C6_nt , virtual S3467C11 {
  virtual  ~S3467C18(); // _ZN8S3467C18D2Ev
  S3467C18(); // tgen
};
//SIG(-1 S3467C18) C1{ VBC2{ m FL[4]} VBC3{ VBC4{ m FL[5]} VBC5{ v1} BC6{ m} vd} vd}


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

static void Test_S3467C18()
{
  extern Class_Descriptor cd_S3467C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,20)];
    init_test(&cd_S3467C18, buf);
    S3467C18 *dp, &lv = *(dp=new (buf) S3467C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,76), "sizeof(S3467C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C18)");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(8,4), "S3467C18");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*), ABISELECT(40,36), "S3467C18");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*), 0, "S3467C18");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*), 0, "S3467C18");
    check_base_class_offset(lv, (S3467C11*), 0, "S3467C18");
    test_class_info(&lv, &cd_S3467C18);
    dp->~S3467C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C18(Test_S3467C18, "S3467C18", ABISELECT(80,76));

#else // __cplusplus

extern void _ZN8S3467C18C1Ev();
extern void _ZN8S3467C18D2Ev();
Name_Map name_map_S3467C18[] = {
  NSPAIR(_ZN8S3467C18C1Ev),
  NSPAIR(_ZN8S3467C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
static Base_Class bases_S3467C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3467C5,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3467C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C18[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C18D1Ev();
extern void _ZN8S3467C18D0Ev();
static  VTBL_ENTRY vtc_S3467C18[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C18[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C18D0Ev,
};
extern VTBL_ENTRY _ZTV8S3467C18[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C18[] = {
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
static  VTT_ENTRY vtt_S3467C18[] = {
  {&(_ZTV8S3467C18[8]),  8,11},
  {&(_ZTV8S3467C18[8]),  8,11},
  {&(_ZTV8S3467C18[8]),  8,11},
  {&(_tg__ZTV8S3467C11__8S3467C18[5]),  5,8},
  {&(_tg__ZTV8S3467C11__8S3467C18[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S3467C18[];
extern  VTBL_ENTRY _ZTV8S3467C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C18[];
Class_Descriptor cd_S3467C18 = {  "S3467C18", // class name
  bases_S3467C18, 5,
  &(vtc_S3467C18[0]), // expected_vtbl_contents
  &(vtt_S3467C18[0]), // expected_vtt_contents
  ABISELECT(80,76), // object size
  NSPAIRA(_ZTI8S3467C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3467C18),11, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C18),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C20  : S3467C16 , S3467C4 {
  ~S3467C20(); // tgen
  S3467C20(); // tgen
};
//SIG(-1 S3467C20) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} BC5{ BC4 VBC3 BC6{ m} Fp[10]}}


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

static void Test_S3467C20()
{
  extern Class_Descriptor cd_S3467C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S3467C20, buf);
    S3467C20 *dp, &lv = *(dp=new (buf) S3467C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S3467C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C20)");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*), ABISELECT(8,4), "S3467C20");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*), 0, "S3467C20");
    check_base_class_offset(lv, (S3467C16*), 0, "S3467C20");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*), ABISELECT(48,44), "S3467C20");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*), ABISELECT(136,88), "S3467C20");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*), ABISELECT(48,44), "S3467C20");
    check_base_class_offset(lv, (S3467C4*), ABISELECT(48,44), "S3467C20");
    test_class_info(&lv, &cd_S3467C20);
    dp->~S3467C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C20(Test_S3467C20, "S3467C20", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN8S3467C20C1Ev();
extern void _ZN8S3467C20D1Ev();
Name_Map name_map_S3467C20[] = {
  NSPAIR(_ZN8S3467C20C1Ev),
  NSPAIR(_ZN8S3467C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
static Base_Class bases_S3467C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3467C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3467C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S3467C5,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    6, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3467C4,    ABISELECT(48,44), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C20[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY vtc_S3467C20[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C20[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(88,44),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S3467C20[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S3467C20[];
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__8S3467C20[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
static  VTT_ENTRY vtt_S3467C20[] = {
  {&(_ZTV8S3467C20[3]),  3,8},
  {&(_tg__ZTV7S3467C4__8S3467C20[3]),  3,4},
  {&(_ZTV8S3467C20[7]),  7,8},
};
extern VTBL_ENTRY _ZTI8S3467C20[];
extern  VTBL_ENTRY _ZTV8S3467C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C20[];
Class_Descriptor cd_S3467C20 = {  "S3467C20", // class name
  bases_S3467C20, 7,
  &(vtc_S3467C20[0]), // expected_vtbl_contents
  &(vtt_S3467C20[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI8S3467C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3467C20),8, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C20),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  S3467C22  : S4227C23 {
};
//SIG(-1 S3467C22) C1{ BC2{ m}}



static void Test_S3467C22()
{
  extern Class_Descriptor cd_S3467C22;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S3467C22, buf);
    S3467C22 &lv = *(new (buf) S3467C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S3467C22)");
    check2(__alignof__(lv), 1, "__alignof__(S3467C22)");
    check_base_class_offset(lv, (S4227C23*), 0, "S3467C22");
    test_class_info(&lv, &cd_S3467C22);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C22(Test_S3467C22, "S3467C22", 1);

#else // __cplusplus

extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
static Base_Class bases_S3467C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C22[];
Class_Descriptor cd_S3467C22 = {  "S3467C22", // class name
  bases_S3467C22, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S3467C22),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  S3467C17  : virtual S3467C4 , virtual S3467C18 , virtual S3467C20 , S4227C27 , virtual S3467C22 {
  virtual  ~S3467C17(); // _ZN8S3467C17D2Ev
  S3467C17(); // tgen
};
//SIG(-1 S3467C17) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC7{ m FL[4]} VBC8{ VBC4 VBC3 BC5 vd} vd} VBC9{ BC10{ BC4 BC3} BC2} BC11{ m} VBC12{ BC13{ m}} vd}


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

static void Test_S3467C17()
{
  extern Class_Descriptor cd_S3467C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,53)];
    init_test(&cd_S3467C17, buf);
    S3467C17 *dp, &lv = *(dp=new (buf) S3467C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,208), "sizeof(S3467C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C17)");
    /*is_ambiguous_... S3467C17::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C4*), ABISELECT(8,4), "S3467C17");
    /*is_ambiguous_... S3467C17::S3467C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C4*), ABISELECT(96,48), "S3467C17");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*), ABISELECT(96,48), "S3467C17");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*)(S3467C20*), ABISELECT(96,48), "S3467C17");
    /*is_ambiguous_... S3467C17::S3467C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C4*), ABISELECT(8,4), "S3467C17");
    /*is_ambiguous_... S3467C17::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C4*), ABISELECT(8,4), "S3467C17");
    check_base_class_offset(lv, (S10258C6_nt*)(S3467C18*), ABISELECT(136,88), "S3467C17");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*), 0, "S3467C17");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*), 0, "S3467C17");
    check_base_class_offset(lv, (S3467C11*)(S3467C18*), 0, "S3467C17");
    check_base_class_offset(lv, (S3467C18*), 0, "S3467C17");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*)(S3467C20*), ABISELECT(176,124), "S3467C17");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*)(S3467C20*), ABISELECT(168,120), "S3467C17");
    check_base_class_offset(lv, (S3467C16*)(S3467C20*), ABISELECT(168,120), "S3467C17");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*)(S3467C20*), ABISELECT(216,164), "S3467C17");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*)(S3467C20*), ABISELECT(216,164), "S3467C17");
    check_base_class_offset(lv, (S3467C4*)(S3467C20*), ABISELECT(216,164), "S3467C17");
    check_base_class_offset(lv, (S3467C20*), ABISELECT(168,120), "S3467C17");
    check_base_class_offset(lv, (S4227C27*), 0, "S3467C17");
    check_base_class_offset(lv, (S4227C23*)(S3467C22*), 0, "S3467C17");
    check_base_class_offset(lv, (S3467C22*), 0, "S3467C17");
    test_class_info(&lv, &cd_S3467C17);
    dp->~S3467C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C17(Test_S3467C17, "S3467C17", ABISELECT(304,208));

#else // __cplusplus

extern void _ZN8S3467C17C1Ev();
extern void _ZN8S3467C17D2Ev();
Name_Map name_map_S3467C17[] = {
  NSPAIR(_ZN8S3467C17C1Ev),
  NSPAIR(_ZN8S3467C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C18;
extern VTBL_ENTRY _ZTI8S3467C18[];
extern  VTBL_ENTRY _ZTV8S3467C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C18[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S3467C20;
extern VTBL_ENTRY _ZTI8S3467C20[];
extern  VTBL_ENTRY _ZTV8S3467C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C20[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S3467C22;
extern VTBL_ENTRY _ZTI8S3467C22[];
static Base_Class bases_S3467C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3467C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C4,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_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
    8, //immediately_derived
  0, 1},
  {&cd_S3467C5,    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
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 1},
  {&cd_S3467C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(176,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
    11, //immediately_derived
  0, 0},
  {&cd_S3467C5,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3467C16,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3467C5,    ABISELECT(216,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
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S3467C4,    ABISELECT(216,164), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3467C20,    ABISELECT(168,120), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S3467C17[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C17D1Ev();
extern void _ZN8S3467C17D0Ev();
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY vtc_S3467C17[] = {
  0,
  ABISELECT(168,120),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(136,88),
  0,
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C17D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  0,
  -72,
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(-120,-116),
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S3467C17[];
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__8S3467C17[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C18D1Ev,_ZTv0_n24_N8S3467C18D1Ev)();
extern void _ZN8S3467C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C18D0Ev,_ZTv0_n24_N8S3467C18D0Ev)();
extern void _ZN8S3467C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C18__8S3467C17[] = {
  0,
  ABISELECT(136,88),
  0,
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C18[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C18D1Ev,_ZTv0_n24_N8S3467C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C18D0Ev,_ZTv0_n24_N8S3467C18D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C17[] = {
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C20__8S3467C17[] = {
  -72,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C20[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C20__A1__8S3467C17[] = {
  ABISELECT(-120,-116),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__8S3467C20__8S3467C17[] = {
  ABISELECT(-120,-116),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S3467C20[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
static  VTT_ENTRY vtt_S3467C17[] = {
  {&(_ZTV8S3467C17[12]),  12,29},
  {&(_ZTV8S3467C17[19]),  19,29},
  {&(_ZTV8S3467C17[12]),  12,29},
  {&(_ZTV8S3467C17[12]),  12,29},
  {&(_ZTV8S3467C17[12]),  12,29},
  {&(_ZTV8S3467C17[24]),  24,29},
  {&(_ZTV8S3467C17[28]),  28,29},
  {&(_tg__ZTV7S3467C4__8S3467C17[3]),  3,4},
  {&(_tg__ZTV8S3467C18__8S3467C17[8]),  8,11},
  {&(_tg__ZTV8S3467C18__8S3467C17[8]),  8,11},
  {&(_tg__ZTV8S3467C18__8S3467C17[8]),  8,11},
  {&(_tg__ZTV8S3467C11__8S3467C17[5]),  5,8},
  {&(_tg__ZTV8S3467C11__8S3467C17[5]),  5,8},
  {&(_tg__ZTV8S3467C20__8S3467C17[3]),  3,4},
  {&(_tg__ZTV7S3467C48S3467C20__A1__8S3467C17[3]),  3,4},
  {&(_tg__ZTV7S3467C4__8S3467C20__8S3467C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3467C17[];
extern  VTBL_ENTRY _ZTV8S3467C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C17[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C18D0Ev,_ZTv0_n24_N8S3467C18D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C18D1Ev,_ZTv0_n24_N8S3467C18D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C18D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3467C17 = {  "S3467C17", // class name
  bases_S3467C17, 19,
  &(vtc_S3467C17[0]), // expected_vtbl_contents
  &(vtt_S3467C17[0]), // expected_vtt_contents
  ABISELECT(304,208), // object size
  NSPAIRA(_ZTI8S3467C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3467C17),29, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C17),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C25  : virtual S4227C37 , virtual S3467C11 {
  virtual void  v3(); // _ZN8S3467C252v3Ev
  ~S3467C25(); // tgen
  S3467C25(); // tgen
};
//SIG(-1 S3467C25) C1{ VBC2{ m} VBC3{ VBC4{ m FL[5]} VBC5{ v2} BC2 vd} v1}


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

static void Test_S3467C25()
{
  extern Class_Descriptor cd_S3467C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S3467C25, buf);
    S3467C25 *dp, &lv = *(dp=new (buf) S3467C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S3467C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C25)");
    /*is_ambiguous_... S3467C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), ABISELECT(8,4), "S3467C25");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*), ABISELECT(8,4), "S3467C25");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*), 0, "S3467C25");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*), 0, "S3467C25");
    check_base_class_offset(lv, (S3467C11*), 0, "S3467C25");
    test_class_info(&lv, &cd_S3467C25);
    dp->~S3467C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C25(Test_S3467C25, "S3467C25", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S3467C25C1Ev();
extern void _ZN8S3467C25D1Ev();
Name_Map name_map_S3467C25[] = {
  NSPAIR(_ZN8S3467C25C1Ev),
  NSPAIR(_ZN8S3467C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
static Base_Class bases_S3467C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3467C5,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3467C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C25[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C25D1Ev();
extern void _ZN8S3467C25D0Ev();
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY vtc_S3467C25[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C25D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C25D0Ev,
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern VTBL_ENTRY _ZTV8S3467C25[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C25[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
static  VTT_ENTRY vtt_S3467C25[] = {
  {&(_ZTV8S3467C25[8]),  8,12},
  {&(_ZTV8S3467C25[8]),  8,12},
  {&(_ZTV8S3467C25[8]),  8,12},
  {&(_tg__ZTV8S3467C11__8S3467C25[5]),  5,8},
  {&(_tg__ZTV8S3467C11__8S3467C25[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S3467C25[];
extern  VTBL_ENTRY _ZTV8S3467C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C25[];
Class_Descriptor cd_S3467C25 = {  "S3467C25", // class name
  bases_S3467C25, 5,
  &(vtc_S3467C25[0]), // expected_vtbl_contents
  &(vtt_S3467C25[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S3467C25),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3467C25),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C25),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C24  : virtual S3467C5 , virtual S3467C11 , virtual S10258C6_nt , virtual S3467C25 , virtual S3467C10 {
  virtual  ~S3467C24(); // _ZN8S3467C24D2Ev
  S3467C24(); // tgen
};
//SIG(-1 S3467C24) C1{ VBC2{ v1} VBC3{ VBC4{ m FL[5]} VBC2 BC5{ m} vd} VBC6{ m FL[4]} VBC7{ VBC5 VBC3 v2} VBC8{ VBC2 FC9{ BC2 VBC4 BC5 Fp[10]}[9]} vd}


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

static void Test_S3467C24()
{
  extern Class_Descriptor cd_S3467C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(156,210)];
    init_test(&cd_S3467C24, buf);
    S3467C24 *dp, &lv = *(dp=new (buf) S3467C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1240,836), "sizeof(S3467C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C24)");
    check_base_class_offset(lv, (S3467C5*), 0, "S3467C24");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*), 0, "S3467C24");
    check_base_class_offset(lv, (S3467C5*)(S3467C10*), 0, "S3467C24");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*), ABISELECT(8,4), "S3467C24");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*), 0, "S3467C24");
    check_base_class_offset(lv, (S3467C11*), 0, "S3467C24");
    check_base_class_offset(lv, (S3467C11*)(S3467C25*), 0, "S3467C24");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(48,44), "S3467C24");
    /*is_ambiguous_... S3467C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C25*), ABISELECT(80,76), "S3467C24");
    check_base_class_offset(lv, (S3467C25*), 0, "S3467C24");
    check_base_class_offset(lv, (S3467C10*), ABISELECT(80,76), "S3467C24");
    test_class_info(&lv, &cd_S3467C24);
    dp->~S3467C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C24(Test_S3467C24, "S3467C24", ABISELECT(1240,836));

#else // __cplusplus

extern void _ZN8S3467C24C1Ev();
extern void _ZN8S3467C24D2Ev();
Name_Map name_map_S3467C24[] = {
  NSPAIR(_ZN8S3467C24C1Ev),
  NSPAIR(_ZN8S3467C24D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C25;
extern VTBL_ENTRY _ZTI8S3467C25[];
extern  VTBL_ENTRY _ZTV8S3467C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C25[];
extern Class_Descriptor cd_S3467C10;
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
static Base_Class bases_S3467C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3467C5,    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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(80,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3467C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3467C10,    ABISELECT(80,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C24[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C24D1Ev();
extern void _ZN8S3467C24D0Ev();
extern void _ZN8S3467C252v3Ev();
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY vtc_S3467C24[] = {
  ABISELECT(80,76),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C24[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C24D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C24D0Ev,
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  (VTBL_ENTRY)&(_ZTI8S3467C24[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S3467C24[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C24[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev)();
extern void _ZN8S3467C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev)();
extern void _ZN8S3467C25D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C25__8S3467C24[] = {
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C10__8S3467C24[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C10__8S3467C24[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
static  VTT_ENTRY vtt_S3467C24[] = {
  {&(_ZTV8S3467C24[12]),  12,21},
  {&(_ZTV8S3467C24[12]),  12,21},
  {&(_ZTV8S3467C24[12]),  12,21},
  {&(_ZTV8S3467C24[12]),  12,21},
  {&(_ZTV8S3467C24[20]),  20,21},
  {&(_tg__ZTV8S3467C11__8S3467C24[5]),  5,8},
  {&(_tg__ZTV8S3467C11__8S3467C24[5]),  5,8},
  {&(_tg__ZTV8S3467C25__8S3467C24[8]),  8,12},
  {&(_tg__ZTV8S3467C25__8S3467C24[8]),  8,12},
  {&(_tg__ZTV8S3467C25__8S3467C24[8]),  8,12},
  {&(_tg__ZTV8S3467C10__8S3467C24[4]),  4,5},
  {&(_tg__ZTV7S3467C5__8S3467C10__8S3467C24[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3467C24[];
extern  VTBL_ENTRY _ZTV8S3467C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C24[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C25D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3467C24 = {  "S3467C24", // class name
  bases_S3467C24, 8,
  &(vtc_S3467C24[0]), // expected_vtbl_contents
  &(vtt_S3467C24[0]), // expected_vtt_contents
  ABISELECT(1240,836), // object size
  NSPAIRA(_ZTI8S3467C24),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3467C24),21, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C24),12, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C2  : S3467C3 , S4227C37 , virtual S3467C17 , virtual S3467C24 {
  ~S3467C2(); // tgen
  S3467C2(); // tgen
};
//SIG(-1 S3467C2) C1{ BC2{ VBC3{ BC4{ v1} VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC5 VBC8{ VBC6 BC9{ VBC4 FC3[9]} BC10{ VBC5 VBC4 BC6 vd} BC11{ BC10 vd}} VBC12{ VBC13{ VBC4 BC3 VBC8 vd} BC14{ BC15{ BC5 BC4} FD}} vd Fp}} BC6 VBC16{ VBC3 VBC17{ VBC18{ m FL[4]} VBC10 vd} VBC19{ BC15 BC3} BC20{ m} VBC21{ BC22{ m}} vd} VBC23{ VBC4 VBC10 VBC18 VBC24{ VBC6 VBC10 v2} VBC9 vd}}


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

static void Test_S3467C2()
{
  extern Class_Descriptor cd_S3467C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(178,464)];
    init_test(&cd_S3467C2, buf);
    S3467C2 *dp, &lv = *(dp=new (buf) S3467C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2832,1852), "sizeof(S3467C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3467C2)");
    /*is_ambiguous_... S3467C2::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C4*), ABISELECT(8,4), "S3467C2");
    /*is_ambiguous_... S3467C2::S3467C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C4*), ABISELECT(96,48), "S3467C2");
    /*is_ambiguous_... S3467C8::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C8*), ABISELECT(96,48), "S3467C2");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C9*), ABISELECT(96,48), "S3467C2");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(96,48), "S3467C2");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*)(S3467C14*), ABISELECT(96,48), "S3467C2");
    /*is_ambiguous_... S3467C2::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*), ABISELECT(96,48), "S3467C2");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*)(S3467C20*), ABISELECT(96,48), "S3467C2");
    /*is_ambiguous_... S3467C2::S3467C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C4*), ABISELECT(8,4), "S3467C2");
    /*is_ambiguous_... S3467C3::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C4*)(S3467C3*), ABISELECT(8,4), "S3467C2");
    /*is_ambiguous_... S3467C17::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C4*)(S3467C17*), ABISELECT(8,4), "S3467C2");
    /*is_ambiguous_... S3467C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C9*), ABISELECT(1328,864), "S3467C2");
    /*is_ambiguous_... S3467C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C25*), ABISELECT(1328,864), "S3467C2");
    check_base_class_offset(lv, (S3467C5*)(S3467C10*)(S3467C9*), 0, "S3467C2");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C9*), 0, "S3467C2");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C12*)(S3467C9*), 0, "S3467C2");
    /*is_ambiguous_... S3467C14::S3467C5 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C14*), 0, "S3467C2");
    /*is_ambiguous_... S3467C2::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*), 0, "S3467C2");
    check_base_class_offset(lv, (S3467C5*)(S3467C24*), 0, "S3467C2");
    /*is_ambiguous_... S3467C2::S3467C10 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C10*), 0, "S3467C2");
    check_base_class_offset(lv, (S3467C10*)(S3467C9*), ABISELECT(152,96), "S3467C2");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C9*), ABISELECT(1312,856), "S3467C2");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C11*)(S3467C9*), ABISELECT(1312,856), "S3467C2");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1320,860), "S3467C2");
    check_base_class_offset(lv, (S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1320,860), "S3467C2");
    check_base_class_offset(lv, (S3467C12*)(S3467C9*), ABISELECT(1320,860), "S3467C2");
    check_base_class_offset(lv, (S3467C9*)(S3467C8*), ABISELECT(152,96), "S3467C2");
    check_base_class_offset(lv, (S3467C9*)(S3467C14*), ABISELECT(152,96), "S3467C2");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*)(S3467C14*), ABISELECT(1392,920), "S3467C2");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*)(S3467C14*), ABISELECT(1392,920), "S3467C2");
    check_base_class_offset(lv, (S3467C4*)(S3467C14*), ABISELECT(1392,920), "S3467C2");
    check_base_class_offset(lv, (S3467C14*)(S3467C13*), ABISELECT(1392,920), "S3467C2");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1336,868), "S3467C2");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1328,864), "S3467C2");
    check_base_class_offset(lv, (S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1328,864), "S3467C2");
    check_base_class_offset(lv, (S3467C15*)(S3467C13*), ABISELECT(1328,864), "S3467C2");
    check_base_class_offset(lv, (S3467C13*)(S3467C8*), ABISELECT(1328,864), "S3467C2");
    check_base_class_offset(lv, (S3467C8*)(S3467C3*), ABISELECT(136,88), "S3467C2");
    check_base_class_offset(lv, (S3467C3*), 0, "S3467C2");
    /*is_ambiguous_... S3467C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S3467C2");
    check_base_class_offset(lv, (S10258C6_nt*)(S3467C18*), ABISELECT(1488,968), "S3467C2");
    check_base_class_offset(lv, (S10258C6_nt*)(S3467C24*), ABISELECT(1488,968), "S3467C2");
    /*is_ambiguous_... S3467C2::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*), ABISELECT(1480,964), "S3467C2");
    check_base_class_offset(lv, (S3467C11*)(S3467C18*), ABISELECT(1480,964), "S3467C2");
    check_base_class_offset(lv, (S3467C11*)(S3467C24*), ABISELECT(1480,964), "S3467C2");
    check_base_class_offset(lv, (S3467C11*)(S3467C25*), ABISELECT(1480,964), "S3467C2");
    check_base_class_offset(lv, (S3467C18*)(S3467C17*), ABISELECT(1480,964), "S3467C2");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*)(S3467C20*), ABISELECT(1528,1004), "S3467C2");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*)(S3467C20*), ABISELECT(1520,1000), "S3467C2");
    check_base_class_offset(lv, (S3467C16*)(S3467C20*), ABISELECT(1520,1000), "S3467C2");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*)(S3467C20*), ABISELECT(1568,1044), "S3467C2");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*)(S3467C20*), ABISELECT(1568,1044), "S3467C2");
    check_base_class_offset(lv, (S3467C4*)(S3467C20*), ABISELECT(1568,1044), "S3467C2");
    check_base_class_offset(lv, (S3467C20*)(S3467C17*), ABISELECT(1520,1000), "S3467C2");
    check_base_class_offset(lv, (S4227C27*)(S3467C17*), ABISELECT(1480,964), "S3467C2");
    check_base_class_offset(lv, (S4227C23*)(S3467C22*), 0, "S3467C2");
    check_base_class_offset(lv, (S3467C22*)(S3467C17*), 0, "S3467C2");
    check_base_class_offset(lv, (S3467C17*), ABISELECT(1480,964), "S3467C2");
    check_base_class_offset(lv, (S3467C25*)(S3467C24*), ABISELECT(1656,1088), "S3467C2");
    check_base_class_offset(lv, (S3467C10*)(S3467C24*), ABISELECT(1664,1092), "S3467C2");
    check_base_class_offset(lv, (S3467C24*), ABISELECT(1656,1088), "S3467C2");
    test_class_info(&lv, &cd_S3467C2);
    dp->~S3467C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C2(Test_S3467C2, "S3467C2", ABISELECT(2832,1852));

#else // __cplusplus

extern void _ZN7S3467C2C1Ev();
extern void _ZN7S3467C2D1Ev();
Name_Map name_map_S3467C2[] = {
  NSPAIR(_ZN7S3467C2C1Ev),
  NSPAIR(_ZN7S3467C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C10;
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C12;
extern VTBL_ENTRY _ZTI8S3467C12[];
extern  VTBL_ENTRY _ZTV8S3467C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C12[];
extern Class_Descriptor cd_S3467C9;
extern VTBL_ENTRY _ZTI7S3467C9[];
extern  VTBL_ENTRY _ZTV7S3467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C9[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S3467C14;
extern VTBL_ENTRY _ZTI8S3467C14[];
extern  VTBL_ENTRY _ZTV8S3467C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C14[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
extern Class_Descriptor cd_S3467C15;
extern VTBL_ENTRY _ZTI8S3467C15[];
extern  VTBL_ENTRY _ZTV8S3467C15[];
extern Class_Descriptor cd_S3467C13;
extern VTBL_ENTRY _ZTI8S3467C13[];
extern  VTBL_ENTRY _ZTV8S3467C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C13[];
extern Class_Descriptor cd_S3467C8;
extern VTBL_ENTRY _ZTI7S3467C8[];
extern  VTBL_ENTRY _ZTV7S3467C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C8[];
extern Class_Descriptor cd_S3467C3;
extern VTBL_ENTRY _ZTI7S3467C3[];
extern  VTBL_ENTRY _ZTV7S3467C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C3[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C18;
extern VTBL_ENTRY _ZTI8S3467C18[];
extern  VTBL_ENTRY _ZTV8S3467C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C18[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S3467C20;
extern VTBL_ENTRY _ZTI8S3467C20[];
extern  VTBL_ENTRY _ZTV8S3467C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C20[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S3467C22;
extern VTBL_ENTRY _ZTI8S3467C22[];
extern Class_Descriptor cd_S3467C17;
extern VTBL_ENTRY _ZTI8S3467C17[];
extern  VTBL_ENTRY _ZTV8S3467C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C17[];
extern Class_Descriptor cd_S3467C25;
extern VTBL_ENTRY _ZTI8S3467C25[];
extern  VTBL_ENTRY _ZTV8S3467C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C25[];
extern Class_Descriptor cd_S3467C10;
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
extern Class_Descriptor cd_S3467C24;
extern VTBL_ENTRY _ZTI8S3467C24[];
extern  VTBL_ENTRY _ZTV8S3467C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C24[];
static Base_Class bases_S3467C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3467C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C4,    ABISELECT(8,4), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S3467C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3467C10,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1312,856), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1320,860), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3467C12,    ABISELECT(1320,860), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3467C9,    ABISELECT(152,96), //bcp->offset
    41, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3467C5,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3467C4,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3467C14,    ABISELECT(1392,920), //bcp->offset
    79, //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
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3467C5,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S3467C16,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3467C15,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S3467C13,    ABISELECT(1328,864), //bcp->offset
    67, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S3467C8,    ABISELECT(136,88), //bcp->offset
    28, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S3467C3,    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
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10258C6_nt,    ABISELECT(1488,968), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1480,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3467C11,    ABISELECT(1480,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S3467C18,    ABISELECT(1480,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1528,1004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C5,    ABISELECT(1520,1000), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3467C16,    ABISELECT(1520,1000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3467C5,    ABISELECT(1568,1044), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1568,1044), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S3467C4,    ABISELECT(1568,1044), //bcp->offset
    110, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3467C20,    ABISELECT(1520,1000), //bcp->offset
    105, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S4227C27,    ABISELECT(1480,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C17,    ABISELECT(1480,964), //bcp->offset
    90, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3467C25,    ABISELECT(1656,1088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3467C10,    ABISELECT(1664,1092), //bcp->offset
    130, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3467C24,    ABISELECT(1656,1088), //bcp->offset
    114, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3467C2[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C2D1Ev();
extern void _ZN7S3467C2D0Ev();
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n80_N7S3467C2D1Ev,_ZTv0_n40_N7S3467C2D1Ev)();
extern void ABISELECT(_ZThn136_N7S3467C2D1Ev,_ZThn88_N7S3467C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3467C2D0Ev,_ZTv0_n40_N7S3467C2D0Ev)();
extern void ABISELECT(_ZThn136_N7S3467C2D0Ev,_ZThn88_N7S3467C2D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C2D1Ev,_ZTv0_n28_N7S3467C2D1Ev)();
extern void ABISELECT(_ZThn152_N7S3467C2D1Ev,_ZThn96_N7S3467C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3467C2D0Ev,_ZTv0_n28_N7S3467C2D0Ev)();
extern void ABISELECT(_ZThn152_N7S3467C2D0Ev,_ZThn96_N7S3467C2D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C2D1Ev,_ZTvn760_n28_N7S3467C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C2D0Ev,_ZTvn760_n28_N7S3467C2D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C2D1Ev,_ZTvn764_n28_N7S3467C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C2D0Ev,_ZTvn764_n28_N7S3467C2D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C2D1Ev,_ZTv0_n36_N7S3467C2D1Ev)();
extern void ABISELECT(_ZThn1328_N7S3467C2D1Ev,_ZThn864_N7S3467C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C2D0Ev,_ZTv0_n36_N7S3467C2D0Ev)();
extern void ABISELECT(_ZThn1328_N7S3467C2D0Ev,_ZThn864_N7S3467C2D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C2D1Ev,_ZTv0_n32_N7S3467C2D1Ev)();
extern void ABISELECT(_ZThn1392_N7S3467C2D1Ev,_ZThn920_N7S3467C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3467C2D0Ev,_ZTv0_n32_N7S3467C2D0Ev)();
extern void ABISELECT(_ZThn1392_N7S3467C2D0Ev,_ZThn920_N7S3467C2D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3467C2D1Ev,_ZTv0_n24_N7S3467C2D1Ev)();
extern void ABISELECT(_ZThn1480_N7S3467C2D1Ev,_ZThn964_N7S3467C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3467C2D0Ev,_ZTv0_n24_N7S3467C2D0Ev)();
extern void ABISELECT(_ZThn1480_N7S3467C2D0Ev,_ZThn964_N7S3467C2D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3467C2D1Ev,_ZTv0_n24_N7S3467C2D1Ev)();
extern void ABISELECT(_ZThn1656_N7S3467C2D1Ev,_ZThn1088_N7S3467C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3467C2D0Ev,_ZTv0_n24_N7S3467C2D0Ev)();
extern void ABISELECT(_ZThn1656_N7S3467C2D0Ev,_ZThn1088_N7S3467C2D0Ev)() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY vtc_S3467C2[] = {
  ABISELECT(1664,1092),
  ABISELECT(1656,1088),
  ABISELECT(1656,1088),
  0,
  ABISELECT(1520,1000),
  ABISELECT(1480,964),
  ABISELECT(1488,968),
  ABISELECT(1480,964),
  ABISELECT(1480,964),
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  ABISELECT(1328,864),
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C2D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C2D1Ev,_ZTv0_n40_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C2D0Ev,_ZTv0_n40_N7S3467C2D0Ev),
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C2D1Ev,_ZTv0_n28_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C2D0Ev,_ZTv0_n28_N7S3467C2D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C2D1Ev,_ZTvn760_n28_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C2D0Ev,_ZTvn760_n28_N7S3467C2D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C2D1Ev,_ZTvn764_n28_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C2D0Ev,_ZTvn764_n28_N7S3467C2D0Ev),
  ABISELECT(-1328,-864),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C2D1Ev,_ZTv0_n36_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C2D0Ev,_ZTv0_n36_N7S3467C2D0Ev),
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C2D1Ev,_ZTv0_n32_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C2D0Ev,_ZTv0_n32_N7S3467C2D0Ev),
  ABISELECT(-1480,-964),
  ABISELECT(40,36),
  0,
  ABISELECT(-1472,-960),
  0,
  ABISELECT(8,4),
  ABISELECT(-1480,-964),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(-1480,-964),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C2D1Ev,_ZTv0_n24_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C2D0Ev,_ZTv0_n24_N7S3467C2D0Ev),
  0,
  ABISELECT(-1424,-952),
  ABISELECT(-1520,-1000),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(-1472,-996),
  ABISELECT(-1568,-1044),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  ABISELECT(-1656,-1088),
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  ABISELECT(-1656,-1088),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C2D1Ev,_ZTv0_n24_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C2D0Ev,_ZTv0_n24_N7S3467C2D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern VTBL_ENTRY _ZTV7S3467C2[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C3D1Ev();
extern void _ZN7S3467C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C3__7S3467C2[] = {
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  ABISELECT(1328,864),
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C3D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__7S3467C3__7S3467C2[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn136_N7S3467C3D1Ev,_ZThn88_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn136_N7S3467C3D0Ev,_ZThn88_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C8__7S3467C3__7S3467C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S3467C3D1Ev,_ZThn96_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn152_N7S3467C3D0Ev,_ZThn96_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C3__7S3467C2[] = {
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C3D1Ev,_ZTvn760_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C3D0Ev,_ZTvn760_n28_N7S3467C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C3__7S3467C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C3D1Ev,_ZTvn760_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C3D0Ev,_ZTvn760_n28_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C3D1Ev,_ZTvn764_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C3D0Ev,_ZTvn764_n28_N7S3467C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C3__7S3467C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C3D1Ev,_ZTvn764_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C3D0Ev,_ZTvn764_n28_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn1328_N7S3467C3D1Ev,_ZThn864_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn1328_N7S3467C3D0Ev,_ZThn864_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C3__7S3467C2[] = {
  ABISELECT(-1328,-864),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn1392_N7S3467C3D1Ev,_ZThn920_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn1392_N7S3467C3D0Ev,_ZThn920_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C3__7S3467C2[] = {
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__7S3467C2[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C8D1Ev();
extern void _ZN7S3467C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C8__7S3467C2[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C8D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S3467C8D1Ev,_ZThn8_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S3467C8D0Ev,_ZThn8_N7S3467C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C8__7S3467C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__7S3467C8__7S3467C2[] = {
  0,
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C8D1Ev,_ZTvn760_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C8D0Ev,_ZTvn760_n28_N7S3467C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C8__7S3467C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C8D1Ev,_ZTvn760_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C8D0Ev,_ZTvn760_n28_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C8D1Ev,_ZTvn764_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C8D0Ev,_ZTvn764_n28_N7S3467C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C8__7S3467C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C8D1Ev,_ZTvn764_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C8D0Ev,_ZTvn764_n28_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn1192_N7S3467C8D1Ev,_ZThn776_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn1192_N7S3467C8D0Ev,_ZThn776_N7S3467C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C8__7S3467C2[] = {
  ABISELECT(-1192,-776),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn1256_N7S3467C8D1Ev,_ZThn832_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn1256_N7S3467C8D0Ev,_ZThn832_N7S3467C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C8__7S3467C2[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C9D1Ev();
extern void _ZN7S3467C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C2[] = {
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C107S3467C9__7S3467C2[] = {
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C107S3467C9__7S3467C2[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C117S3467C9__7S3467C2[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C12D1Ev();
extern void _ZN8S3467C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C118S3467C127S3467C9__A1__7S3467C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__7S3467C2[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C127S3467C9__7S3467C2[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__7S3467C9__7S3467C2[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__7S3467C9__7S3467C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C12__7S3467C9__7S3467C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C13D1Ev();
extern void _ZN8S3467C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C2[] = {
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C13D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3467C13D1Ev,_ZThn56_N8S3467C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S3467C13D0Ev,_ZThn56_N8S3467C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C14__8S3467C13__7S3467C2[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C13__7S3467C2[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C13__7S3467C2[] = {
  ABISELECT(1176,768),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C13D1Ev,_ZTvn760_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C13D0Ev,_ZTvn760_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C13__7S3467C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C13D1Ev,_ZTvn760_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C13D0Ev,_ZTvn760_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C13D1Ev,_ZTvn764_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C13D0Ev,_ZTvn764_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C13__7S3467C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C13D1Ev,_ZTvn764_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C13D0Ev,_ZTvn764_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C14D1Ev();
extern void _ZN8S3467C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C2[] = {
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C14__A1__7S3467C2[] = {
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C14__7S3467C2[] = {
  0,
  ABISELECT(1392,920),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C14__7S3467C2[] = {
  ABISELECT(1240,824),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C14__7S3467C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C14__7S3467C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C17D1Ev,_ZTv0_n24_N8S3467C17D1Ev)();
extern void _ZN8S3467C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C17D0Ev,_ZTv0_n24_N8S3467C17D0Ev)();
extern void _ZN8S3467C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C17__7S3467C2[] = {
  ABISELECT(-1480,-964),
  ABISELECT(40,36),
  0,
  ABISELECT(-1472,-960),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C17D1Ev,_ZTv0_n24_N8S3467C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C17D0Ev,_ZTv0_n24_N8S3467C17D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__8S3467C17__7S3467C2[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(1472,960),
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__A1__8S3467C17__7S3467C2[] = {
  0,
  ABISELECT(1480,964),
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C20__8S3467C17__7S3467C2[] = {
  0,
  ABISELECT(-1424,-952),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C20__A1__8S3467C17__7S3467C2[] = {
  ABISELECT(-1472,-996),
  ABISELECT(-88,-80),
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C18D1Ev,_ZTv0_n24_N8S3467C18D1Ev)();
extern void _ZN8S3467C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C18D0Ev,_ZTv0_n24_N8S3467C18D0Ev)();
extern void _ZN8S3467C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C18__7S3467C2[] = {
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C18[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C18D1Ev,_ZTv0_n24_N8S3467C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C18D0Ev,_ZTv0_n24_N8S3467C18D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C18__7S3467C2[] = {
  0,
  ABISELECT(1480,964),
  (VTBL_ENTRY)&(_ZTI8S3467C18[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C11__A2__7S3467C2[] = {
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C11__A2__7S3467C2[] = {
  0,
  ABISELECT(1480,964),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C20__7S3467C2[] = {
  ABISELECT(-1424,-952),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C20[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C20__A2__7S3467C2[] = {
  ABISELECT(-1472,-996),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__8S3467C20__7S3467C2[] = {
  ABISELECT(-1472,-996),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S3467C20[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C24D1Ev,_ZTv0_n24_N8S3467C24D1Ev)();
extern void _ZN8S3467C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C24D0Ev,_ZTv0_n24_N8S3467C24D0Ev)();
extern void _ZN8S3467C24D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C24__7S3467C2[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  0,
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C24[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C24D1Ev,_ZTv0_n24_N8S3467C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C24D0Ev,_ZTv0_n24_N8S3467C24D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C24__7S3467C2[] = {
  0,
  ABISELECT(1656,1088),
  (VTBL_ENTRY)&(_ZTI8S3467C24[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C24D1Ev,_ZTv0_n24_N8S3467C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3467C24D0Ev,_ZTv0_n24_N8S3467C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C24__7S3467C2[] = {
  ABISELECT(176,124),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(176,124),
  (VTBL_ENTRY)&(_ZTI8S3467C24[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C24D1Ev,_ZTv0_n24_N8S3467C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C24D0Ev,_ZTv0_n24_N8S3467C24D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C10__8S3467C24__7S3467C2[] = {
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3467C24[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev)();
extern void _ZN8S3467C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev)();
extern void _ZN8S3467C25D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C25__7S3467C2[] = {
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  0,
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C25__7S3467C2[] = {
  ABISELECT(176,124),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(176,124),
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C25__7S3467C2[] = {
  0,
  ABISELECT(1656,1088),
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C10__A1__7S3467C2[] = {
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C10__A1__7S3467C2[] = {
  0,
  ABISELECT(1664,1092),
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
static  VTT_ENTRY vtt_S3467C2[] = {
  {&(_ZTV7S3467C2[20]),  20,135},
  {&(_tg__ZTV7S3467C3__7S3467C2[11]),  11,14},
  {&(_tg__ZTV7S3467C4__7S3467C3__7S3467C2[4]),  4,5},
  {&(_tg__ZTV7S3467C8__7S3467C3__7S3467C2[10]),  10,13},
  {&(_tg__ZTV7S3467C9__7S3467C3__7S3467C2[7]),  7,10},
  {&(_tg__ZTV7S3467C3__7S3467C2[11]),  11,14},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C3__7S3467C2[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C3__7S3467C2[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C3__7S3467C2[9]),  9,12},
  {&(_tg__ZTV8S3467C14__7S3467C3__7S3467C2[8]),  8,11},
  {&(_ZTV7S3467C2[27]),  27,135},
  {&(_ZTV7S3467C2[38]),  38,135},
  {&(_ZTV7S3467C2[48]),  48,135},
  {&(_ZTV7S3467C2[20]),  20,135},
  {&(_ZTV7S3467C2[56]),  56,135},
  {&(_ZTV7S3467C2[64]),  64,135},
  {&(_ZTV7S3467C2[76]),  76,135},
  {&(_ZTV7S3467C2[87]),  87,135},
  {&(_ZTV7S3467C2[102]),  102,135},
  {&(_ZTV7S3467C2[102]),  102,135},
  {&(_ZTV7S3467C2[102]),  102,135},
  {&(_ZTV7S3467C2[109]),  109,135},
  {&(_ZTV7S3467C2[113]),  113,135},
  {&(_ZTV7S3467C2[126]),  126,135},
  {&(_ZTV7S3467C2[126]),  126,135},
  {&(_ZTV7S3467C2[134]),  134,135},
  {&(_tg__ZTV7S3467C4__7S3467C2[3]),  3,4},
  {&(_tg__ZTV7S3467C8__7S3467C2[9]),  9,12},
  {&(_tg__ZTV7S3467C9__7S3467C8__7S3467C2[7]),  7,10},
  {&(_tg__ZTV7S3467C5__7S3467C8__7S3467C2[3]),  3,4},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C8__7S3467C2[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C8__7S3467C2[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C8__7S3467C2[9]),  9,12},
  {&(_tg__ZTV8S3467C14__7S3467C8__7S3467C2[8]),  8,11},
  {&(_tg__ZTV7S3467C9__7S3467C2[6]),  6,9},
  {&(_tg__ZTV8S3467C107S3467C9__7S3467C2[4]),  4,5},
  {&(_tg__ZTV7S3467C5__8S3467C107S3467C9__7S3467C2[3]),  3,4},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C2[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C117S3467C9__7S3467C2[3]),  3,4},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C2[5]),  5,8},
  {&(_tg__ZTV8S3467C118S3467C127S3467C9__A1__7S3467C2[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__7S3467C2[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C127S3467C9__7S3467C2[3]),  3,4},
  {&(_tg__ZTV7S3467C5__7S3467C9__7S3467C2[3]),  3,4},
  {&(_tg__ZTV8S3467C11__7S3467C9__7S3467C2[5]),  5,8},
  {&(_tg__ZTV8S3467C12__7S3467C9__7S3467C2[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C2[7]),  7,10},
  {&(_tg__ZTV8S3467C14__8S3467C13__7S3467C2[8]),  8,11},
  {&(_tg__ZTV7S3467C5__8S3467C13__7S3467C2[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C13__7S3467C2[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C13__7S3467C2[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C13__7S3467C2[5]),  5,8},
  {&(_tg__ZTV8S3467C14__7S3467C2[6]),  6,9},
  {&(_tg__ZTV7S3467C48S3467C14__A1__7S3467C2[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C14__7S3467C2[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C14__7S3467C2[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C14__7S3467C2[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C14__7S3467C2[5]),  5,8},
  {&(_tg__ZTV8S3467C17__7S3467C2[12]),  12,15},
  {&(_tg__ZTV7S3467C4__8S3467C17__7S3467C2[4]),  4,5},
  {&(_tg__ZTV8S3467C17__7S3467C2[12]),  12,15},
  {&(_tg__ZTV8S3467C17__7S3467C2[12]),  12,15},
  {&(_tg__ZTV7S3467C5__A1__8S3467C17__7S3467C2[3]),  3,4},
  {&(_tg__ZTV8S3467C20__8S3467C17__7S3467C2[4]),  4,5},
  {&(_tg__ZTV7S3467C48S3467C20__A1__8S3467C17__7S3467C2[3]),  3,4},
  {&(_tg__ZTV8S3467C18__7S3467C2[8]),  8,11},
  {&(_tg__ZTV8S3467C18__7S3467C2[8]),  8,11},
  {&(_tg__ZTV7S3467C5__8S3467C18__7S3467C2[3]),  3,4},
  {&(_tg__ZTV8S3467C11__A2__7S3467C2[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C11__A2__7S3467C2[3]),  3,4},
  {&(_tg__ZTV8S3467C20__7S3467C2[3]),  3,4},
  {&(_tg__ZTV7S3467C48S3467C20__A2__7S3467C2[3]),  3,4},
  {&(_tg__ZTV7S3467C4__8S3467C20__7S3467C2[3]),  3,4},
  {&(_tg__ZTV8S3467C24__7S3467C2[12]),  12,16},
  {&(_tg__ZTV7S3467C5__8S3467C24__7S3467C2[3]),  3,4},
  {&(_tg__ZTV8S3467C11__8S3467C24__7S3467C2[6]),  6,9},
  {&(_tg__ZTV8S3467C24__7S3467C2[12]),  12,16},
  {&(_tg__ZTV8S3467C10__8S3467C24__7S3467C2[4]),  4,5},
  {&(_tg__ZTV8S3467C25__7S3467C2[8]),  8,12},
  {&(_tg__ZTV8S3467C11__8S3467C25__7S3467C2[6]),  6,9},
  {&(_tg__ZTV7S3467C5__8S3467C25__7S3467C2[3]),  3,4},
  {&(_tg__ZTV8S3467C10__A1__7S3467C2[4]),  4,5},
  {&(_tg__ZTV7S3467C5__8S3467C10__A1__7S3467C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S3467C2[];
extern  VTBL_ENTRY _ZTV7S3467C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C2[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C25D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C24D0Ev,_ZTv0_n24_N8S3467C24D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C24D1Ev,_ZTv0_n24_N8S3467C24D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C18D0Ev,_ZTv0_n24_N8S3467C18D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C18D1Ev,_ZTv0_n24_N8S3467C18D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C17D0Ev,_ZTv0_n24_N8S3467C17D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C17D1Ev,_ZTv0_n24_N8S3467C17D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3467C13D0Ev,_ZThn56_N8S3467C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3467C13D1Ev,_ZThn56_N8S3467C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N7S3467C8D0Ev,_ZThn832_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N7S3467C8D1Ev,_ZThn832_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N7S3467C8D0Ev,_ZThn776_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N7S3467C8D1Ev,_ZThn776_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3467C8D0Ev,_ZThn8_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3467C8D1Ev,_ZThn8_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S3467C3D0Ev,_ZThn920_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S3467C3D1Ev,_ZThn920_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N7S3467C3D0Ev,_ZThn864_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N7S3467C3D1Ev,_ZThn864_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3467C3D0Ev,_ZThn96_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3467C3D1Ev,_ZThn96_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3467C3D0Ev,_ZThn88_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3467C3D1Ev,_ZThn88_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3467C2D0Ev,_ZTv0_n24_N7S3467C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N7S3467C2D0Ev,_ZThn1088_N7S3467C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1480_N7S3467C2D0Ev,_ZThn964_N7S3467C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3467C2D1Ev,_ZTv0_n24_N7S3467C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N7S3467C2D1Ev,_ZThn1088_N7S3467C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1480_N7S3467C2D1Ev,_ZThn964_N7S3467C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C2D0Ev,_ZTv0_n32_N7S3467C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S3467C2D0Ev,_ZThn920_N7S3467C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C2D1Ev,_ZTv0_n32_N7S3467C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S3467C2D1Ev,_ZThn920_N7S3467C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C2D0Ev,_ZTv0_n36_N7S3467C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N7S3467C2D0Ev,_ZThn864_N7S3467C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C2D1Ev,_ZTv0_n36_N7S3467C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N7S3467C2D1Ev,_ZThn864_N7S3467C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C2D0Ev,_ZTv0_n28_N7S3467C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3467C2D0Ev,_ZThn96_N7S3467C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C2D1Ev,_ZTv0_n28_N7S3467C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3467C2D1Ev,_ZThn96_N7S3467C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C2D0Ev,_ZTv0_n40_N7S3467C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3467C2D0Ev,_ZThn88_N7S3467C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C2D1Ev,_ZTv0_n40_N7S3467C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S3467C2D1Ev,_ZThn88_N7S3467C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3467C2 = {  "S3467C2", // class name
  bases_S3467C2, 43,
  &(vtc_S3467C2[0]), // expected_vtbl_contents
  &(vtt_S3467C2[0]), // expected_vtt_contents
  ABISELECT(2832,1852), // object size
  NSPAIRA(_ZTI7S3467C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3467C2),135, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3467C2),83, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C27  : virtual S3467C14 {
  int s3467c27f0;
  ~S3467C27(); // tgen
  S3467C27(); // tgen
};
//SIG(-1 S3467C27) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} Fi}


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

static void Test_S3467C27()
{
  extern Class_Descriptor cd_S3467C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(166,216)];
    init_test(&cd_S3467C27, buf);
    S3467C27 *dp, &lv = *(dp=new (buf) S3467C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1320,860), "sizeof(S3467C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C27)");
    /*is_ambiguous_... S3467C14::S3467C5 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C14*), 0, "S3467C27");
    check_base_class_offset(lv, (S3467C5*)(S3467C10*)(S3467C9*), 0, "S3467C27");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C9*), 0, "S3467C27");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C12*)(S3467C9*), 0, "S3467C27");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*)(S3467C14*), ABISELECT(16,8), "S3467C27");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*)(S3467C14*), ABISELECT(104,52), "S3467C27");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C9*), ABISELECT(104,52), "S3467C27");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(104,52), "S3467C27");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*)(S3467C14*), ABISELECT(16,8), "S3467C27");
    check_base_class_offset(lv, (S3467C4*)(S3467C14*), ABISELECT(16,8), "S3467C27");
    /*is_ambiguous_... S3467C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C9*), 0, "S3467C27");
    check_base_class_offset(lv, (S3467C10*)(S3467C9*), ABISELECT(144,92), "S3467C27");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C9*), ABISELECT(1304,852), "S3467C27");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C11*)(S3467C9*), ABISELECT(1304,852), "S3467C27");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1312,856), "S3467C27");
    check_base_class_offset(lv, (S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1312,856), "S3467C27");
    check_base_class_offset(lv, (S3467C12*)(S3467C9*), ABISELECT(1312,856), "S3467C27");
    check_base_class_offset(lv, (S3467C9*)(S3467C14*), ABISELECT(144,92), "S3467C27");
    check_base_class_offset(lv, (S3467C14*), ABISELECT(16,8), "S3467C27");
    check_field_offset(lv, s3467c27f0, ABISELECT(8,4), "S3467C27.s3467c27f0");
    test_class_info(&lv, &cd_S3467C27);
    dp->~S3467C27();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C27(Test_S3467C27, "S3467C27", ABISELECT(1320,860));

#else // __cplusplus

extern void _ZN8S3467C27C1Ev();
extern void _ZN8S3467C27D1Ev();
Name_Map name_map_S3467C27[] = {
  NSPAIR(_ZN8S3467C27C1Ev),
  NSPAIR(_ZN8S3467C27D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C10;
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C12;
extern VTBL_ENTRY _ZTI8S3467C12[];
extern  VTBL_ENTRY _ZTV8S3467C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C12[];
extern Class_Descriptor cd_S3467C9;
extern VTBL_ENTRY _ZTI7S3467C9[];
extern  VTBL_ENTRY _ZTV7S3467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C9[];
extern Class_Descriptor cd_S3467C14;
extern VTBL_ENTRY _ZTI8S3467C14[];
extern  VTBL_ENTRY _ZTV8S3467C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C14[];
static Base_Class bases_S3467C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3467C5,    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
    6, //immediately_derived
  0, 1},
  {&cd_S3467C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3467C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C10,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1304,852), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1312,856), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3467C12,    ABISELECT(1312,856), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3467C9,    ABISELECT(144,92), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3467C14,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C27[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C27D1Ev();
extern void _ZN8S3467C27D0Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S3467C27D1Ev,_ZTv0_n32_N8S3467C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S3467C27D1Ev,_ZThn8_N8S3467C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3467C27D0Ev,_ZTv0_n32_N8S3467C27D0Ev)();
extern void ABISELECT(_ZThn16_N8S3467C27D0Ev,_ZThn8_N8S3467C27D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C27D1Ev,_ZTv0_n28_N8S3467C27D1Ev)();
extern void ABISELECT(_ZThn144_N8S3467C27D1Ev,_ZThn92_N8S3467C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3467C27D0Ev,_ZTv0_n28_N8S3467C27D0Ev)();
extern void ABISELECT(_ZThn144_N8S3467C27D0Ev,_ZThn92_N8S3467C27D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C27D1Ev,_ZTvn760_n28_N8S3467C27D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C27D0Ev,_ZTvn760_n28_N8S3467C27D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C27D1Ev,_ZTvn764_n28_N8S3467C27D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C27D0Ev,_ZTvn764_n28_N8S3467C27D0Ev)();
static  VTBL_ENTRY vtc_S3467C27[] = {
  0,
  ABISELECT(144,92),
  ABISELECT(104,52),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C27D0Ev,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C27D1Ev,_ZTv0_n32_N8S3467C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C27D0Ev,_ZTv0_n32_N8S3467C27D0Ev),
  ABISELECT(-144,-92),
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C27D1Ev,_ZTv0_n28_N8S3467C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C27D0Ev,_ZTv0_n28_N8S3467C27D0Ev),
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1304,-852),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C27D1Ev,_ZTvn760_n28_N8S3467C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C27D0Ev,_ZTvn760_n28_N8S3467C27D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C27D1Ev,_ZTvn764_n28_N8S3467C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C27D0Ev,_ZTvn764_n28_N8S3467C27D0Ev),
};
extern VTBL_ENTRY _ZTV8S3467C27[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C14D1Ev();
extern void _ZN8S3467C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C14__8S3467C27[] = {
  ABISELECT(-16,-8),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C14__8S3467C27[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C14__8S3467C27[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S3467C14D1Ev,_ZThn84_N8S3467C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S3467C14D0Ev,_ZThn84_N8S3467C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C14__8S3467C27[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C14__8S3467C27[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C14__8S3467C27[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C9D1Ev();
extern void _ZN7S3467C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C27[] = {
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C107S3467C9__8S3467C27[] = {
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C107S3467C9__8S3467C27[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C27[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C117S3467C9__8S3467C27[] = {
  0,
  ABISELECT(1304,852),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C12D1Ev();
extern void _ZN8S3467C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C27[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C118S3467C127S3467C9__A1__8S3467C27[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__8S3467C27[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C127S3467C9__8S3467C27[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__7S3467C9__8S3467C27[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__7S3467C9__8S3467C27[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C12__7S3467C9__8S3467C27[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev),
};
static  VTT_ENTRY vtt_S3467C27[] = {
  {&(_ZTV8S3467C27[8]),  8,48},
  {&(_ZTV8S3467C27[19]),  19,48},
  {&(_ZTV8S3467C27[8]),  8,48},
  {&(_ZTV8S3467C27[29]),  29,48},
  {&(_ZTV8S3467C27[37]),  37,48},
  {&(_ZTV8S3467C27[45]),  45,48},
  {&(_tg__ZTV8S3467C14__8S3467C27[6]),  6,9},
  {&(_tg__ZTV7S3467C48S3467C14__8S3467C27[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C14__8S3467C27[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C14__8S3467C27[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C14__8S3467C27[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C14__8S3467C27[5]),  5,8},
  {&(_tg__ZTV7S3467C9__8S3467C27[6]),  6,9},
  {&(_tg__ZTV8S3467C107S3467C9__8S3467C27[4]),  4,5},
  {&(_tg__ZTV7S3467C5__8S3467C107S3467C9__8S3467C27[3]),  3,4},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C27[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C117S3467C9__8S3467C27[3]),  3,4},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C27[5]),  5,8},
  {&(_tg__ZTV8S3467C118S3467C127S3467C9__A1__8S3467C27[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__8S3467C27[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C127S3467C9__8S3467C27[3]),  3,4},
  {&(_tg__ZTV7S3467C5__7S3467C9__8S3467C27[3]),  3,4},
  {&(_tg__ZTV8S3467C11__7S3467C9__8S3467C27[5]),  5,8},
  {&(_tg__ZTV8S3467C12__7S3467C9__8S3467C27[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S3467C27[];
extern  VTBL_ENTRY _ZTV8S3467C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C27[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3467C14D0Ev,_ZThn84_N8S3467C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3467C14D1Ev,_ZThn84_N8S3467C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C27D0Ev,_ZTv0_n28_N8S3467C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3467C27D0Ev,_ZThn92_N8S3467C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C27D1Ev,_ZTv0_n28_N8S3467C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3467C27D1Ev,_ZThn92_N8S3467C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C27D0Ev,_ZTv0_n32_N8S3467C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3467C27D0Ev,_ZThn8_N8S3467C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C27D1Ev,_ZTv0_n32_N8S3467C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3467C27D1Ev,_ZThn8_N8S3467C27D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3467C27 = {  "S3467C27", // class name
  bases_S3467C27, 14,
  &(vtc_S3467C27[0]), // expected_vtbl_contents
  &(vtt_S3467C27[0]), // expected_vtt_contents
  ABISELECT(1320,860), // object size
  NSPAIRA(_ZTI8S3467C27),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S3467C27),48, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C27),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C26  : virtual S3467C27 , S3467C3 {
  virtual  ~S3467C26(); // _ZN8S3467C26D2Ev
  S3467C26(); // tgen
};
//SIG(-1 S3467C26) C1{ VBC2{ VBC3{ VBC4{ v1} BC5{ BC4 VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC7 BC9{ VBC4 FC5[9]} BC10{ VBC6 VBC4 BC7 vd} BC11{ BC10 vd}} vd} Fi} BC12{ VBC5 VBC13{ VBC6 VBC8 VBC14{ VBC3 BC15{ BC16{ BC6 BC4} FD}} vd Fp}} vd}


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

static void Test_S3467C26()
{
  extern Class_Descriptor cd_S3467C26;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,244)];
    init_test(&cd_S3467C26, buf);
    S3467C26 *dp, &lv = *(dp=new (buf) S3467C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,972), "sizeof(S3467C26)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3467C26)");
    /*is_ambiguous_... S3467C14::S3467C5 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C14*), ABISELECT(8,4), "S3467C26");
    check_base_class_offset(lv, (S3467C5*)(S3467C10*)(S3467C9*), ABISELECT(8,4), "S3467C26");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C9*), ABISELECT(8,4), "S3467C26");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(8,4), "S3467C26");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*)(S3467C14*), ABISELECT(24,12), "S3467C26");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*)(S3467C14*), ABISELECT(112,56), "S3467C26");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C9*), ABISELECT(112,56), "S3467C26");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(112,56), "S3467C26");
    /*is_ambiguous_... S3467C26::S3467C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C4*), ABISELECT(112,56), "S3467C26");
    /*is_ambiguous_... S3467C8::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C8*), ABISELECT(112,56), "S3467C26");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*)(S3467C14*), ABISELECT(24,12), "S3467C26");
    check_base_class_offset(lv, (S3467C4*)(S3467C14*), ABISELECT(24,12), "S3467C26");
    /*is_ambiguous_... S3467C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C9*), 0, "S3467C26");
    check_base_class_offset(lv, (S3467C10*)(S3467C9*), ABISELECT(152,96), "S3467C26");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C9*), ABISELECT(1312,856), "S3467C26");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C11*)(S3467C9*), ABISELECT(1312,856), "S3467C26");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1320,860), "S3467C26");
    check_base_class_offset(lv, (S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1320,860), "S3467C26");
    check_base_class_offset(lv, (S3467C12*)(S3467C9*), ABISELECT(1320,860), "S3467C26");
    check_base_class_offset(lv, (S3467C9*)(S3467C14*), ABISELECT(152,96), "S3467C26");
    check_base_class_offset(lv, (S3467C9*)(S3467C8*), ABISELECT(152,96), "S3467C26");
    check_base_class_offset(lv, (S3467C14*)(S3467C27*), ABISELECT(24,12), "S3467C26");
    check_base_class_offset(lv, (S3467C14*)(S3467C13*), ABISELECT(24,12), "S3467C26");
    check_base_class_offset(lv, (S3467C27*), ABISELECT(8,4), "S3467C26");
    /*is_ambiguous_... S3467C26::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C4*), ABISELECT(1328,864), "S3467C26");
    /*is_ambiguous_... S3467C26::S3467C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C4*), ABISELECT(1328,864), "S3467C26");
    /*is_ambiguous_... S3467C3::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C4*)(S3467C3*), ABISELECT(1328,864), "S3467C26");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1448,920), "S3467C26");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1440,916), "S3467C26");
    check_base_class_offset(lv, (S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1440,916), "S3467C26");
    check_base_class_offset(lv, (S3467C15*)(S3467C13*), ABISELECT(1440,916), "S3467C26");
    check_base_class_offset(lv, (S3467C13*)(S3467C8*), ABISELECT(1440,916), "S3467C26");
    check_base_class_offset(lv, (S3467C8*)(S3467C3*), ABISELECT(1416,908), "S3467C26");
    check_base_class_offset(lv, (S3467C3*), 0, "S3467C26");
    test_class_info(&lv, &cd_S3467C26);
    dp->~S3467C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C26(Test_S3467C26, "S3467C26", ABISELECT(1504,972));

#else // __cplusplus

extern void _ZN8S3467C26C1Ev();
extern void _ZN8S3467C26D2Ev();
Name_Map name_map_S3467C26[] = {
  NSPAIR(_ZN8S3467C26C1Ev),
  NSPAIR(_ZN8S3467C26D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C10;
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C12;
extern VTBL_ENTRY _ZTI8S3467C12[];
extern  VTBL_ENTRY _ZTV8S3467C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C12[];
extern Class_Descriptor cd_S3467C9;
extern VTBL_ENTRY _ZTI7S3467C9[];
extern  VTBL_ENTRY _ZTV7S3467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C9[];
extern Class_Descriptor cd_S3467C14;
extern VTBL_ENTRY _ZTI8S3467C14[];
extern  VTBL_ENTRY _ZTV8S3467C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C14[];
extern Class_Descriptor cd_S3467C27;
extern VTBL_ENTRY _ZTI8S3467C27[];
extern  VTBL_ENTRY _ZTV8S3467C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C27[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
extern Class_Descriptor cd_S3467C15;
extern VTBL_ENTRY _ZTI8S3467C15[];
extern  VTBL_ENTRY _ZTV8S3467C15[];
extern Class_Descriptor cd_S3467C13;
extern VTBL_ENTRY _ZTI8S3467C13[];
extern  VTBL_ENTRY _ZTV8S3467C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C13[];
extern Class_Descriptor cd_S3467C8;
extern VTBL_ENTRY _ZTI7S3467C8[];
extern  VTBL_ENTRY _ZTV7S3467C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C8[];
extern Class_Descriptor cd_S3467C3;
extern VTBL_ENTRY _ZTI7S3467C3[];
extern  VTBL_ENTRY _ZTV7S3467C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C3[];
static Base_Class bases_S3467C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3467C5,    ABISELECT(8,4), //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
    6, //immediately_derived
  0, 1},
  {&cd_S3467C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S3467C4,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C10,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1312,856), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1320,860), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3467C12,    ABISELECT(1320,860), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3467C9,    ABISELECT(152,96), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S3467C14,    ABISELECT(24,12), //bcp->offset
    27, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3467C27,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3467C5,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3467C4,    ABISELECT(1328,864), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1448,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3467C5,    ABISELECT(1440,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3467C16,    ABISELECT(1440,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3467C15,    ABISELECT(1440,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3467C13,    ABISELECT(1440,916), //bcp->offset
    82, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S3467C8,    ABISELECT(1416,908), //bcp->offset
    69, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S3467C3,    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 _ZTI8S3467C26[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C26D1Ev();
extern void _ZN8S3467C26D0Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S3467C26D1Ev,_ZTv0_n36_N8S3467C26D1Ev)();
extern void ABISELECT(_ZThn8_N8S3467C26D1Ev,_ZThn4_N8S3467C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S3467C26D0Ev,_ZTv0_n36_N8S3467C26D0Ev)();
extern void ABISELECT(_ZThn8_N8S3467C26D0Ev,_ZThn4_N8S3467C26D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S3467C26D1Ev,_ZTv0_n32_N8S3467C26D1Ev)();
extern void ABISELECT(_ZThn24_N8S3467C26D1Ev,_ZThn12_N8S3467C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3467C26D0Ev,_ZTv0_n32_N8S3467C26D0Ev)();
extern void ABISELECT(_ZThn24_N8S3467C26D0Ev,_ZThn12_N8S3467C26D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C26D1Ev,_ZTv0_n28_N8S3467C26D1Ev)();
extern void ABISELECT(_ZThn152_N8S3467C26D1Ev,_ZThn96_N8S3467C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3467C26D0Ev,_ZTv0_n28_N8S3467C26D0Ev)();
extern void ABISELECT(_ZThn152_N8S3467C26D0Ev,_ZThn96_N8S3467C26D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C26D1Ev,_ZTvn760_n28_N8S3467C26D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C26D0Ev,_ZTvn760_n28_N8S3467C26D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C26D1Ev,_ZTvn764_n28_N8S3467C26D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C26D0Ev,_ZTvn764_n28_N8S3467C26D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n80_N8S3467C26D1Ev,_ZTv0_n40_N8S3467C26D1Ev)();
extern void ABISELECT(_ZThn1416_N8S3467C26D1Ev,_ZThn908_N8S3467C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S3467C26D0Ev,_ZTv0_n40_N8S3467C26D0Ev)();
extern void ABISELECT(_ZThn1416_N8S3467C26D0Ev,_ZThn908_N8S3467C26D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S3467C26D1Ev,_ZTv0_n36_N8S3467C26D1Ev)();
extern void ABISELECT(_ZThn1440_N8S3467C26D1Ev,_ZThn916_N8S3467C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S3467C26D0Ev,_ZTv0_n36_N8S3467C26D0Ev)();
extern void ABISELECT(_ZThn1440_N8S3467C26D0Ev,_ZThn916_N8S3467C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3467C26[] = {
  ABISELECT(8,4),
  ABISELECT(24,12),
  ABISELECT(1440,916),
  ABISELECT(8,4),
  0,
  ABISELECT(152,96),
  ABISELECT(1416,908),
  ABISELECT(112,56),
  ABISELECT(1328,864),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C26D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C26D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(144,92),
  ABISELECT(104,52),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3467C26D1Ev,_ZTv0_n36_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3467C26D0Ev,_ZTv0_n36_N8S3467C26D0Ev),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-24,-12),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C26D1Ev,_ZTv0_n32_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C26D0Ev,_ZTv0_n32_N8S3467C26D0Ev),
  ABISELECT(-152,-96),
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C26D1Ev,_ZTv0_n28_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C26D0Ev,_ZTv0_n28_N8S3467C26D0Ev),
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C26D1Ev,_ZTvn760_n28_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C26D0Ev,_ZTvn760_n28_N8S3467C26D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C26D1Ev,_ZTvn764_n28_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C26D0Ev,_ZTvn764_n28_N8S3467C26D0Ev),
  0,
  ABISELECT(-1216,-808),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(-1416,-908),
  ABISELECT(-1392,-896),
  ABISELECT(24,8),
  ABISELECT(-1408,-904),
  ABISELECT(-1416,-908),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1408,-904),
  ABISELECT(-1416,-908),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3467C26D1Ev,_ZTv0_n40_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3467C26D0Ev,_ZTv0_n40_N8S3467C26D0Ev),
  ABISELECT(-1440,-916),
  0,
  ABISELECT(-1440,-916),
  ABISELECT(-1288,-820),
  ABISELECT(-1328,-860),
  ABISELECT(-1432,-912),
  ABISELECT(-1416,-904),
  ABISELECT(-1440,-916),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3467C26D1Ev,_ZTv0_n36_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3467C26D0Ev,_ZTv0_n36_N8S3467C26D0Ev),
};
extern VTBL_ENTRY _ZTV8S3467C26[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C3D1Ev();
extern void _ZN7S3467C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C3__8S3467C26[] = {
  ABISELECT(24,12),
  ABISELECT(1440,916),
  ABISELECT(8,4),
  0,
  ABISELECT(152,96),
  ABISELECT(1416,908),
  ABISELECT(112,56),
  ABISELECT(1328,864),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C3D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__7S3467C3__8S3467C26[] = {
  0,
  ABISELECT(-1216,-808),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn1416_N7S3467C3D1Ev,_ZThn908_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn1416_N7S3467C3D0Ev,_ZThn908_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C8__7S3467C3__8S3467C26[] = {
  ABISELECT(-1416,-908),
  ABISELECT(-1392,-896),
  ABISELECT(24,8),
  ABISELECT(-1408,-904),
  ABISELECT(-1416,-908),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1408,-904),
  ABISELECT(-1416,-908),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn152_N7S3467C3D1Ev,_ZThn96_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn152_N7S3467C3D0Ev,_ZThn96_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C3__8S3467C26[] = {
  ABISELECT(-152,-96),
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__A1__7S3467C3__8S3467C26[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C3D1Ev,_ZTvn760_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C3D0Ev,_ZTvn760_n28_N7S3467C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C3__8S3467C26[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C3D1Ev,_ZTvn760_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C3D0Ev,_ZTvn760_n28_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C3D1Ev,_ZTvn764_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C3D0Ev,_ZTvn764_n28_N7S3467C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C3__8S3467C26[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C3D1Ev,_ZTvn764_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C3D0Ev,_ZTvn764_n28_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn1440_N7S3467C3D1Ev,_ZThn916_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn1440_N7S3467C3D0Ev,_ZThn916_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C3__8S3467C26[] = {
  ABISELECT(-1440,-916),
  0,
  ABISELECT(-1440,-916),
  ABISELECT(-1288,-820),
  ABISELECT(-1328,-860),
  ABISELECT(-1432,-912),
  ABISELECT(-1416,-904),
  ABISELECT(-1440,-916),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S3467C3D1Ev,_ZThn12_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S3467C3D0Ev,_ZThn12_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C3__8S3467C26[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-24,-12),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C27D1Ev();
extern void _ZN8S3467C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C27__8S3467C26[] = {
  ABISELECT(-8,-4),
  ABISELECT(144,92),
  ABISELECT(104,52),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C27D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S3467C27D1Ev,_ZTv0_n32_N8S3467C27D1Ev)();
extern void ABISELECT(_ZThn16_N8S3467C27D1Ev,_ZThn8_N8S3467C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3467C27D0Ev,_ZTv0_n32_N8S3467C27D0Ev)();
extern void ABISELECT(_ZThn16_N8S3467C27D0Ev,_ZThn8_N8S3467C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C14__8S3467C27__8S3467C26[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-24,-12),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C27D1Ev,_ZTv0_n32_N8S3467C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C27D0Ev,_ZTv0_n32_N8S3467C27D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C27D1Ev,_ZTv0_n28_N8S3467C27D1Ev)();
extern void ABISELECT(_ZThn144_N8S3467C27D1Ev,_ZThn92_N8S3467C27D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3467C27D0Ev,_ZTv0_n28_N8S3467C27D0Ev)();
extern void ABISELECT(_ZThn144_N8S3467C27D0Ev,_ZThn92_N8S3467C27D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C27__8S3467C26[] = {
  ABISELECT(-144,-92),
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C27D1Ev,_ZTv0_n28_N8S3467C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C27D0Ev,_ZTv0_n28_N8S3467C27D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C27D1Ev,_ZTvn760_n28_N8S3467C27D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C27D0Ev,_ZTvn760_n28_N8S3467C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C27__8S3467C26[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1304,-852),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C27D1Ev,_ZTvn760_n28_N8S3467C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C27D0Ev,_ZTvn760_n28_N8S3467C27D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C27D1Ev,_ZTvn764_n28_N8S3467C27D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C27D0Ev,_ZTvn764_n28_N8S3467C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C27__8S3467C26[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C27D1Ev,_ZTvn764_n28_N8S3467C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C27D0Ev,_ZTvn764_n28_N8S3467C27D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C14D1Ev();
extern void _ZN8S3467C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C14__8S3467C26[] = {
  ABISELECT(-24,-12),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C14__8S3467C26[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C14__8S3467C26[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZThn128_N8S3467C14D1Ev,_ZThn84_N8S3467C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev)();
extern void ABISELECT(_ZThn128_N8S3467C14D0Ev,_ZThn84_N8S3467C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C14__8S3467C26[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C14__8S3467C26[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C14__8S3467C26[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C9D1Ev();
extern void _ZN7S3467C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C26[] = {
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C107S3467C9__8S3467C26[] = {
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C107S3467C9__8S3467C26[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C26[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C117S3467C9__8S3467C26[] = {
  0,
  ABISELECT(1304,852),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C12D1Ev();
extern void _ZN8S3467C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C26[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C118S3467C127S3467C9__A1__8S3467C26[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__8S3467C26[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C127S3467C9__8S3467C26[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__7S3467C9__8S3467C26[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__7S3467C9__8S3467C26[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C12__7S3467C9__8S3467C26[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__A1__8S3467C26[] = {
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C8D1Ev();
extern void _ZN7S3467C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C8__8S3467C26[] = {
  ABISELECT(-1392,-896),
  ABISELECT(24,8),
  ABISELECT(-1408,-904),
  ABISELECT(-1416,-908),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1408,-904),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C8D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C8__8S3467C26[] = {
  ABISELECT(1264,812),
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(1264,812),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__7S3467C8__8S3467C26[] = {
  0,
  ABISELECT(1408,904),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C8D1Ev,_ZTvn760_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C8D0Ev,_ZTvn760_n28_N7S3467C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C8__8S3467C26[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C8D1Ev,_ZTvn760_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C8D0Ev,_ZTvn760_n28_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C8D1Ev,_ZTvn764_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C8D0Ev,_ZTvn764_n28_N7S3467C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C8__8S3467C26[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C8D1Ev,_ZTvn764_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C8D0Ev,_ZTvn764_n28_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn24_N7S3467C8D1Ev,_ZThn8_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn24_N7S3467C8D0Ev,_ZThn8_N7S3467C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C8__8S3467C26[] = {
  ABISELECT(-24,-8),
  0,
  ABISELECT(-1440,-916),
  ABISELECT(-1288,-820),
  ABISELECT(-1328,-860),
  ABISELECT(-1432,-912),
  ABISELECT(-1416,-904),
  ABISELECT(-24,-8),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C8__8S3467C26[] = {
  ABISELECT(1392,896),
  0,
  ABISELECT(-24,-12),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(1392,896),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C13D1Ev();
extern void _ZN8S3467C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C13__8S3467C26[] = {
  ABISELECT(-1440,-916),
  ABISELECT(-1288,-820),
  ABISELECT(-1328,-860),
  ABISELECT(-1432,-912),
  ABISELECT(-1416,-904),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C13D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C14__8S3467C13__8S3467C26[] = {
  ABISELECT(1416,904),
  0,
  ABISELECT(-24,-12),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(1416,904),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C13__8S3467C26[] = {
  0,
  ABISELECT(1432,912),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C13__8S3467C26[] = {
  ABISELECT(1288,820),
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(1288,820),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C13D1Ev,_ZTvn760_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C13D0Ev,_ZTvn760_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C13__8S3467C26[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(128,60),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C13D1Ev,_ZTvn760_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C13D0Ev,_ZTvn760_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C13D1Ev,_ZTvn764_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C13D0Ev,_ZTvn764_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C13__8S3467C26[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(120,56),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C13D1Ev,_ZTvn764_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C13D0Ev,_ZTvn764_n28_N8S3467C13D0Ev),
};
static  VTT_ENTRY vtt_S3467C26[] = {
  {&(_ZTV8S3467C26[12]),  12,94},
  {&(_tg__ZTV7S3467C3__8S3467C26[11]),  11,14},
  {&(_tg__ZTV7S3467C4__7S3467C3__8S3467C26[4]),  4,5},
  {&(_tg__ZTV7S3467C8__7S3467C3__8S3467C26[10]),  10,13},
  {&(_tg__ZTV7S3467C9__7S3467C3__8S3467C26[7]),  7,10},
  {&(_tg__ZTV7S3467C5__A1__7S3467C3__8S3467C26[3]),  3,4},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C3__8S3467C26[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C3__8S3467C26[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C3__8S3467C26[9]),  9,12},
  {&(_tg__ZTV8S3467C14__7S3467C3__8S3467C26[8]),  8,11},
  {&(_ZTV8S3467C26[24]),  24,94},
  {&(_ZTV8S3467C26[35]),  35,94},
  {&(_ZTV8S3467C26[24]),  24,94},
  {&(_ZTV8S3467C26[45]),  45,94},
  {&(_ZTV8S3467C26[53]),  53,94},
  {&(_ZTV8S3467C26[61]),  61,94},
  {&(_ZTV8S3467C26[68]),  68,94},
  {&(_ZTV8S3467C26[79]),  79,94},
  {&(_ZTV8S3467C26[91]),  91,94},
  {&(_tg__ZTV8S3467C27__8S3467C26[8]),  8,11},
  {&(_tg__ZTV8S3467C14__8S3467C27__8S3467C26[8]),  8,11},
  {&(_tg__ZTV8S3467C27__8S3467C26[8]),  8,11},
  {&(_tg__ZTV7S3467C9__8S3467C27__8S3467C26[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C27__8S3467C26[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C27__8S3467C26[5]),  5,8},
  {&(_tg__ZTV8S3467C14__8S3467C26[6]),  6,9},
  {&(_tg__ZTV7S3467C48S3467C14__8S3467C26[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C14__8S3467C26[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C14__8S3467C26[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C14__8S3467C26[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C14__8S3467C26[5]),  5,8},
  {&(_tg__ZTV7S3467C9__8S3467C26[6]),  6,9},
  {&(_tg__ZTV8S3467C107S3467C9__8S3467C26[4]),  4,5},
  {&(_tg__ZTV7S3467C5__8S3467C107S3467C9__8S3467C26[3]),  3,4},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C26[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C117S3467C9__8S3467C26[3]),  3,4},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C26[5]),  5,8},
  {&(_tg__ZTV8S3467C118S3467C127S3467C9__A1__8S3467C26[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__8S3467C26[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C127S3467C9__8S3467C26[3]),  3,4},
  {&(_tg__ZTV7S3467C5__7S3467C9__8S3467C26[3]),  3,4},
  {&(_tg__ZTV8S3467C11__7S3467C9__8S3467C26[5]),  5,8},
  {&(_tg__ZTV8S3467C12__7S3467C9__8S3467C26[5]),  5,8},
  {&(_tg__ZTV7S3467C4__A1__8S3467C26[3]),  3,4},
  {&(_tg__ZTV7S3467C8__8S3467C26[9]),  9,12},
  {&(_tg__ZTV7S3467C9__7S3467C8__8S3467C26[7]),  7,10},
  {&(_tg__ZTV7S3467C5__7S3467C8__8S3467C26[3]),  3,4},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C8__8S3467C26[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C8__8S3467C26[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C8__8S3467C26[9]),  9,12},
  {&(_tg__ZTV8S3467C14__7S3467C8__8S3467C26[8]),  8,11},
  {&(_tg__ZTV8S3467C13__8S3467C26[7]),  7,10},
  {&(_tg__ZTV8S3467C14__8S3467C13__8S3467C26[8]),  8,11},
  {&(_tg__ZTV7S3467C5__8S3467C13__8S3467C26[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C13__8S3467C26[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C13__8S3467C26[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C13__8S3467C26[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S3467C26[];
extern  VTBL_ENTRY _ZTV8S3467C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C26[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S3467C8D0Ev,_ZThn8_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S3467C8D1Ev,_ZThn8_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3467C14D0Ev,_ZThn84_N8S3467C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3467C14D1Ev,_ZThn84_N8S3467C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C27D0Ev,_ZTv0_n28_N8S3467C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3467C27D0Ev,_ZThn92_N8S3467C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C27D1Ev,_ZTv0_n28_N8S3467C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S3467C27D1Ev,_ZThn92_N8S3467C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C27D0Ev,_ZTv0_n32_N8S3467C27D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3467C27D0Ev,_ZThn8_N8S3467C27D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C27D1Ev,_ZTv0_n32_N8S3467C27D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3467C27D1Ev,_ZThn8_N8S3467C27D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S3467C3D0Ev,_ZThn12_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S3467C3D1Ev,_ZThn12_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N7S3467C3D0Ev,_ZThn916_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N7S3467C3D1Ev,_ZThn916_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3467C3D0Ev,_ZThn96_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N7S3467C3D1Ev,_ZThn96_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N7S3467C3D0Ev,_ZThn908_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N7S3467C3D1Ev,_ZThn908_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3467C26D0Ev,_ZTv0_n40_N8S3467C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N8S3467C26D0Ev,_ZThn908_N8S3467C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S3467C26D1Ev,_ZTv0_n40_N8S3467C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N8S3467C26D1Ev,_ZThn908_N8S3467C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C26D0Ev,_ZTv0_n28_N8S3467C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S3467C26D0Ev,_ZThn96_N8S3467C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S3467C26D1Ev,_ZTv0_n28_N8S3467C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S3467C26D1Ev,_ZThn96_N8S3467C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C26D0Ev,_ZTv0_n32_N8S3467C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3467C26D0Ev,_ZThn12_N8S3467C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C26D1Ev,_ZTv0_n32_N8S3467C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S3467C26D1Ev,_ZThn12_N8S3467C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S3467C26D0Ev,_ZTv0_n36_N8S3467C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N8S3467C26D0Ev,_ZThn916_N8S3467C26D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3467C26D0Ev,_ZThn4_N8S3467C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S3467C26D1Ev,_ZTv0_n36_N8S3467C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N8S3467C26D1Ev,_ZThn916_N8S3467C26D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3467C26D1Ev,_ZThn4_N8S3467C26D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3467C26 = {  "S3467C26", // class name
  bases_S3467C26, 25,
  &(vtc_S3467C26[0]), // expected_vtbl_contents
  &(vtt_S3467C26[0]), // expected_vtt_contents
  ABISELECT(1504,972), // object size
  NSPAIRA(_ZTI8S3467C26),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3467C26),94, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C26),57, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C29  : S3467C25 {
  virtual  ~S3467C29(); // _ZN8S3467C29D2Ev
  S3467C29(); // tgen
};
//SIG(-1 S3467C29) C1{ BC2{ VBC3{ m} VBC4{ VBC5{ m FL[5]} VBC6{ v1} BC3 vd} v2} vd}


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

static void Test_S3467C29()
{
  extern Class_Descriptor cd_S3467C29;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S3467C29, buf);
    S3467C29 *dp, &lv = *(dp=new (buf) S3467C29());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S3467C29)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C29)");
    /*is_ambiguous_... S3467C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C25*), ABISELECT(8,4), "S3467C29");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*), ABISELECT(8,4), "S3467C29");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*), 0, "S3467C29");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*), 0, "S3467C29");
    check_base_class_offset(lv, (S3467C11*)(S3467C25*), 0, "S3467C29");
    check_base_class_offset(lv, (S3467C25*), 0, "S3467C29");
    test_class_info(&lv, &cd_S3467C29);
    dp->~S3467C29();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C29(Test_S3467C29, "S3467C29", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S3467C29C1Ev();
extern void _ZN8S3467C29D2Ev();
Name_Map name_map_S3467C29[] = {
  NSPAIR(_ZN8S3467C29C1Ev),
  NSPAIR(_ZN8S3467C29D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C25;
extern VTBL_ENTRY _ZTI8S3467C25[];
extern  VTBL_ENTRY _ZTV8S3467C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C25[];
static Base_Class bases_S3467C29[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3467C5,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3467C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3467C25,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C29[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C29D1Ev();
extern void _ZN8S3467C29D0Ev();
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY vtc_S3467C29[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C29[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C29D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C29D0Ev,
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern VTBL_ENTRY _ZTV8S3467C29[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C25D1Ev();
extern void _ZN8S3467C25D0Ev();
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C25__8S3467C29[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C25D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C25D0Ev,
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C29[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
static  VTT_ENTRY vtt_S3467C29[] = {
  {&(_ZTV8S3467C29[8]),  8,12},
  {&(_tg__ZTV8S3467C25__8S3467C29[8]),  8,12},
  {&(_tg__ZTV8S3467C25__8S3467C29[8]),  8,12},
  {&(_tg__ZTV8S3467C25__8S3467C29[8]),  8,12},
  {&(_ZTV8S3467C29[8]),  8,12},
  {&(_ZTV8S3467C29[8]),  8,12},
  {&(_tg__ZTV8S3467C11__8S3467C29[5]),  5,8},
  {&(_tg__ZTV8S3467C11__8S3467C29[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S3467C29[];
extern  VTBL_ENTRY _ZTV8S3467C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C29[];
Class_Descriptor cd_S3467C29 = {  "S3467C29", // class name
  bases_S3467C29, 6,
  &(vtc_S3467C29[0]), // expected_vtbl_contents
  &(vtt_S3467C29[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S3467C29),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S3467C29),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C29),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C28  : S3467C29 {
  char s3467c28f0;
  virtual  ~S3467C28(); // _ZN8S3467C28D2Ev
  S3467C28(); // tgen
};
//SIG(-1 S3467C28) C1{ BC2{ BC3{ VBC4{ m} VBC5{ VBC6{ m FL[5]} VBC7{ v1} BC4 vd} v2} vd} vd Fc}


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

static void Test_S3467C28()
{
  extern Class_Descriptor cd_S3467C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S3467C28, buf);
    S3467C28 *dp, &lv = *(dp=new (buf) S3467C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S3467C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C28)");
    /*is_ambiguous_... S3467C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C25*)(S3467C29*), ABISELECT(9,5), "S3467C28");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*), ABISELECT(16,8), "S3467C28");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*), 0, "S3467C28");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*), 0, "S3467C28");
    check_base_class_offset(lv, (S3467C11*)(S3467C25*)(S3467C29*), 0, "S3467C28");
    check_base_class_offset(lv, (S3467C25*)(S3467C29*), 0, "S3467C28");
    check_base_class_offset(lv, (S3467C29*), 0, "S3467C28");
    check_field_offset(lv, s3467c28f0, ABISELECT(8,4), "S3467C28.s3467c28f0");
    test_class_info(&lv, &cd_S3467C28);
    dp->~S3467C28();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C28(Test_S3467C28, "S3467C28", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN8S3467C28C1Ev();
extern void _ZN8S3467C28D2Ev();
Name_Map name_map_S3467C28[] = {
  NSPAIR(_ZN8S3467C28C1Ev),
  NSPAIR(_ZN8S3467C28D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C25;
extern VTBL_ENTRY _ZTI8S3467C25[];
extern  VTBL_ENTRY _ZTV8S3467C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C25[];
extern Class_Descriptor cd_S3467C29;
extern VTBL_ENTRY _ZTI8S3467C29[];
extern  VTBL_ENTRY _ZTV8S3467C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C29[];
static Base_Class bases_S3467C28[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3467C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3467C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3467C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3467C29,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C28[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C28D1Ev();
extern void _ZN8S3467C28D0Ev();
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY vtc_S3467C28[] = {
  0,
  ABISELECT(9,5),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C28[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C28D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C28D0Ev,
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern VTBL_ENTRY _ZTV8S3467C28[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C29D1Ev();
extern void _ZN8S3467C29D0Ev();
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C29__8S3467C28[] = {
  0,
  ABISELECT(9,5),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C29[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C29D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C29D0Ev,
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev)();
extern void _ZN8S3467C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev)();
extern void _ZN8S3467C25D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C258S3467C29__8S3467C28[] = {
  0,
  ABISELECT(9,5),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C28[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
static  VTT_ENTRY vtt_S3467C28[] = {
  {&(_ZTV8S3467C28[8]),  8,12},
  {&(_tg__ZTV8S3467C29__8S3467C28[8]),  8,12},
  {&(_tg__ZTV8S3467C258S3467C29__8S3467C28[8]),  8,12},
  {&(_tg__ZTV8S3467C258S3467C29__8S3467C28[8]),  8,12},
  {&(_tg__ZTV8S3467C258S3467C29__8S3467C28[8]),  8,12},
  {&(_tg__ZTV8S3467C29__8S3467C28[8]),  8,12},
  {&(_tg__ZTV8S3467C29__8S3467C28[8]),  8,12},
  {&(_ZTV8S3467C28[8]),  8,12},
  {&(_ZTV8S3467C28[8]),  8,12},
  {&(_tg__ZTV8S3467C11__8S3467C28[5]),  5,8},
  {&(_tg__ZTV8S3467C11__8S3467C28[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S3467C28[];
extern  VTBL_ENTRY _ZTV8S3467C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C28[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C25D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3467C28 = {  "S3467C28", // class name
  bases_S3467C28, 7,
  &(vtc_S3467C28[0]), // expected_vtbl_contents
  &(vtt_S3467C28[0]), // expected_vtt_contents
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI8S3467C28),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S3467C28),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C28),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C31  : S3467C4 , S3467C16 {
  virtual  ~S3467C31(); // _ZN8S3467C31D2Ev
  S3467C31(); // tgen
};
//SIG(-1 S3467C31) C1{ BC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} BC6{ BC4 BC3} vd}


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

static void Test_S3467C31()
{
  extern Class_Descriptor cd_S3467C31;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S3467C31, buf);
    S3467C31 *dp, &lv = *(dp=new (buf) S3467C31());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S3467C31)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C31)");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*), 0, "S3467C31");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*), ABISELECT(136,88), "S3467C31");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*), 0, "S3467C31");
    check_base_class_offset(lv, (S3467C4*), 0, "S3467C31");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*), ABISELECT(96,48), "S3467C31");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*), ABISELECT(88,44), "S3467C31");
    check_base_class_offset(lv, (S3467C16*), ABISELECT(88,44), "S3467C31");
    test_class_info(&lv, &cd_S3467C31);
    dp->~S3467C31();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C31(Test_S3467C31, "S3467C31", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN8S3467C31C1Ev();
extern void _ZN8S3467C31D2Ev();
Name_Map name_map_S3467C31[] = {
  NSPAIR(_ZN8S3467C31C1Ev),
  NSPAIR(_ZN8S3467C31D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
static Base_Class bases_S3467C31[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3467C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C4,    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_S20997C6,    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
    6, //immediately_derived
  0, 0},
  {&cd_S3467C5,    ABISELECT(88,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S3467C16,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C31[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C31D1Ev();
extern void _ZN8S3467C31D0Ev();
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY vtc_S3467C31[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C31[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C31D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C31D0Ev,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S3467C31[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S3467C31[];
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__8S3467C31[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
static  VTT_ENTRY vtt_S3467C31[] = {
  {&(_ZTV8S3467C31[3]),  3,9},
  {&(_tg__ZTV7S3467C4__8S3467C31[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S3467C31[];
extern  VTBL_ENTRY _ZTV8S3467C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C31[];
Class_Descriptor cd_S3467C31 = {  "S3467C31", // class name
  bases_S3467C31, 7,
  &(vtc_S3467C31[0]), // expected_vtbl_contents
  &(vtt_S3467C31[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI8S3467C31),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3467C31),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C31),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C30  : S3467C25 , S3467C31 , S3467C11 {
  char s3467c30f0;
  void *s3467c30f1;
  virtual  ~S3467C30(); // _ZN8S3467C30D2Ev
  S3467C30(); // tgen
};
//SIG(-1 S3467C30) C1{ BC2{ VBC3{ m} VBC4{ VBC5{ m FL[5]} VBC6{ v1} BC3 vd} v2} BC7{ BC8{ BC6 VBC5 BC3 Fp[10]} BC9{ BC5 BC6} vd} BC4 vd Fc Fp}


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

static void Test_S3467C30()
{
  extern Class_Descriptor cd_S3467C30;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,37)];
    init_test(&cd_S3467C30, buf);
    S3467C30 *dp, &lv = *(dp=new (buf) S3467C30());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,144), "sizeof(S3467C30)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3467C30)");
    /*is_ambiguous_... S3467C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C25*), ABISELECT(168,104), "S3467C30");
    /*is_ambiguous_... S3467C30::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*), ABISELECT(168,104), "S3467C30");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*)(S3467C31*), ABISELECT(168,104), "S3467C30");
    /*is_ambiguous_... S3467C30::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*), ABISELECT(168,104), "S3467C30");
    /*is_ambiguous_... S3467C30::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*), 0, "S3467C30");
    /*is_ambiguous_... S3467C30::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*), 0, "S3467C30");
    /*is_ambiguous_... S3467C30::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*), 0, "S3467C30");
    check_base_class_offset(lv, (S3467C11*)(S3467C25*), 0, "S3467C30");
    check_base_class_offset(lv, (S3467C25*), 0, "S3467C30");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*)(S3467C31*), ABISELECT(8,4), "S3467C30");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*)(S3467C31*), ABISELECT(8,4), "S3467C30");
    check_base_class_offset(lv, (S3467C4*)(S3467C31*), ABISELECT(8,4), "S3467C30");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*)(S3467C31*), ABISELECT(104,52), "S3467C30");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*)(S3467C31*), ABISELECT(96,48), "S3467C30");
    check_base_class_offset(lv, (S3467C16*)(S3467C31*), ABISELECT(96,48), "S3467C30");
    check_base_class_offset(lv, (S3467C31*), ABISELECT(8,4), "S3467C30");
    /*is_ambiguous_... S3467C30::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*), ABISELECT(144,92), "S3467C30");
    /*is_ambiguous_... S3467C30::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C11*), ABISELECT(144,92), "S3467C30");
    check_field_offset(lv, s3467c30f0, ABISELECT(152,96), "S3467C30.s3467c30f0");
    check_field_offset(lv, s3467c30f1, ABISELECT(160,100), "S3467C30.s3467c30f1");
    test_class_info(&lv, &cd_S3467C30);
    dp->~S3467C30();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C30(Test_S3467C30, "S3467C30", ABISELECT(208,144));

#else // __cplusplus

extern void _ZN8S3467C30C1Ev();
extern void _ZN8S3467C30D2Ev();
Name_Map name_map_S3467C30[] = {
  NSPAIR(_ZN8S3467C30C1Ev),
  NSPAIR(_ZN8S3467C30D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C25;
extern VTBL_ENTRY _ZTI8S3467C25[];
extern  VTBL_ENTRY _ZTV8S3467C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C25[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
extern Class_Descriptor cd_S3467C31;
extern VTBL_ENTRY _ZTI8S3467C31[];
extern  VTBL_ENTRY _ZTV8S3467C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C31[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
static Base_Class bases_S3467C30[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(168,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(168,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S3467C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3467C11,    0, //bcp->offset
    -1, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3467C25,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3467C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C4,    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
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    11, //immediately_derived
  0, 0},
  {&cd_S3467C5,    ABISELECT(96,48), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3467C16,    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
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S3467C31,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    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
    14, //immediately_derived
  0, 0},
  {&cd_S3467C11,    ABISELECT(144,92), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3467C30[];
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C30D1Ev,_ZTv0_n24_N8S3467C30D1Ev)();
extern void _ZN8S3467C30D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C30D0Ev,_ZTv0_n24_N8S3467C30D0Ev)();
extern void _ZN8S3467C30D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn8_N8S3467C30D1Ev,_ZThn4_N8S3467C30D1Ev)();
extern void ABISELECT(_ZThn8_N8S3467C30D0Ev,_ZThn4_N8S3467C30D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn144_N8S3467C30D1Ev,_ZThn92_N8S3467C30D1Ev)();
extern void ABISELECT(_ZThn144_N8S3467C30D0Ev,_ZThn92_N8S3467C30D0Ev)();
static  VTBL_ENTRY vtc_S3467C30[] = {
  0,
  ABISELECT(168,104),
  0,
  0,
  ABISELECT(168,104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C30[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C30D1Ev,_ZTv0_n24_N8S3467C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C30D0Ev,_ZTv0_n24_N8S3467C30D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
  ABISELECT(160,100),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3467C30[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S3467C30D1Ev,_ZThn4_N8S3467C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S3467C30D0Ev,_ZThn4_N8S3467C30D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S3467C30[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(-144,-92),
  ABISELECT(24,12),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S3467C30[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S3467C30D1Ev,_ZThn92_N8S3467C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S3467C30D0Ev,_ZThn92_N8S3467C30D0Ev),
};
extern VTBL_ENTRY _ZTV8S3467C30[];
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev)();
extern void _ZN8S3467C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev)();
extern void _ZN8S3467C25D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C25__8S3467C30[] = {
  0,
  ABISELECT(168,104),
  0,
  0,
  ABISELECT(168,104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C31D1Ev();
extern void _ZN8S3467C31D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C31__8S3467C30[] = {
  ABISELECT(160,100),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C31[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C31D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C31D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C31__8S3467C30[] = {
  ABISELECT(160,100),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C11__A__8S3467C30[] = {
  ABISELECT(-144,-92),
  ABISELECT(24,12),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C11__A__8S3467C30[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C30[] = {
  0,
  ABISELECT(168,104),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
static  VTT_ENTRY vtt_S3467C30[] = {
  {&(_ZTV8S3467C30[8]),  8,29},
  {&(_tg__ZTV8S3467C25__8S3467C30[8]),  8,12},
  {&(_tg__ZTV8S3467C25__8S3467C30[8]),  8,12},
  {&(_tg__ZTV8S3467C25__8S3467C30[8]),  8,12},
  {&(_tg__ZTV8S3467C31__8S3467C30[3]),  3,6},
  {&(_tg__ZTV7S3467C48S3467C31__8S3467C30[3]),  3,4},
  {&(_tg__ZTV8S3467C11__A__8S3467C30[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C11__A__8S3467C30[3]),  3,4},
  {&(_ZTV8S3467C30[8]),  8,29},
  {&(_ZTV8S3467C30[8]),  8,29},
  {&(_ZTV8S3467C30[15]),  15,29},
  {&(_ZTV8S3467C30[26]),  26,29},
  {&(_tg__ZTV8S3467C11__8S3467C30[5]),  5,8},
  {&(_tg__ZTV8S3467C11__8S3467C30[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S3467C30[];
extern  VTBL_ENTRY _ZTV8S3467C30[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C30[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C25D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C30D0Ev,_ZTv0_n24_N8S3467C30D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C30D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C30D1Ev,_ZTv0_n24_N8S3467C30D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C30D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3467C30 = {  "S3467C30", // class name
  bases_S3467C30, 15,
  &(vtc_S3467C30[0]), // expected_vtbl_contents
  &(vtt_S3467C30[0]), // expected_vtt_contents
  ABISELECT(208,144), // object size
  NSPAIRA(_ZTI8S3467C30),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3467C30),29, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3467C30),14, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3467C1  : S3467C2 , virtual S3467C26 , virtual S3467C28 , S3467C30 {
  int s3467c1f0;
  virtual void  v1(); // _ZN7S3467C12v1Ev
  ~S3467C1(); // tgen
  S3467C1(); // tgen
};
//SIG(1 S3467C1) C1{ BC2{ BC3{ VBC4{ BC5{ v2} VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC6 VBC9{ VBC7 BC10{ VBC5 FC4[9]} BC11{ VBC6 VBC5 BC7 vd} BC12{ BC11 vd}} VBC13{ VBC14{ VBC5 BC4 VBC9 vd} BC15{ BC16{ BC6 BC5} FD}} vd Fp}} BC7 VBC17{ VBC4 VBC18{ VBC19{ m FL[4]} VBC11 vd} VBC20{ BC16 BC4} BC21{ m} VBC22{ BC23{ m}} vd} VBC24{ VBC5 VBC11 VBC19 VBC25{ VBC7 VBC11 v3} VBC10 vd}} VBC26{ VBC27{ VBC14 Fi} BC3 vd} VBC28{ BC29{ BC25 vd} vd Fc} BC30{ BC25 BC31{ BC4 BC16 vd} BC11 vd Fc Fp} v1 Fi}


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

static void Test_S3467C1()
{
  extern Class_Descriptor cd_S3467C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(191,496)];
    init_test(&cd_S3467C1, buf);
    S3467C1 *dp, &lv = *(dp=new (buf) S3467C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3040,1980), "sizeof(S3467C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3467C1)");
    /*is_ambiguous_... S3467C1::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C4*), ABISELECT(184,112), "S3467C1");
    /*is_ambiguous_... S3467C1::S3467C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C4*), ABISELECT(272,156), "S3467C1");
    /*is_ambiguous_... S3467C8::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C8*), ABISELECT(272,156), "S3467C1");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C9*), ABISELECT(272,156), "S3467C1");
    check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(272,156), "S3467C1");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*)(S3467C14*), ABISELECT(272,156), "S3467C1");
    /*is_ambiguous_... S3467C1::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*), ABISELECT(272,156), "S3467C1");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*)(S3467C20*), ABISELECT(272,156), "S3467C1");
    check_base_class_offset(lv, (S20997C6*)(S3467C4*)(S3467C31*)(S3467C30*), ABISELECT(272,156), "S3467C1");
    /*is_ambiguous_... S3467C30::S3467C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S3467C11*)(S3467C30*), ABISELECT(272,156), "S3467C1");
    /*is_ambiguous_... S3467C1::S3467C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C4*), ABISELECT(184,112), "S3467C1");
    /*is_ambiguous_... S3467C3::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C4*)(S3467C3*)(S3467C2*), ABISELECT(184,112), "S3467C1");
    /*is_ambiguous_... S3467C17::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C4*)(S3467C17*), ABISELECT(184,112), "S3467C1");
    /*is_ambiguous_... S3467C3::S3467C4 */ AMB_check_base_class_offset(lv, (S3467C4*)(S3467C3*)(S3467C26*), ABISELECT(184,112), "S3467C1");
    /*is_ambiguous_... S3467C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C9*), ABISELECT(1504,972), "S3467C1");
    /*is_ambiguous_... S3467C1::S3467C25 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C25*), ABISELECT(1504,972), "S3467C1");
    /*is_ambiguous_... S3467C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C25*)(S3467C29*)(S3467C28*), ABISELECT(1504,972), "S3467C1");
    /*is_ambiguous_... S3467C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C25*)(S3467C30*), ABISELECT(1504,972), "S3467C1");
    check_base_class_offset(lv, (S3467C5*)(S3467C10*)(S3467C9*), 0, "S3467C1");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C9*), 0, "S3467C1");
    check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C12*)(S3467C9*), 0, "S3467C1");
    /*is_ambiguous_... S3467C14::S3467C5 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C14*), 0, "S3467C1");
    /*is_ambiguous_... S3467C1::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*), 0, "S3467C1");
    check_base_class_offset(lv, (S3467C5*)(S3467C24*), 0, "S3467C1");
    /*is_ambiguous_... S3467C1::S3467C10 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C10*), 0, "S3467C1");
    /*is_ambiguous_... S3467C30::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C5*)(S3467C11*)(S3467C30*), 0, "S3467C1");
    check_base_class_offset(lv, (S3467C10*)(S3467C9*), ABISELECT(328,204), "S3467C1");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C9*), ABISELECT(1488,964), "S3467C1");
    /*is_ambiguous_... S3467C9::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C11*)(S3467C9*), ABISELECT(1488,964), "S3467C1");
    check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1496,968), "S3467C1");
    check_base_class_offset(lv, (S3467C11*)(S3467C12*)(S3467C9*), ABISELECT(1496,968), "S3467C1");
    check_base_class_offset(lv, (S3467C12*)(S3467C9*), ABISELECT(1496,968), "S3467C1");
    check_base_class_offset(lv, (S3467C9*)(S3467C8*), ABISELECT(328,204), "S3467C1");
    check_base_class_offset(lv, (S3467C9*)(S3467C14*), ABISELECT(328,204), "S3467C1");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*)(S3467C14*), ABISELECT(1568,1028), "S3467C1");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*)(S3467C14*), ABISELECT(1568,1028), "S3467C1");
    check_base_class_offset(lv, (S3467C4*)(S3467C14*), ABISELECT(1568,1028), "S3467C1");
    check_base_class_offset(lv, (S3467C14*)(S3467C13*), ABISELECT(1568,1028), "S3467C1");
    check_base_class_offset(lv, (S3467C14*)(S3467C27*), ABISELECT(1568,1028), "S3467C1");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1512,976), "S3467C1");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1504,972), "S3467C1");
    check_base_class_offset(lv, (S3467C16*)(S3467C15*)(S3467C13*), ABISELECT(1504,972), "S3467C1");
    check_base_class_offset(lv, (S3467C15*)(S3467C13*), ABISELECT(1504,972), "S3467C1");
    check_base_class_offset(lv, (S3467C13*)(S3467C8*), ABISELECT(1504,972), "S3467C1");
    check_base_class_offset(lv, (S3467C8*)(S3467C3*)(S3467C2*), ABISELECT(312,196), "S3467C1");
    check_base_class_offset(lv, (S3467C8*)(S3467C3*)(S3467C26*), ABISELECT(312,196), "S3467C1");
    check_base_class_offset(lv, (S3467C3*)(S3467C2*), 0, "S3467C1");
    /*is_ambiguous_... S3467C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C2*), 0, "S3467C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S3467C18*), ABISELECT(1664,1076), "S3467C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S3467C24*), ABISELECT(1664,1076), "S3467C1");
    /*is_ambiguous_... S3467C1::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*), ABISELECT(1656,1072), "S3467C1");
    check_base_class_offset(lv, (S3467C11*)(S3467C18*), ABISELECT(1656,1072), "S3467C1");
    check_base_class_offset(lv, (S3467C11*)(S3467C24*), ABISELECT(1656,1072), "S3467C1");
    /*is_ambiguous_... S3467C1::S3467C25 */ AMB_check_base_class_offset(lv, (S3467C11*)(S3467C25*), ABISELECT(1656,1072), "S3467C1");
    check_base_class_offset(lv, (S3467C11*)(S3467C25*)(S3467C29*)(S3467C28*), ABISELECT(1656,1072), "S3467C1");
    check_base_class_offset(lv, (S3467C11*)(S3467C25*)(S3467C30*), ABISELECT(1656,1072), "S3467C1");
    check_base_class_offset(lv, (S3467C18*)(S3467C17*), ABISELECT(1656,1072), "S3467C1");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*)(S3467C20*), ABISELECT(1704,1112), "S3467C1");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*)(S3467C20*), ABISELECT(1696,1108), "S3467C1");
    check_base_class_offset(lv, (S3467C16*)(S3467C20*), ABISELECT(1696,1108), "S3467C1");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*)(S3467C20*), ABISELECT(1744,1152), "S3467C1");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*)(S3467C20*), ABISELECT(1744,1152), "S3467C1");
    check_base_class_offset(lv, (S3467C4*)(S3467C20*), ABISELECT(1744,1152), "S3467C1");
    check_base_class_offset(lv, (S3467C20*)(S3467C17*), ABISELECT(1696,1108), "S3467C1");
    check_base_class_offset(lv, (S4227C27*)(S3467C17*), ABISELECT(1656,1072), "S3467C1");
    check_base_class_offset(lv, (S4227C23*)(S3467C22*), 0, "S3467C1");
    check_base_class_offset(lv, (S3467C22*)(S3467C17*), 0, "S3467C1");
    check_base_class_offset(lv, (S3467C17*)(S3467C2*), ABISELECT(1656,1072), "S3467C1");
    check_base_class_offset(lv, (S3467C25*)(S3467C24*), ABISELECT(1832,1196), "S3467C1");
    check_base_class_offset(lv, (S3467C10*)(S3467C24*), ABISELECT(1840,1200), "S3467C1");
    check_base_class_offset(lv, (S3467C24*)(S3467C2*), ABISELECT(1832,1196), "S3467C1");
    check_base_class_offset(lv, (S3467C2*), 0, "S3467C1");
    check_base_class_offset(lv, (S3467C27*)(S3467C26*), ABISELECT(3008,1964), "S3467C1");
    check_base_class_offset(lv, (S3467C3*)(S3467C26*), ABISELECT(3000,1960), "S3467C1");
    check_base_class_offset(lv, (S3467C26*), ABISELECT(3000,1960), "S3467C1");
    check_base_class_offset(lv, (S3467C25*)(S3467C29*)(S3467C28*), ABISELECT(3024,1972), "S3467C1");
    check_base_class_offset(lv, (S3467C29*)(S3467C28*), ABISELECT(3024,1972), "S3467C1");
    check_base_class_offset(lv, (S3467C28*), ABISELECT(3024,1972), "S3467C1");
    check_base_class_offset(lv, (S3467C25*)(S3467C30*), ABISELECT(8,4), "S3467C1");
    check_base_class_offset(lv, (S3467C5*)(S3467C4*)(S3467C31*)(S3467C30*), ABISELECT(16,8), "S3467C1");
    check_base_class_offset(lv, (S4227C37*)(S3467C4*)(S3467C31*)(S3467C30*), ABISELECT(16,8), "S3467C1");
    check_base_class_offset(lv, (S3467C4*)(S3467C31*)(S3467C30*), ABISELECT(16,8), "S3467C1");
    check_base_class_offset(lv, (S20997C6*)(S3467C16*)(S3467C31*)(S3467C30*), ABISELECT(112,56), "S3467C1");
    check_base_class_offset(lv, (S3467C5*)(S3467C16*)(S3467C31*)(S3467C30*), ABISELECT(104,52), "S3467C1");
    check_base_class_offset(lv, (S3467C16*)(S3467C31*)(S3467C30*), ABISELECT(104,52), "S3467C1");
    check_base_class_offset(lv, (S3467C31*)(S3467C30*), ABISELECT(16,8), "S3467C1");
    /*is_ambiguous_... S3467C30::S3467C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S3467C11*)(S3467C30*), ABISELECT(152,96), "S3467C1");
    /*is_ambiguous_... S3467C30::S3467C11 */ AMB_check_base_class_offset(lv, (S3467C11*)(S3467C30*), ABISELECT(152,96), "S3467C1");
    check_base_class_offset(lv, (S3467C30*), ABISELECT(8,4), "S3467C1");
    check_field_offset(lv, s3467c1f0, ABISELECT(176,108), "S3467C1.s3467c1f0");
    test_class_info(&lv, &cd_S3467C1);
    dp->~S3467C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3467C1(Test_S3467C1, "S3467C1", ABISELECT(3040,1980));

#else // __cplusplus

extern void _ZN7S3467C1C1Ev();
extern void _ZN7S3467C1D1Ev();
Name_Map name_map_S3467C1[] = {
  NSPAIR(_ZN7S3467C1C1Ev),
  NSPAIR(_ZN7S3467C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C10;
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C12;
extern VTBL_ENTRY _ZTI8S3467C12[];
extern  VTBL_ENTRY _ZTV8S3467C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C12[];
extern Class_Descriptor cd_S3467C9;
extern VTBL_ENTRY _ZTI7S3467C9[];
extern  VTBL_ENTRY _ZTV7S3467C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C9[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S3467C14;
extern VTBL_ENTRY _ZTI8S3467C14[];
extern  VTBL_ENTRY _ZTV8S3467C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C14[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
extern Class_Descriptor cd_S3467C15;
extern VTBL_ENTRY _ZTI8S3467C15[];
extern  VTBL_ENTRY _ZTV8S3467C15[];
extern Class_Descriptor cd_S3467C13;
extern VTBL_ENTRY _ZTI8S3467C13[];
extern  VTBL_ENTRY _ZTV8S3467C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C13[];
extern Class_Descriptor cd_S3467C8;
extern VTBL_ENTRY _ZTI7S3467C8[];
extern  VTBL_ENTRY _ZTV7S3467C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C8[];
extern Class_Descriptor cd_S3467C3;
extern VTBL_ENTRY _ZTI7S3467C3[];
extern  VTBL_ENTRY _ZTV7S3467C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C3[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C18;
extern VTBL_ENTRY _ZTI8S3467C18[];
extern  VTBL_ENTRY _ZTV8S3467C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C18[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S3467C20;
extern VTBL_ENTRY _ZTI8S3467C20[];
extern  VTBL_ENTRY _ZTV8S3467C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C20[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S3467C22;
extern VTBL_ENTRY _ZTI8S3467C22[];
extern Class_Descriptor cd_S3467C17;
extern VTBL_ENTRY _ZTI8S3467C17[];
extern  VTBL_ENTRY _ZTV8S3467C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C17[];
extern Class_Descriptor cd_S3467C25;
extern VTBL_ENTRY _ZTI8S3467C25[];
extern  VTBL_ENTRY _ZTV8S3467C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C25[];
extern Class_Descriptor cd_S3467C10;
extern VTBL_ENTRY _ZTI8S3467C10[];
extern  VTBL_ENTRY _ZTV8S3467C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C10[];
extern Class_Descriptor cd_S3467C24;
extern VTBL_ENTRY _ZTI8S3467C24[];
extern  VTBL_ENTRY _ZTV8S3467C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C24[];
extern Class_Descriptor cd_S3467C2;
extern VTBL_ENTRY _ZTI7S3467C2[];
extern  VTBL_ENTRY _ZTV7S3467C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C2[];
extern Class_Descriptor cd_S3467C27;
extern VTBL_ENTRY _ZTI8S3467C27[];
extern  VTBL_ENTRY _ZTV8S3467C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C27[];
extern Class_Descriptor cd_S3467C3;
extern VTBL_ENTRY _ZTI7S3467C3[];
extern  VTBL_ENTRY _ZTV7S3467C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C3[];
extern Class_Descriptor cd_S3467C26;
extern VTBL_ENTRY _ZTI8S3467C26[];
extern  VTBL_ENTRY _ZTV8S3467C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C26[];
extern Class_Descriptor cd_S3467C25;
extern VTBL_ENTRY _ZTI8S3467C25[];
extern  VTBL_ENTRY _ZTV8S3467C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C25[];
extern Class_Descriptor cd_S3467C29;
extern VTBL_ENTRY _ZTI8S3467C29[];
extern  VTBL_ENTRY _ZTV8S3467C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C29[];
extern Class_Descriptor cd_S3467C28;
extern VTBL_ENTRY _ZTI8S3467C28[];
extern  VTBL_ENTRY _ZTV8S3467C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C28[];
extern Class_Descriptor cd_S3467C25;
extern VTBL_ENTRY _ZTI8S3467C25[];
extern  VTBL_ENTRY _ZTV8S3467C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C25[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C4;
extern VTBL_ENTRY _ZTI7S3467C4[];
extern  VTBL_ENTRY _ZTV7S3467C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S3467C5;
extern VTBL_ENTRY _ZTI7S3467C5[];
extern  VTBL_ENTRY _ZTV7S3467C5[];
extern Class_Descriptor cd_S3467C16;
extern VTBL_ENTRY _ZTI8S3467C16[];
extern  VTBL_ENTRY _ZTV8S3467C16[];
extern Class_Descriptor cd_S3467C31;
extern VTBL_ENTRY _ZTI8S3467C31[];
extern  VTBL_ENTRY _ZTV8S3467C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C31[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S3467C11;
extern VTBL_ENTRY _ZTI8S3467C11[];
extern  VTBL_ENTRY _ZTV8S3467C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C11[];
extern Class_Descriptor cd_S3467C30;
extern VTBL_ENTRY _ZTI8S3467C30[];
extern  VTBL_ENTRY _ZTV8S3467C30[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3467C30[];
static Base_Class bases_S3467C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3467C5,    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
    3, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(272,156), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    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
    3, //immediately_derived
  0, 0},
  {&cd_S3467C4,    ABISELECT(184,112), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1504,972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3467C10,    ABISELECT(328,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1488,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S3467C11,    ABISELECT(1488,964), //bcp->offset
    84, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1496,968), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C11,    ABISELECT(1496,968), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S3467C12,    ABISELECT(1496,968), //bcp->offset
    92, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S3467C9,    ABISELECT(328,204), //bcp->offset
    74, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S3467C5,    ABISELECT(1568,1028), //bcp->offset
    -1, //bcp->virtual_function_table_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_S4227C37,    ABISELECT(1568,1028), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C4,    ABISELECT(1568,1028), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S3467C14,    ABISELECT(1568,1028), //bcp->offset
    112, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1512,976), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C5,    ABISELECT(1504,972), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3467C16,    ABISELECT(1504,972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S3467C15,    ABISELECT(1504,972), //bcp->offset
    -1, //bcp->virtual_function_table_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_S3467C13,    ABISELECT(1504,972), //bcp->offset
    100, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S3467C8,    ABISELECT(312,196), //bcp->offset
    61, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S3467C3,    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
    34, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S10258C6_nt,    ABISELECT(1664,1076), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1656,1072), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S3467C11,    ABISELECT(1656,1072), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S3467C18,    ABISELECT(1656,1072), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1704,1112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C5,    ABISELECT(1696,1108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S3467C16,    ABISELECT(1696,1108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3467C5,    ABISELECT(1744,1152), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1744,1152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C4,    ABISELECT(1744,1152), //bcp->offset
    143, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    107, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S3467C20,    ABISELECT(1696,1108), //bcp->offset
    138, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S4227C27,    ABISELECT(1656,1072), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3467C17,    ABISELECT(1656,1072), //bcp->offset
    123, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S3467C25,    ABISELECT(1832,1196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3467C10,    ABISELECT(1840,1200), //bcp->offset
    163, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    117, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S3467C24,    ABISELECT(1832,1196), //bcp->offset
    147, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    109, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S3467C2,    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
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3467C27,    ABISELECT(3008,1964), //bcp->offset
    184, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S3467C3,    ABISELECT(3000,1960), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S3467C26,    ABISELECT(3000,1960), //bcp->offset
    168, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3467C25,    ABISELECT(3024,1972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S3467C29,    ABISELECT(3024,1972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    145, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S3467C28,    ABISELECT(3024,1972), //bcp->offset
    196, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3467C25,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S3467C5,    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
    37, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S4227C37,    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
    53, //immediately_derived
  0, 0},
  {&cd_S3467C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    56, //immediately_derived
  0, 0},
  {&cd_S3467C5,    ABISELECT(104,52), //bcp->offset
    45, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S3467C16,    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
    40, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S3467C31,    ABISELECT(16,8), //bcp->offset
    39, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S3467C11,    ABISELECT(152,96), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S3467C30,    ABISELECT(8,4), //bcp->offset
    27, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3467C1[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C1D1Ev();
extern void _ZN7S3467C1D0Ev();
extern void _ZN7S3467C12v1Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3467C1D1Ev,_ZTv0_n24_N7S3467C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S3467C1D1Ev,_ZThn4_N7S3467C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3467C1D0Ev,_ZTv0_n24_N7S3467C1D0Ev)();
extern void ABISELECT(_ZThn8_N7S3467C1D0Ev,_ZThn4_N7S3467C1D0Ev)() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn16_N7S3467C1D1Ev,_ZThn8_N7S3467C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S3467C1D0Ev,_ZThn8_N7S3467C1D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn152_N7S3467C1D1Ev,_ZThn96_N7S3467C1D1Ev)();
extern void ABISELECT(_ZThn152_N7S3467C1D0Ev,_ZThn96_N7S3467C1D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n80_N7S3467C1D1Ev,_ZTv0_n40_N7S3467C1D1Ev)();
extern void ABISELECT(_ZThn312_N7S3467C1D1Ev,_ZThn196_N7S3467C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3467C1D0Ev,_ZTv0_n40_N7S3467C1D0Ev)();
extern void ABISELECT(_ZThn312_N7S3467C1D0Ev,_ZThn196_N7S3467C1D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C1D1Ev,_ZTv0_n28_N7S3467C1D1Ev)();
extern void ABISELECT(_ZThn328_N7S3467C1D1Ev,_ZThn204_N7S3467C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3467C1D0Ev,_ZTv0_n28_N7S3467C1D0Ev)();
extern void ABISELECT(_ZThn328_N7S3467C1D0Ev,_ZThn204_N7S3467C1D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C1D1Ev,_ZTvn760_n28_N7S3467C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C1D0Ev,_ZTvn760_n28_N7S3467C1D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C1D1Ev,_ZTvn764_n28_N7S3467C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C1D0Ev,_ZTvn764_n28_N7S3467C1D0Ev)();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C1D1Ev,_ZTv0_n36_N7S3467C1D1Ev)();
extern void ABISELECT(_ZThn1504_N7S3467C1D1Ev,_ZThn972_N7S3467C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C1D0Ev,_ZTv0_n36_N7S3467C1D0Ev)();
extern void ABISELECT(_ZThn1504_N7S3467C1D0Ev,_ZThn972_N7S3467C1D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C1D1Ev,_ZTv0_n32_N7S3467C1D1Ev)();
extern void ABISELECT(_ZThn1568_N7S3467C1D1Ev,_ZThn1028_N7S3467C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3467C1D0Ev,_ZTv0_n32_N7S3467C1D0Ev)();
extern void ABISELECT(_ZThn1568_N7S3467C1D0Ev,_ZThn1028_N7S3467C1D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3467C1D1Ev,_ZTv0_n24_N7S3467C1D1Ev)();
extern void ABISELECT(_ZThn1656_N7S3467C1D1Ev,_ZThn1072_N7S3467C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3467C1D0Ev,_ZTv0_n24_N7S3467C1D0Ev)();
extern void ABISELECT(_ZThn1656_N7S3467C1D0Ev,_ZThn1072_N7S3467C1D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3467C1D1Ev,_ZTv0_n24_N7S3467C1D1Ev)();
extern void ABISELECT(_ZThn1832_N7S3467C1D1Ev,_ZThn1196_N7S3467C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3467C1D0Ev,_ZTv0_n24_N7S3467C1D0Ev)();
extern void ABISELECT(_ZThn1832_N7S3467C1D0Ev,_ZThn1196_N7S3467C1D0Ev)() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n104_N7S3467C1D1Ev,_ZTv0_n52_N7S3467C1D1Ev)();
extern void ABISELECT(_ZThn3000_N7S3467C1D1Ev,_ZThn1960_N7S3467C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N7S3467C1D0Ev,_ZTv0_n52_N7S3467C1D0Ev)();
extern void ABISELECT(_ZThn3000_N7S3467C1D0Ev,_ZThn1960_N7S3467C1D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C1D1Ev,_ZTv0_n36_N7S3467C1D1Ev)();
extern void ABISELECT(_ZThn3008_N7S3467C1D1Ev,_ZThn1964_N7S3467C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C1D0Ev,_ZTv0_n36_N7S3467C1D0Ev)();
extern void ABISELECT(_ZThn3008_N7S3467C1D0Ev,_ZThn1964_N7S3467C1D0Ev)() __attribute__((weak));
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3467C1D1Ev,_ZTv0_n24_N7S3467C1D1Ev)();
extern void ABISELECT(_ZThn3024_N7S3467C1D1Ev,_ZThn1972_N7S3467C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3467C1D0Ev,_ZTv0_n24_N7S3467C1D0Ev)();
extern void ABISELECT(_ZThn3024_N7S3467C1D0Ev,_ZThn1972_N7S3467C1D0Ev)() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY vtc_S3467C1[] = {
  ABISELECT(3024,1972),
  ABISELECT(3008,1964),
  ABISELECT(3000,1960),
  ABISELECT(1840,1200),
  ABISELECT(1832,1196),
  ABISELECT(1832,1196),
  0,
  ABISELECT(1696,1108),
  ABISELECT(1656,1072),
  ABISELECT(1664,1076),
  ABISELECT(1656,1072),
  ABISELECT(1656,1072),
  ABISELECT(1568,1028),
  ABISELECT(1504,972),
  0,
  ABISELECT(1504,972),
  ABISELECT(328,204),
  ABISELECT(312,196),
  ABISELECT(272,156),
  ABISELECT(184,112),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3467C12v1Ev,
  ABISELECT(1648,1068),
  ABISELECT(1496,968),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(264,152),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C1D1Ev,_ZTv0_n24_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C1D0Ev,_ZTv0_n24_N7S3467C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
  ABISELECT(256,148),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3467C1D1Ev,_ZThn8_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3467C1D0Ev,_ZThn8_N7S3467C1D0Ev),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(-152,-96),
  ABISELECT(120,60),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N7S3467C1D1Ev,_ZThn96_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn152_N7S3467C1D0Ev,_ZThn96_N7S3467C1D0Ev),
  0,
  ABISELECT(88,44),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(-312,-196),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-312,-196),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C1D1Ev,_ZTv0_n40_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C1D0Ev,_ZTv0_n40_N7S3467C1D0Ev),
  ABISELECT(-328,-204),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C1D1Ev,_ZTv0_n28_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C1D0Ev,_ZTv0_n28_N7S3467C1D0Ev),
  ABISELECT(-1488,-964),
  ABISELECT(-1216,-808),
  ABISELECT(-1488,-964),
  ABISELECT(-1488,-964),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C1D1Ev,_ZTvn760_n28_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C1D0Ev,_ZTvn760_n28_N7S3467C1D0Ev),
  ABISELECT(-1496,-968),
  ABISELECT(-1224,-812),
  ABISELECT(-1496,-968),
  ABISELECT(-1496,-968),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C1D1Ev,_ZTvn764_n28_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C1D0Ev,_ZTvn764_n28_N7S3467C1D0Ev),
  ABISELECT(-1504,-972),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1504,-972),
  ABISELECT(64,56),
  ABISELECT(-1504,-972),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C1D1Ev,_ZTv0_n36_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C1D0Ev,_ZTv0_n36_N7S3467C1D0Ev),
  ABISELECT(-1568,-1028),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1568,-1028),
  ABISELECT(-1296,-872),
  ABISELECT(-1568,-1028),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C1D1Ev,_ZTv0_n32_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C1D0Ev,_ZTv0_n32_N7S3467C1D0Ev),
  ABISELECT(-1656,-1072),
  ABISELECT(40,36),
  0,
  ABISELECT(-1472,-960),
  0,
  ABISELECT(8,4),
  ABISELECT(-1656,-1072),
  ABISELECT(-1656,-1072),
  ABISELECT(-1384,-916),
  ABISELECT(-1656,-1072),
  ABISELECT(-1656,-1072),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C1D1Ev,_ZTv0_n24_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C1D0Ev,_ZTv0_n24_N7S3467C1D0Ev),
  0,
  ABISELECT(-1424,-952),
  ABISELECT(-1696,-1108),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(-1472,-996),
  ABISELECT(-1744,-1152),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  ABISELECT(-1832,-1196),
  ABISELECT(-1832,-1196),
  ABISELECT(-1560,-1040),
  ABISELECT(-1832,-1196),
  ABISELECT(-1832,-1196),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C1D1Ev,_ZTv0_n24_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C1D0Ev,_ZTv0_n24_N7S3467C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
  ABISELECT(-1840,-1200),
  ABISELECT(-1840,-1200),
  ABISELECT(-1840,-1200),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  ABISELECT(-3000,-1960),
  ABISELECT(8,4),
  ABISELECT(-1432,-932),
  ABISELECT(-1496,-988),
  ABISELECT(-3000,-1960),
  ABISELECT(-1496,-988),
  ABISELECT(-2672,-1756),
  ABISELECT(-2688,-1764),
  ABISELECT(-2728,-1804),
  ABISELECT(-2816,-1848),
  ABISELECT(-3000,-1960),
  ABISELECT(-3000,-1960),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S3467C1D1Ev,_ZTv0_n52_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N7S3467C1D0Ev,_ZTv0_n52_N7S3467C1D0Ev),
  ABISELECT(-3008,-1964),
  ABISELECT(-1504,-992),
  ABISELECT(-2680,-1760),
  ABISELECT(-2736,-1808),
  ABISELECT(-3008,-1964),
  ABISELECT(-1440,-936),
  ABISELECT(-3008,-1964),
  ABISELECT(-3008,-1964),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C1D1Ev,_ZTv0_n36_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C1D0Ev,_ZTv0_n36_N7S3467C1D0Ev),
  0,
  ABISELECT(-1368,-900),
  ABISELECT(-1520,-1000),
  ABISELECT(-3024,-1972),
  ABISELECT(-3024,-1972),
  ABISELECT(-2752,-1816),
  ABISELECT(-3024,-1972),
  ABISELECT(-3024,-1972),
  (VTBL_ENTRY)&(_ZTI7S3467C1[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C1D1Ev,_ZTv0_n24_N7S3467C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C1D0Ev,_ZTv0_n24_N7S3467C1D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern VTBL_ENTRY _ZTV7S3467C1[];
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C2D1Ev();
extern void _ZN7S3467C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C2__7S3467C1[] = {
  ABISELECT(1840,1200),
  ABISELECT(1832,1196),
  ABISELECT(1832,1196),
  0,
  ABISELECT(1696,1108),
  ABISELECT(1656,1072),
  ABISELECT(1664,1076),
  ABISELECT(1656,1072),
  ABISELECT(1656,1072),
  ABISELECT(1568,1028),
  ABISELECT(1504,972),
  0,
  ABISELECT(1504,972),
  ABISELECT(328,204),
  ABISELECT(312,196),
  ABISELECT(272,156),
  ABISELECT(184,112),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C2D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C3D1Ev();
extern void _ZN7S3467C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C37S3467C2__7S3467C1[] = {
  ABISELECT(1568,1028),
  ABISELECT(1504,972),
  0,
  ABISELECT(1504,972),
  ABISELECT(328,204),
  ABISELECT(312,196),
  ABISELECT(272,156),
  ABISELECT(184,112),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C3D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__7S3467C37S3467C2__7S3467C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn312_N7S3467C3D1Ev,_ZThn196_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn312_N7S3467C3D0Ev,_ZThn196_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C8__7S3467C37S3467C2__7S3467C1[] = {
  ABISELECT(-312,-196),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-312,-196),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn328_N7S3467C3D1Ev,_ZThn204_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn328_N7S3467C3D0Ev,_ZThn204_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C37S3467C2__7S3467C1[] = {
  ABISELECT(-328,-204),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C3D1Ev,_ZTvn760_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C3D0Ev,_ZTvn760_n28_N7S3467C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C37S3467C2__7S3467C1[] = {
  ABISELECT(-1488,-964),
  ABISELECT(-1216,-808),
  ABISELECT(-1488,-964),
  ABISELECT(-1488,-964),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C3D1Ev,_ZTvn760_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C3D0Ev,_ZTvn760_n28_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C3D1Ev,_ZTvn764_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C3D0Ev,_ZTvn764_n28_N7S3467C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C37S3467C2__7S3467C1[] = {
  ABISELECT(-1496,-968),
  ABISELECT(-1224,-812),
  ABISELECT(-1496,-968),
  ABISELECT(-1496,-968),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C3D1Ev,_ZTvn764_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C3D0Ev,_ZTvn764_n28_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn1504_N7S3467C3D1Ev,_ZThn972_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn1504_N7S3467C3D0Ev,_ZThn972_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C37S3467C2__7S3467C1[] = {
  ABISELECT(-1504,-972),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1504,-972),
  ABISELECT(64,56),
  ABISELECT(-1504,-972),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev)();
extern void ABISELECT(_ZThn1568_N7S3467C3D1Ev,_ZThn1028_N7S3467C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev)();
extern void ABISELECT(_ZThn1568_N7S3467C3D0Ev,_ZThn1028_N7S3467C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C37S3467C2__7S3467C1[] = {
  ABISELECT(-1568,-1028),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1568,-1028),
  ABISELECT(-1296,-872),
  ABISELECT(-1568,-1028),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__7S3467C2__7S3467C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n80_N7S3467C2D1Ev,_ZTv0_n40_N7S3467C2D1Ev)();
extern void ABISELECT(_ZThn312_N7S3467C2D1Ev,_ZThn196_N7S3467C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S3467C2D0Ev,_ZTv0_n40_N7S3467C2D0Ev)();
extern void ABISELECT(_ZThn312_N7S3467C2D0Ev,_ZThn196_N7S3467C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C8__7S3467C2__7S3467C1[] = {
  ABISELECT(-312,-196),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-312,-196),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-312,-196),
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C2D1Ev,_ZTv0_n40_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C2D0Ev,_ZTv0_n40_N7S3467C2D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C2D1Ev,_ZTv0_n28_N7S3467C2D1Ev)();
extern void ABISELECT(_ZThn328_N7S3467C2D1Ev,_ZThn204_N7S3467C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3467C2D0Ev,_ZTv0_n28_N7S3467C2D0Ev)();
extern void ABISELECT(_ZThn328_N7S3467C2D0Ev,_ZThn204_N7S3467C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C2__7S3467C1[] = {
  ABISELECT(-328,-204),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C2D1Ev,_ZTv0_n28_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C2D0Ev,_ZTv0_n28_N7S3467C2D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C2D1Ev,_ZTvn760_n28_N7S3467C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C2D0Ev,_ZTvn760_n28_N7S3467C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C2__7S3467C1[] = {
  ABISELECT(-1488,-964),
  ABISELECT(-1216,-808),
  ABISELECT(-1488,-964),
  ABISELECT(-1488,-964),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C2D1Ev,_ZTvn760_n28_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C2D0Ev,_ZTvn760_n28_N7S3467C2D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C2D1Ev,_ZTvn764_n28_N7S3467C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C2D0Ev,_ZTvn764_n28_N7S3467C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C2__7S3467C1[] = {
  ABISELECT(-1496,-968),
  ABISELECT(-1224,-812),
  ABISELECT(-1496,-968),
  ABISELECT(-1496,-968),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C2D1Ev,_ZTvn764_n28_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C2D0Ev,_ZTvn764_n28_N7S3467C2D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C2D1Ev,_ZTv0_n36_N7S3467C2D1Ev)();
extern void ABISELECT(_ZThn1504_N7S3467C2D1Ev,_ZThn972_N7S3467C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C2D0Ev,_ZTv0_n36_N7S3467C2D0Ev)();
extern void ABISELECT(_ZThn1504_N7S3467C2D0Ev,_ZThn972_N7S3467C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C2__7S3467C1[] = {
  ABISELECT(-1504,-972),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1504,-972),
  ABISELECT(64,56),
  ABISELECT(-1504,-972),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C2D1Ev,_ZTv0_n36_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C2D0Ev,_ZTv0_n36_N7S3467C2D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C2D1Ev,_ZTv0_n32_N7S3467C2D1Ev)();
extern void ABISELECT(_ZThn1568_N7S3467C2D1Ev,_ZThn1028_N7S3467C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3467C2D0Ev,_ZTv0_n32_N7S3467C2D0Ev)();
extern void ABISELECT(_ZThn1568_N7S3467C2D0Ev,_ZThn1028_N7S3467C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C2__7S3467C1[] = {
  ABISELECT(-1568,-1028),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1568,-1028),
  ABISELECT(-1296,-872),
  ABISELECT(-1568,-1028),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C2D1Ev,_ZTv0_n32_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C2D0Ev,_ZTv0_n32_N7S3467C2D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3467C2D1Ev,_ZTv0_n24_N7S3467C2D1Ev)();
extern void ABISELECT(_ZThn1656_N7S3467C2D1Ev,_ZThn1072_N7S3467C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3467C2D0Ev,_ZTv0_n24_N7S3467C2D0Ev)();
extern void ABISELECT(_ZThn1656_N7S3467C2D0Ev,_ZThn1072_N7S3467C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C17__7S3467C2__7S3467C1[] = {
  ABISELECT(-1656,-1072),
  ABISELECT(40,36),
  0,
  ABISELECT(-1472,-960),
  0,
  ABISELECT(8,4),
  ABISELECT(-1656,-1072),
  ABISELECT(-1656,-1072),
  ABISELECT(-1384,-916),
  ABISELECT(-1656,-1072),
  ABISELECT(-1656,-1072),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C2D1Ev,_ZTv0_n24_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C2D0Ev,_ZTv0_n24_N7S3467C2D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C20__7S3467C2__7S3467C1[] = {
  0,
  ABISELECT(-1424,-952),
  ABISELECT(-1696,-1108),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C20__A2__7S3467C2__7S3467C1[] = {
  ABISELECT(-1472,-996),
  ABISELECT(-1744,-1152),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S3467C2D1Ev,_ZTv0_n24_N7S3467C2D1Ev)();
extern void ABISELECT(_ZThn1832_N7S3467C2D1Ev,_ZThn1196_N7S3467C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S3467C2D0Ev,_ZTv0_n24_N7S3467C2D0Ev)();
extern void ABISELECT(_ZThn1832_N7S3467C2D0Ev,_ZThn1196_N7S3467C2D0Ev)() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C24__7S3467C2__7S3467C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  ABISELECT(-1832,-1196),
  ABISELECT(-1832,-1196),
  ABISELECT(-1560,-1040),
  ABISELECT(-1832,-1196),
  ABISELECT(-1832,-1196),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C2D1Ev,_ZTv0_n24_N7S3467C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S3467C2D0Ev,_ZTv0_n24_N7S3467C2D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C10__A1__7S3467C2__7S3467C1[] = {
  ABISELECT(-1840,-1200),
  ABISELECT(-1840,-1200),
  ABISELECT(-1840,-1200),
  (VTBL_ENTRY)&(_ZTI7S3467C2[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C30D1Ev,_ZTv0_n24_N8S3467C30D1Ev)();
extern void _ZN8S3467C30D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C30D0Ev,_ZTv0_n24_N8S3467C30D0Ev)();
extern void _ZN8S3467C30D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C30__7S3467C1[] = {
  ABISELECT(1648,1068),
  ABISELECT(1496,968),
  0,
  ABISELECT(-8,-4),
  ABISELECT(264,152),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C30[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C30D1Ev,_ZTv0_n24_N8S3467C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C30D0Ev,_ZTv0_n24_N8S3467C30D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev)();
extern void _ZN8S3467C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev)();
extern void _ZN8S3467C25D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C258S3467C30__A2__7S3467C1[] = {
  ABISELECT(1648,1068),
  ABISELECT(1496,968),
  0,
  ABISELECT(-8,-4),
  ABISELECT(264,152),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev)();
extern void ABISELECT(_ZThn1648_N8S3467C25D1Ev,_ZThn1068_N8S3467C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev)();
extern void ABISELECT(_ZThn1648_N8S3467C25D0Ev,_ZThn1068_N8S3467C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C258S3467C30__A2__7S3467C1[] = {
  ABISELECT(-1648,-1068),
  ABISELECT(-1656,-1072),
  ABISELECT(-1384,-916),
  ABISELECT(-1656,-1072),
  ABISELECT(-1648,-1068),
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C258S3467C30__A2__7S3467C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C31D1Ev();
extern void _ZN8S3467C31D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C318S3467C30__7S3467C1[] = {
  ABISELECT(256,148),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C31[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C31D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C31D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C318S3467C30__A3__7S3467C1[] = {
  ABISELECT(256,148),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C118S3467C30__A3__7S3467C1[] = {
  ABISELECT(-152,-96),
  ABISELECT(120,60),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C118S3467C30__A3__7S3467C1[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C30D1Ev,_ZTv0_n24_N8S3467C30D1Ev)();
extern void ABISELECT(_ZThn1648_N8S3467C30D1Ev,_ZThn1068_N8S3467C30D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C30D0Ev,_ZTv0_n24_N8S3467C30D0Ev)();
extern void ABISELECT(_ZThn1648_N8S3467C30D0Ev,_ZThn1068_N8S3467C30D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C30__7S3467C1[] = {
  ABISELECT(-1648,-1068),
  ABISELECT(-1656,-1072),
  ABISELECT(-1384,-916),
  ABISELECT(-1656,-1072),
  ABISELECT(-1648,-1068),
  (VTBL_ENTRY)&(_ZTI8S3467C30[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C30D1Ev,_ZTv0_n24_N8S3467C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C30D0Ev,_ZTv0_n24_N8S3467C30D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C30__7S3467C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S3467C30[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn8_N8S3467C30D1Ev,_ZThn4_N8S3467C30D1Ev)();
extern void ABISELECT(_ZThn8_N8S3467C30D0Ev,_ZThn4_N8S3467C30D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C31__8S3467C30__7S3467C1[] = {
  ABISELECT(256,148),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3467C30[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S3467C30D1Ev,_ZThn4_N8S3467C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S3467C30D0Ev,_ZThn4_N8S3467C30D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn144_N8S3467C30D1Ev,_ZThn92_N8S3467C30D1Ev)();
extern void ABISELECT(_ZThn144_N8S3467C30D0Ev,_ZThn92_N8S3467C30D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__A__8S3467C30__7S3467C1[] = {
  ABISELECT(-152,-96),
  ABISELECT(120,60),
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S3467C30[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S3467C30D1Ev,_ZThn92_N8S3467C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S3467C30D0Ev,_ZThn92_N8S3467C30D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__7S3467C1[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C8D1Ev();
extern void _ZN7S3467C8D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C8__7S3467C1[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-312,-196),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-312,-196),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C8D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C8D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn16_N7S3467C8D1Ev,_ZThn8_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn16_N7S3467C8D0Ev,_ZThn8_N7S3467C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C8__7S3467C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__7S3467C8__7S3467C1[] = {
  0,
  ABISELECT(312,196),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C8D1Ev,_ZTvn760_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C8D0Ev,_ZTvn760_n28_N7S3467C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C8__7S3467C1[] = {
  ABISELECT(-1488,-964),
  ABISELECT(-1216,-808),
  ABISELECT(-1488,-964),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C8D1Ev,_ZTvn760_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C8D0Ev,_ZTvn760_n28_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C8D1Ev,_ZTvn764_n28_N7S3467C8D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C8D0Ev,_ZTvn764_n28_N7S3467C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C8__7S3467C1[] = {
  ABISELECT(-1496,-968),
  ABISELECT(-1224,-812),
  ABISELECT(-1496,-968),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C8D1Ev,_ZTvn764_n28_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C8D0Ev,_ZTvn764_n28_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn1192_N7S3467C8D1Ev,_ZThn776_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn1192_N7S3467C8D0Ev,_ZThn776_N7S3467C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C8__7S3467C1[] = {
  ABISELECT(-1192,-776),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1504,-972),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev)();
extern void ABISELECT(_ZThn1256_N7S3467C8D1Ev,_ZThn832_N7S3467C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev)();
extern void ABISELECT(_ZThn1256_N7S3467C8D0Ev,_ZThn832_N7S3467C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C8__7S3467C1[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1568,-1028),
  ABISELECT(-1296,-872),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI7S3467C8[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C9D1Ev();
extern void _ZN7S3467C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C1[] = {
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C9D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C107S3467C9__7S3467C1[] = {
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C107S3467C9__7S3467C1[] = {
  0,
  ABISELECT(328,204),
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C1[] = {
  ABISELECT(-1488,-964),
  ABISELECT(-1216,-808),
  ABISELECT(-1488,-964),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C117S3467C9__7S3467C1[] = {
  0,
  ABISELECT(1488,964),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C12D1Ev();
extern void _ZN8S3467C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C1[] = {
  ABISELECT(-1496,-968),
  ABISELECT(-1224,-812),
  ABISELECT(-1496,-968),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C12D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C118S3467C127S3467C9__A1__7S3467C1[] = {
  ABISELECT(-1496,-968),
  ABISELECT(-1224,-812),
  ABISELECT(-1496,-968),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__7S3467C1[] = {
  0,
  ABISELECT(1496,968),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C127S3467C9__7S3467C1[] = {
  0,
  ABISELECT(1496,968),
  (VTBL_ENTRY)&(_ZTI8S3467C12[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__7S3467C9__7S3467C1[] = {
  0,
  ABISELECT(328,204),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__7S3467C9__7S3467C1[] = {
  ABISELECT(-1488,-964),
  ABISELECT(-1216,-808),
  ABISELECT(-1488,-964),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D1Ev,_ZThn760_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N7S3467C9D0Ev,_ZThn760_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev)();
extern void ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C12__7S3467C9__7S3467C1[] = {
  ABISELECT(-1496,-968),
  ABISELECT(-1224,-812),
  ABISELECT(-1496,-968),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI7S3467C9[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D1Ev,_ZThn764_N7S3467C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N7S3467C9D0Ev,_ZThn764_N7S3467C9D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C13D1Ev();
extern void _ZN8S3467C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C1[] = {
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1504,-972),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C13D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev)();
extern void ABISELECT(_ZThn64_N8S3467C13D1Ev,_ZThn56_N8S3467C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev)();
extern void ABISELECT(_ZThn64_N8S3467C13D0Ev,_ZThn56_N8S3467C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C14__8S3467C13__7S3467C1[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1568,-1028),
  ABISELECT(-1296,-872),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C13__7S3467C1[] = {
  0,
  ABISELECT(1504,972),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C13__7S3467C1[] = {
  ABISELECT(1176,768),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C13D1Ev,_ZTv0_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C13D0Ev,_ZTv0_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C13D1Ev,_ZTvn760_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C13D0Ev,_ZTvn760_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C13__7S3467C1[] = {
  ABISELECT(-1488,-964),
  ABISELECT(-1216,-808),
  ABISELECT(-1488,-964),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C13D1Ev,_ZTvn760_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C13D0Ev,_ZTvn760_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C13D1Ev,_ZTvn764_n28_N8S3467C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C13D0Ev,_ZTvn764_n28_N8S3467C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C13__7S3467C1[] = {
  ABISELECT(-1496,-968),
  ABISELECT(-1224,-812),
  ABISELECT(-1496,-968),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S3467C13[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C13D1Ev,_ZTvn764_n28_N8S3467C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C13D0Ev,_ZTvn764_n28_N8S3467C13D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C14D1Ev();
extern void _ZN8S3467C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C1[] = {
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1568,-1028),
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C14D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C14__A1__7S3467C1[] = {
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C14__7S3467C1[] = {
  0,
  ABISELECT(1568,1028),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C14__7S3467C1[] = {
  ABISELECT(1240,824),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D1Ev,_ZTv0_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C14D0Ev,_ZTv0_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C14__7S3467C1[] = {
  ABISELECT(-1488,-964),
  ABISELECT(-1216,-808),
  ABISELECT(-1488,-964),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D1Ev,_ZTvn760_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C14D0Ev,_ZTvn760_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C14__7S3467C1[] = {
  ABISELECT(-1496,-968),
  ABISELECT(-1224,-812),
  ABISELECT(-1496,-968),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S3467C14[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D1Ev,_ZTvn764_n28_N8S3467C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C14D0Ev,_ZTvn764_n28_N8S3467C14D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C17D1Ev,_ZTv0_n24_N8S3467C17D1Ev)();
extern void _ZN8S3467C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C17D0Ev,_ZTv0_n24_N8S3467C17D0Ev)();
extern void _ZN8S3467C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C17__7S3467C1[] = {
  ABISELECT(-1656,-1072),
  ABISELECT(40,36),
  0,
  ABISELECT(-1472,-960),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-1656,-1072),
  ABISELECT(-1384,-916),
  ABISELECT(-1656,-1072),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C17D1Ev,_ZTv0_n24_N8S3467C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C17D0Ev,_ZTv0_n24_N8S3467C17D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__8S3467C17__7S3467C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(1472,960),
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__A1__8S3467C17__7S3467C1[] = {
  0,
  ABISELECT(1656,1072),
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C20__8S3467C17__7S3467C1[] = {
  0,
  ABISELECT(-1424,-952),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C20__A1__8S3467C17__7S3467C1[] = {
  ABISELECT(-1472,-996),
  ABISELECT(-88,-80),
  (VTBL_ENTRY)&(_ZTI8S3467C17[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C18D1Ev,_ZTv0_n24_N8S3467C18D1Ev)();
extern void _ZN8S3467C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C18D0Ev,_ZTv0_n24_N8S3467C18D0Ev)();
extern void _ZN8S3467C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C18__7S3467C1[] = {
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-1656,-1072),
  ABISELECT(-1384,-916),
  ABISELECT(-1656,-1072),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C18[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C18D1Ev,_ZTv0_n24_N8S3467C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C18D0Ev,_ZTv0_n24_N8S3467C18D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C18__7S3467C1[] = {
  0,
  ABISELECT(1656,1072),
  (VTBL_ENTRY)&(_ZTI8S3467C18[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C11D1Ev();
extern void _ZN8S3467C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C11__A2__7S3467C1[] = {
  ABISELECT(-1656,-1072),
  ABISELECT(-1384,-916),
  ABISELECT(-1656,-1072),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C11D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C11__A2__7S3467C1[] = {
  0,
  ABISELECT(1656,1072),
  (VTBL_ENTRY)&(_ZTI8S3467C11[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C20__7S3467C1[] = {
  ABISELECT(-1424,-952),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C20[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C48S3467C20__A2__7S3467C1[] = {
  ABISELECT(-1472,-996),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C4[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__8S3467C20__7S3467C1[] = {
  ABISELECT(-1472,-996),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S3467C20[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C24D1Ev,_ZTv0_n24_N8S3467C24D1Ev)();
extern void _ZN8S3467C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C24D0Ev,_ZTv0_n24_N8S3467C24D0Ev)();
extern void _ZN8S3467C24D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C24__7S3467C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  0,
  ABISELECT(-1832,-1196),
  ABISELECT(-1560,-1040),
  ABISELECT(-1832,-1196),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C24[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C24D1Ev,_ZTv0_n24_N8S3467C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C24D0Ev,_ZTv0_n24_N8S3467C24D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C24__7S3467C1[] = {
  0,
  ABISELECT(1832,1196),
  (VTBL_ENTRY)&(_ZTI8S3467C24[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C24D1Ev,_ZTv0_n24_N8S3467C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3467C24D0Ev,_ZTv0_n24_N8S3467C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C24__7S3467C1[] = {
  ABISELECT(176,124),
  ABISELECT(-1656,-1072),
  ABISELECT(-1384,-916),
  ABISELECT(-1656,-1072),
  ABISELECT(176,124),
  (VTBL_ENTRY)&(_ZTI8S3467C24[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C24D1Ev,_ZTv0_n24_N8S3467C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C24D0Ev,_ZTv0_n24_N8S3467C24D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C10__8S3467C24__7S3467C1[] = {
  ABISELECT(-1840,-1200),
  ABISELECT(-1840,-1200),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3467C24[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev)();
extern void _ZN8S3467C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev)();
extern void _ZN8S3467C25D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C25__7S3467C1[] = {
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  0,
  ABISELECT(-1832,-1196),
  ABISELECT(-1560,-1040),
  ABISELECT(-1832,-1196),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C25__7S3467C1[] = {
  ABISELECT(176,124),
  ABISELECT(-1656,-1072),
  ABISELECT(-1384,-916),
  ABISELECT(-1656,-1072),
  ABISELECT(176,124),
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C25__7S3467C1[] = {
  0,
  ABISELECT(1832,1196),
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C10__A1__7S3467C1[] = {
  ABISELECT(-1840,-1200),
  ABISELECT(-1840,-1200),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C10__A1__7S3467C1[] = {
  0,
  ABISELECT(1840,1200),
  (VTBL_ENTRY)&(_ZTI8S3467C10[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C26D1Ev();
extern void _ZN8S3467C26D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C26__7S3467C1[] = {
  ABISELECT(8,4),
  ABISELECT(-1432,-932),
  ABISELECT(-1496,-988),
  ABISELECT(-3000,-1960),
  ABISELECT(-1496,-988),
  ABISELECT(-2672,-1756),
  ABISELECT(-2688,-1764),
  ABISELECT(-2728,-1804),
  ABISELECT(-2816,-1848),
  ABISELECT(-3000,-1960),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C26D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C26D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN7S3467C3D1Ev();
extern void _ZN7S3467C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C38S3467C26__A1__7S3467C1[] = {
  ABISELECT(-1432,-932),
  ABISELECT(-1496,-988),
  ABISELECT(-3000,-1960),
  ABISELECT(-1496,-988),
  ABISELECT(-2672,-1756),
  ABISELECT(-2688,-1764),
  ABISELECT(-2728,-1804),
  ABISELECT(-2816,-1848),
  ABISELECT(-3000,-1960),
  0,
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN7S3467C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3467C3D0Ev,
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__7S3467C38S3467C26__A1__7S3467C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(2816,1848),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C8__7S3467C38S3467C26__A1__7S3467C1[] = {
  ABISELECT(2688,1764),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-312,-196),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-312,-196),
  ABISELECT(2688,1764),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__7S3467C38S3467C26__A1__7S3467C1[] = {
  ABISELECT(2672,1756),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  ABISELECT(2672,1756),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__A1__7S3467C38S3467C26__A1__7S3467C1[] = {
  0,
  ABISELECT(3000,1960),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C3D1Ev,_ZTvn760_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S3467C3D0Ev,_ZTvn760_n28_N7S3467C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__7S3467C38S3467C26__A1__7S3467C1[] = {
  ABISELECT(-1488,-964),
  ABISELECT(-1216,-808),
  ABISELECT(-1488,-964),
  ABISELECT(1512,996),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C3D1Ev,_ZTvn760_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S3467C3D0Ev,_ZTvn760_n28_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C3D1Ev,_ZTvn764_n28_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S3467C3D0Ev,_ZTvn764_n28_N7S3467C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__7S3467C38S3467C26__A1__7S3467C1[] = {
  ABISELECT(-1496,-968),
  ABISELECT(-1224,-812),
  ABISELECT(-1496,-968),
  ABISELECT(1504,992),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C3D1Ev,_ZTvn764_n28_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S3467C3D0Ev,_ZTvn764_n28_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C13__7S3467C38S3467C26__A1__7S3467C1[] = {
  ABISELECT(1496,988),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1504,-972),
  ABISELECT(64,56),
  ABISELECT(1496,988),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev)();
extern void ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C14__7S3467C38S3467C26__A1__7S3467C1[] = {
  ABISELECT(1432,932),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1568,-1028),
  ABISELECT(-1296,-872),
  ABISELECT(1432,932),
  (VTBL_ENTRY)&(_ZTI7S3467C3[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S3467C26D1Ev,_ZTv0_n36_N8S3467C26D1Ev)();
extern void ABISELECT(_ZThn8_N8S3467C26D1Ev,_ZThn4_N8S3467C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S3467C26D0Ev,_ZTv0_n36_N8S3467C26D0Ev)();
extern void ABISELECT(_ZThn8_N8S3467C26D0Ev,_ZThn4_N8S3467C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3467C27__8S3467C26__7S3467C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-1504,-992),
  ABISELECT(-2680,-1760),
  ABISELECT(-2736,-1808),
  ABISELECT(-3008,-1964),
  ABISELECT(-1440,-936),
  ABISELECT(-3008,-1964),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3467C26D1Ev,_ZTv0_n36_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3467C26D0Ev,_ZTv0_n36_N8S3467C26D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S3467C26D1Ev,_ZTv0_n32_N8S3467C26D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S3467C26D0Ev,_ZTv0_n32_N8S3467C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C14__8S3467C26__7S3467C1[] = {
  ABISELECT(1432,932),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1568,-1028),
  ABISELECT(-1296,-872),
  ABISELECT(1432,932),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C26D1Ev,_ZTv0_n32_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C26D0Ev,_ZTv0_n32_N8S3467C26D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C26__7S3467C1[] = {
  0,
  ABISELECT(3000,1960),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C26D1Ev,_ZTv0_n28_N8S3467C26D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3467C26D0Ev,_ZTv0_n28_N8S3467C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C26__7S3467C1[] = {
  ABISELECT(2672,1756),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  ABISELECT(2672,1756),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C26D1Ev,_ZTv0_n28_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C26D0Ev,_ZTv0_n28_N8S3467C26D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C26D1Ev,_ZTvn760_n28_N8S3467C26D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C26D0Ev,_ZTvn760_n28_N8S3467C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C26__7S3467C1[] = {
  ABISELECT(-1488,-964),
  ABISELECT(-1216,-808),
  ABISELECT(-1488,-964),
  ABISELECT(1512,996),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C26D1Ev,_ZTvn760_n28_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C26D0Ev,_ZTvn760_n28_N8S3467C26D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C26D1Ev,_ZTvn764_n28_N8S3467C26D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C26D0Ev,_ZTvn764_n28_N8S3467C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C26__7S3467C1[] = {
  ABISELECT(-1496,-968),
  ABISELECT(-1224,-812),
  ABISELECT(-1496,-968),
  ABISELECT(1504,992),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C26D1Ev,_ZTvn764_n28_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C26D0Ev,_ZTvn764_n28_N8S3467C26D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C4__A1__8S3467C26__7S3467C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(2816,1848),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n80_N8S3467C26D1Ev,_ZTv0_n40_N8S3467C26D1Ev)();
extern void ABISELECT(_ZTv0_n80_N8S3467C26D0Ev,_ZTv0_n40_N8S3467C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C8__8S3467C26__7S3467C1[] = {
  ABISELECT(2688,1764),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-312,-196),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-312,-196),
  ABISELECT(2688,1764),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3467C26D1Ev,_ZTv0_n40_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S3467C26D0Ev,_ZTv0_n40_N8S3467C26D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S3467C26D1Ev,_ZTv0_n36_N8S3467C26D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S3467C26D0Ev,_ZTv0_n36_N8S3467C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C13__8S3467C26__7S3467C1[] = {
  ABISELECT(1496,988),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1504,-972),
  ABISELECT(64,56),
  ABISELECT(1496,988),
  (VTBL_ENTRY)&(_ZTI8S3467C26[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3467C26D1Ev,_ZTv0_n36_N8S3467C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S3467C26D0Ev,_ZTv0_n36_N8S3467C26D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void _ZN8S3467C27D1Ev();
extern void _ZN8S3467C27D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C27__7S3467C1[] = {
  ABISELECT(-1504,-992),
  ABISELECT(-2680,-1760),
  ABISELECT(-2736,-1808),
  ABISELECT(-3008,-1964),
  ABISELECT(-1440,-936),
  ABISELECT(-3008,-1964),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&_ZN8S3467C27D1Ev,
  (VTBL_ENTRY)&_ZN8S3467C27D0Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S3467C27D1Ev,_ZTv0_n32_N8S3467C27D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S3467C27D0Ev,_ZTv0_n32_N8S3467C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C14__8S3467C27__7S3467C1[] = {
  ABISELECT(1440,936),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1568,-1028),
  ABISELECT(-1296,-872),
  ABISELECT(1440,936),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C27D1Ev,_ZTv0_n32_N8S3467C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S3467C27D0Ev,_ZTv0_n32_N8S3467C27D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C27__7S3467C1[] = {
  0,
  ABISELECT(3008,1964),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S3467C27D1Ev,_ZTv0_n28_N8S3467C27D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S3467C27D0Ev,_ZTv0_n28_N8S3467C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3467C9__8S3467C27__7S3467C1[] = {
  ABISELECT(2680,1760),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-328,-204),
  ABISELECT(-328,-204),
  ABISELECT(2680,1760),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C27D1Ev,_ZTv0_n28_N8S3467C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S3467C27D0Ev,_ZTv0_n28_N8S3467C27D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C27D1Ev,_ZTvn760_n28_N8S3467C27D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S3467C27D0Ev,_ZTvn760_n28_N8S3467C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C117S3467C9__8S3467C27__7S3467C1[] = {
  ABISELECT(-1488,-964),
  ABISELECT(-1216,-808),
  ABISELECT(-1488,-964),
  ABISELECT(1520,1000),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C27D1Ev,_ZTvn760_n28_N8S3467C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S3467C27D0Ev,_ZTvn760_n28_N8S3467C27D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C27D1Ev,_ZTvn764_n28_N8S3467C27D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S3467C27D0Ev,_ZTvn764_n28_N8S3467C27D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C127S3467C9__8S3467C27__7S3467C1[] = {
  ABISELECT(-1496,-968),
  ABISELECT(-1224,-812),
  ABISELECT(-1496,-968),
  ABISELECT(1512,996),
  (VTBL_ENTRY)&(_ZTI8S3467C27[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C27D1Ev,_ZTvn764_n28_N8S3467C27D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S3467C27D0Ev,_ZTvn764_n28_N8S3467C27D0Ev),
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C28D1Ev,_ZTv0_n24_N8S3467C28D1Ev)();
extern void _ZN8S3467C28D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C28D0Ev,_ZTv0_n24_N8S3467C28D0Ev)();
extern void _ZN8S3467C28D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C28__7S3467C1[] = {
  ABISELECT(-1368,-900),
  ABISELECT(-1520,-1000),
  0,
  ABISELECT(-3024,-1972),
  ABISELECT(-2752,-1816),
  ABISELECT(-3024,-1972),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C28[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C28D1Ev,_ZTv0_n24_N8S3467C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C28D0Ev,_ZTv0_n24_N8S3467C28D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C29D1Ev,_ZTv0_n24_N8S3467C29D1Ev)();
extern void _ZN8S3467C29D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C29D0Ev,_ZTv0_n24_N8S3467C29D0Ev)();
extern void _ZN8S3467C29D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C298S3467C28__7S3467C1[] = {
  ABISELECT(-1368,-900),
  ABISELECT(-1520,-1000),
  0,
  ABISELECT(-3024,-1972),
  ABISELECT(-2752,-1816),
  ABISELECT(-3024,-1972),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C29[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C29D1Ev,_ZTv0_n24_N8S3467C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C29D0Ev,_ZTv0_n24_N8S3467C29D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev)();
extern void _ZN8S3467C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev)();
extern void _ZN8S3467C25D0Ev() __attribute__((weak));
extern void _ZN8S3467C252v3Ev();
static  VTBL_ENTRY _tg__ZTV8S3467C258S3467C298S3467C28__A1__7S3467C1[] = {
  ABISELECT(-1368,-900),
  ABISELECT(-1520,-1000),
  0,
  ABISELECT(-3024,-1972),
  ABISELECT(-2752,-1816),
  ABISELECT(-3024,-1972),
  0,
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev),
  (VTBL_ENTRY)&_ZN8S3467C252v3Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C258S3467C298S3467C28__A1__7S3467C1[] = {
  ABISELECT(1368,900),
  ABISELECT(-1656,-1072),
  ABISELECT(-1384,-916),
  ABISELECT(-1656,-1072),
  ABISELECT(1368,900),
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C258S3467C298S3467C28__A1__7S3467C1[] = {
  0,
  ABISELECT(3024,1972),
  (VTBL_ENTRY)&(_ZTI8S3467C25[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C29D1Ev,_ZTv0_n24_N8S3467C29D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3467C29D0Ev,_ZTv0_n24_N8S3467C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C298S3467C28__7S3467C1[] = {
  ABISELECT(1368,900),
  ABISELECT(-1656,-1072),
  ABISELECT(-1384,-916),
  ABISELECT(-1656,-1072),
  ABISELECT(1368,900),
  (VTBL_ENTRY)&(_ZTI8S3467C29[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C29D1Ev,_ZTv0_n24_N8S3467C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C29D0Ev,_ZTv0_n24_N8S3467C29D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C298S3467C28__7S3467C1[] = {
  0,
  ABISELECT(3024,1972),
  (VTBL_ENTRY)&(_ZTI8S3467C29[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
extern void _ZN7S3467C52v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S3467C28D1Ev,_ZTv0_n24_N8S3467C28D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S3467C28D0Ev,_ZTv0_n24_N8S3467C28D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3467C11__8S3467C28__7S3467C1[] = {
  ABISELECT(1368,900),
  ABISELECT(-1656,-1072),
  ABISELECT(-1384,-916),
  ABISELECT(-1656,-1072),
  ABISELECT(1368,900),
  (VTBL_ENTRY)&(_ZTI8S3467C28[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C28D1Ev,_ZTv0_n24_N8S3467C28D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S3467C28D0Ev,_ZTv0_n24_N8S3467C28D0Ev),
};
extern void _ZN7S3467C52v2Ev();
static  VTBL_ENTRY _tg__ZTV7S3467C5__8S3467C28__7S3467C1[] = {
  0,
  ABISELECT(3024,1972),
  (VTBL_ENTRY)&(_ZTI8S3467C28[0]),
  (VTBL_ENTRY)&_ZN7S3467C52v2Ev,
};
static  VTT_ENTRY vtt_S3467C1[] = {
  {&(_ZTV7S3467C1[23]),  23,209},
  {&(_tg__ZTV7S3467C2__7S3467C1[20]),  20,23},
  {&(_tg__ZTV7S3467C37S3467C2__7S3467C1[11]),  11,14},
  {&(_tg__ZTV7S3467C4__7S3467C37S3467C2__7S3467C1[4]),  4,5},
  {&(_tg__ZTV7S3467C8__7S3467C37S3467C2__7S3467C1[10]),  10,13},
  {&(_tg__ZTV7S3467C9__7S3467C37S3467C2__7S3467C1[7]),  7,10},
  {&(_tg__ZTV7S3467C37S3467C2__7S3467C1[11]),  11,14},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C37S3467C2__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C37S3467C2__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C37S3467C2__7S3467C1[9]),  9,12},
  {&(_tg__ZTV8S3467C14__7S3467C37S3467C2__7S3467C1[8]),  8,11},
  {&(_tg__ZTV7S3467C4__7S3467C2__7S3467C1[4]),  4,5},
  {&(_tg__ZTV7S3467C8__7S3467C2__7S3467C1[10]),  10,13},
  {&(_tg__ZTV7S3467C9__7S3467C2__7S3467C1[7]),  7,10},
  {&(_tg__ZTV7S3467C2__7S3467C1[20]),  20,23},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C2__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C2__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C2__7S3467C1[9]),  9,12},
  {&(_tg__ZTV8S3467C14__7S3467C2__7S3467C1[8]),  8,11},
  {&(_tg__ZTV8S3467C17__7S3467C2__7S3467C1[12]),  12,15},
  {&(_tg__ZTV8S3467C17__7S3467C2__7S3467C1[12]),  12,15},
  {&(_tg__ZTV8S3467C17__7S3467C2__7S3467C1[12]),  12,15},
  {&(_tg__ZTV8S3467C20__7S3467C2__7S3467C1[4]),  4,5},
  {&(_tg__ZTV7S3467C48S3467C20__A2__7S3467C2__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C24__7S3467C2__7S3467C1[12]),  12,16},
  {&(_tg__ZTV8S3467C24__7S3467C2__7S3467C1[12]),  12,16},
  {&(_tg__ZTV8S3467C10__A1__7S3467C2__7S3467C1[4]),  4,5},
  {&(_tg__ZTV8S3467C30__7S3467C1[8]),  8,12},
  {&(_tg__ZTV8S3467C258S3467C30__A2__7S3467C1[8]),  8,12},
  {&(_tg__ZTV8S3467C11__8S3467C258S3467C30__A2__7S3467C1[6]),  6,9},
  {&(_tg__ZTV7S3467C5__8S3467C258S3467C30__A2__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C318S3467C30__7S3467C1[3]),  3,6},
  {&(_tg__ZTV7S3467C48S3467C318S3467C30__A3__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C118S3467C30__A3__7S3467C1[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C118S3467C30__A3__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C11__8S3467C30__7S3467C1[6]),  6,9},
  {&(_tg__ZTV7S3467C5__8S3467C30__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C31__8S3467C30__7S3467C1[3]),  3,6},
  {&(_tg__ZTV8S3467C11__A__8S3467C30__7S3467C1[5]),  5,8},
  {&(_ZTV7S3467C1[60]),  60,209},
  {&(_ZTV7S3467C1[71]),  71,209},
  {&(_ZTV7S3467C1[81]),  81,209},
  {&(_ZTV7S3467C1[23]),  23,209},
  {&(_ZTV7S3467C1[89]),  89,209},
  {&(_ZTV7S3467C1[97]),  97,209},
  {&(_ZTV7S3467C1[109]),  109,209},
  {&(_ZTV7S3467C1[120]),  120,209},
  {&(_ZTV7S3467C1[135]),  135,209},
  {&(_ZTV7S3467C1[135]),  135,209},
  {&(_ZTV7S3467C1[135]),  135,209},
  {&(_ZTV7S3467C1[142]),  142,209},
  {&(_ZTV7S3467C1[146]),  146,209},
  {&(_ZTV7S3467C1[159]),  159,209},
  {&(_ZTV7S3467C1[159]),  159,209},
  {&(_ZTV7S3467C1[167]),  167,209},
  {&(_ZTV7S3467C1[181]),  181,209},
  {&(_ZTV7S3467C1[193]),  193,209},
  {&(_ZTV7S3467C1[205]),  205,209},
  {&(_ZTV7S3467C1[35]),  35,209},
  {&(_ZTV7S3467C1[42]),  42,209},
  {&(_ZTV7S3467C1[53]),  53,209},
  {&(_tg__ZTV7S3467C4__7S3467C1[3]),  3,4},
  {&(_tg__ZTV7S3467C8__7S3467C1[9]),  9,12},
  {&(_tg__ZTV7S3467C9__7S3467C8__7S3467C1[7]),  7,10},
  {&(_tg__ZTV7S3467C5__7S3467C8__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C8__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C8__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C8__7S3467C1[9]),  9,12},
  {&(_tg__ZTV8S3467C14__7S3467C8__7S3467C1[8]),  8,11},
  {&(_tg__ZTV7S3467C9__7S3467C1[6]),  6,9},
  {&(_tg__ZTV8S3467C107S3467C9__7S3467C1[4]),  4,5},
  {&(_tg__ZTV7S3467C5__8S3467C107S3467C9__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C1[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C117S3467C9__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C118S3467C127S3467C9__A1__7S3467C1[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C118S3467C127S3467C9__A1__7S3467C1[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C127S3467C9__7S3467C1[3]),  3,4},
  {&(_tg__ZTV7S3467C5__7S3467C9__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C11__7S3467C9__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C12__7S3467C9__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C1[7]),  7,10},
  {&(_tg__ZTV8S3467C14__8S3467C13__7S3467C1[8]),  8,11},
  {&(_tg__ZTV7S3467C5__8S3467C13__7S3467C1[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C13__7S3467C1[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C13__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C13__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C14__7S3467C1[6]),  6,9},
  {&(_tg__ZTV7S3467C48S3467C14__A1__7S3467C1[3]),  3,4},
  {&(_tg__ZTV7S3467C5__8S3467C14__7S3467C1[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C14__7S3467C1[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C14__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C14__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C17__7S3467C1[12]),  12,15},
  {&(_tg__ZTV7S3467C4__8S3467C17__7S3467C1[4]),  4,5},
  {&(_tg__ZTV8S3467C17__7S3467C1[12]),  12,15},
  {&(_tg__ZTV8S3467C17__7S3467C1[12]),  12,15},
  {&(_tg__ZTV7S3467C5__A1__8S3467C17__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C20__8S3467C17__7S3467C1[4]),  4,5},
  {&(_tg__ZTV7S3467C48S3467C20__A1__8S3467C17__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C18__7S3467C1[8]),  8,11},
  {&(_tg__ZTV8S3467C18__7S3467C1[8]),  8,11},
  {&(_tg__ZTV7S3467C5__8S3467C18__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C11__A2__7S3467C1[5]),  5,8},
  {&(_tg__ZTV7S3467C5__8S3467C11__A2__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C20__7S3467C1[3]),  3,4},
  {&(_tg__ZTV7S3467C48S3467C20__A2__7S3467C1[3]),  3,4},
  {&(_tg__ZTV7S3467C4__8S3467C20__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C24__7S3467C1[12]),  12,16},
  {&(_tg__ZTV7S3467C5__8S3467C24__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C11__8S3467C24__7S3467C1[6]),  6,9},
  {&(_tg__ZTV8S3467C24__7S3467C1[12]),  12,16},
  {&(_tg__ZTV8S3467C10__8S3467C24__7S3467C1[4]),  4,5},
  {&(_tg__ZTV8S3467C25__7S3467C1[8]),  8,12},
  {&(_tg__ZTV8S3467C11__8S3467C25__7S3467C1[6]),  6,9},
  {&(_tg__ZTV7S3467C5__8S3467C25__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C10__A1__7S3467C1[4]),  4,5},
  {&(_tg__ZTV7S3467C5__8S3467C10__A1__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C26__7S3467C1[12]),  12,15},
  {&(_tg__ZTV7S3467C38S3467C26__A1__7S3467C1[11]),  11,14},
  {&(_tg__ZTV7S3467C4__7S3467C38S3467C26__A1__7S3467C1[4]),  4,5},
  {&(_tg__ZTV7S3467C8__7S3467C38S3467C26__A1__7S3467C1[10]),  10,13},
  {&(_tg__ZTV7S3467C9__7S3467C38S3467C26__A1__7S3467C1[7]),  7,10},
  {&(_tg__ZTV7S3467C5__A1__7S3467C38S3467C26__A1__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C117S3467C9__7S3467C38S3467C26__A1__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__7S3467C38S3467C26__A1__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C13__7S3467C38S3467C26__A1__7S3467C1[9]),  9,12},
  {&(_tg__ZTV8S3467C14__7S3467C38S3467C26__A1__7S3467C1[8]),  8,11},
  {&(_tg__ZTV8S3467C27__8S3467C26__7S3467C1[9]),  9,12},
  {&(_tg__ZTV8S3467C14__8S3467C26__7S3467C1[8]),  8,11},
  {&(_tg__ZTV7S3467C5__8S3467C26__7S3467C1[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C26__7S3467C1[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C26__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C26__7S3467C1[5]),  5,8},
  {&(_tg__ZTV7S3467C4__A1__8S3467C26__7S3467C1[4]),  4,5},
  {&(_tg__ZTV7S3467C8__8S3467C26__7S3467C1[10]),  10,13},
  {&(_tg__ZTV8S3467C13__8S3467C26__7S3467C1[9]),  9,12},
  {&(_tg__ZTV8S3467C27__7S3467C1[8]),  8,11},
  {&(_tg__ZTV8S3467C14__8S3467C27__7S3467C1[8]),  8,11},
  {&(_tg__ZTV7S3467C5__8S3467C27__7S3467C1[3]),  3,4},
  {&(_tg__ZTV7S3467C9__8S3467C27__7S3467C1[7]),  7,10},
  {&(_tg__ZTV8S3467C117S3467C9__8S3467C27__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C127S3467C9__8S3467C27__7S3467C1[5]),  5,8},
  {&(_tg__ZTV8S3467C28__7S3467C1[8]),  8,12},
  {&(_tg__ZTV8S3467C298S3467C28__7S3467C1[8]),  8,12},
  {&(_tg__ZTV8S3467C258S3467C298S3467C28__A1__7S3467C1[8]),  8,12},
  {&(_tg__ZTV8S3467C11__8S3467C258S3467C298S3467C28__A1__7S3467C1[6]),  6,9},
  {&(_tg__ZTV7S3467C5__8S3467C258S3467C298S3467C28__A1__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C11__8S3467C298S3467C28__7S3467C1[6]),  6,9},
  {&(_tg__ZTV7S3467C5__8S3467C298S3467C28__7S3467C1[3]),  3,4},
  {&(_tg__ZTV8S3467C11__8S3467C28__7S3467C1[6]),  6,9},
  {&(_tg__ZTV7S3467C5__8S3467C28__7S3467C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S3467C1[];
extern  VTBL_ENTRY _ZTV7S3467C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3467C1[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C29D0Ev,_ZTv0_n24_N8S3467C29D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C29D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C29D1Ev,_ZTv0_n24_N8S3467C29D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C29D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C28D0Ev,_ZTv0_n24_N8S3467C28D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C28D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C28D1Ev,_ZTv0_n24_N8S3467C28D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C28D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S3467C26D0Ev,_ZTv0_n36_N8S3467C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3467C26D0Ev,_ZThn4_N8S3467C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S3467C26D1Ev,_ZTv0_n36_N8S3467C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S3467C26D1Ev,_ZThn4_N8S3467C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C24D0Ev,_ZTv0_n24_N8S3467C24D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C24D1Ev,_ZTv0_n24_N8S3467C24D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C18D0Ev,_ZTv0_n24_N8S3467C18D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C18D1Ev,_ZTv0_n24_N8S3467C18D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C17D0Ev,_ZTv0_n24_N8S3467C17D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C17D1Ev,_ZTv0_n24_N8S3467C17D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C13D0Ev,_ZTv0_n32_N8S3467C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3467C13D0Ev,_ZThn56_N8S3467C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S3467C13D1Ev,_ZTv0_n32_N8S3467C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S3467C13D1Ev,_ZThn56_N8S3467C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C8D0Ev,_ZTv0_n32_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N7S3467C8D0Ev,_ZThn832_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C8D1Ev,_ZTv0_n32_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N7S3467C8D1Ev,_ZThn832_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C8D0Ev,_ZTv0_n36_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N7S3467C8D0Ev,_ZThn776_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C8D1Ev,_ZTv0_n36_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N7S3467C8D1Ev,_ZThn776_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C8D0Ev,_ZTv0_n28_N7S3467C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3467C8D0Ev,_ZThn8_N7S3467C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C8D1Ev,_ZTv0_n28_N7S3467C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3467C8D1Ev,_ZThn8_N7S3467C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C25D0Ev,_ZTv0_n24_N8S3467C25D0Ev), // 
  (VTBL_ENTRY)_ZN8S3467C25D0Ev,
  (VTBL_ENTRY)_ZN8S3467C25D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S3467C25D0Ev,_ZThn1068_N8S3467C25D0Ev),
  (VTBL_ENTRY)_ZN8S3467C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C25D1Ev,_ZTv0_n24_N8S3467C25D1Ev), // 
  (VTBL_ENTRY)_ZN8S3467C25D1Ev,
  (VTBL_ENTRY)_ZN8S3467C25D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S3467C25D1Ev,_ZThn1068_N8S3467C25D1Ev),
  (VTBL_ENTRY)_ZN8S3467C25D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C30D0Ev,_ZTv0_n24_N8S3467C30D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S3467C30D0Ev,_ZThn1068_N8S3467C30D0Ev),
  (VTBL_ENTRY)_ZN8S3467C30D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S3467C30D1Ev,_ZTv0_n24_N8S3467C30D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1648_N8S3467C30D1Ev,_ZThn1068_N8S3467C30D1Ev),
  (VTBL_ENTRY)_ZN8S3467C30D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3467C2D0Ev,_ZTv0_n24_N7S3467C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1832_N7S3467C2D0Ev,_ZThn1196_N7S3467C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N7S3467C2D0Ev,_ZThn1072_N7S3467C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3467C2D1Ev,_ZTv0_n24_N7S3467C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1832_N7S3467C2D1Ev,_ZThn1196_N7S3467C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N7S3467C2D1Ev,_ZThn1072_N7S3467C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C2D0Ev,_ZTv0_n32_N7S3467C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N7S3467C2D0Ev,_ZThn1028_N7S3467C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C2D1Ev,_ZTv0_n32_N7S3467C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N7S3467C2D1Ev,_ZThn1028_N7S3467C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C2D0Ev,_ZTv0_n36_N7S3467C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1504_N7S3467C2D0Ev,_ZThn972_N7S3467C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C2D1Ev,_ZTv0_n36_N7S3467C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1504_N7S3467C2D1Ev,_ZThn972_N7S3467C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C2D0Ev,_ZTv0_n28_N7S3467C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3467C2D0Ev,_ZThn204_N7S3467C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C2D1Ev,_ZTv0_n28_N7S3467C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3467C2D1Ev,_ZThn204_N7S3467C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C2D0Ev,_ZTv0_n40_N7S3467C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S3467C2D0Ev,_ZThn196_N7S3467C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C2D1Ev,_ZTv0_n40_N7S3467C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S3467C2D1Ev,_ZThn196_N7S3467C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C3D0Ev,_ZTv0_n32_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N7S3467C3D0Ev,_ZThn1028_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C3D1Ev,_ZTv0_n32_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N7S3467C3D1Ev,_ZThn1028_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C3D0Ev,_ZTv0_n36_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1504_N7S3467C3D0Ev,_ZThn972_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C3D1Ev,_ZTv0_n36_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1504_N7S3467C3D1Ev,_ZThn972_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C3D0Ev,_ZTv0_n28_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3467C3D0Ev,_ZThn204_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C3D1Ev,_ZTv0_n28_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3467C3D1Ev,_ZThn204_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C3D0Ev,_ZTv0_n40_N7S3467C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S3467C3D0Ev,_ZThn196_N7S3467C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C3D1Ev,_ZTv0_n40_N7S3467C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S3467C3D1Ev,_ZThn196_N7S3467C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S3467C1D0Ev,_ZTv0_n52_N7S3467C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3000_N7S3467C1D0Ev,_ZThn1960_N7S3467C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N7S3467C1D1Ev,_ZTv0_n52_N7S3467C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3000_N7S3467C1D1Ev,_ZThn1960_N7S3467C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C1D0Ev,_ZTv0_n32_N7S3467C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N7S3467C1D0Ev,_ZThn1028_N7S3467C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S3467C1D1Ev,_ZTv0_n32_N7S3467C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1568_N7S3467C1D1Ev,_ZThn1028_N7S3467C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C1D0Ev,_ZTv0_n36_N7S3467C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3008_N7S3467C1D0Ev,_ZThn1964_N7S3467C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1504_N7S3467C1D0Ev,_ZThn972_N7S3467C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S3467C1D1Ev,_ZTv0_n36_N7S3467C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3008_N7S3467C1D1Ev,_ZThn1964_N7S3467C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1504_N7S3467C1D1Ev,_ZThn972_N7S3467C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C1D0Ev,_ZTv0_n28_N7S3467C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3467C1D0Ev,_ZThn204_N7S3467C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S3467C1D1Ev,_ZTv0_n28_N7S3467C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3467C1D1Ev,_ZThn204_N7S3467C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C1D0Ev,_ZTv0_n40_N7S3467C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S3467C1D0Ev,_ZThn196_N7S3467C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S3467C1D1Ev,_ZTv0_n40_N7S3467C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S3467C1D1Ev,_ZThn196_N7S3467C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3467C1D0Ev,_ZTv0_n24_N7S3467C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3024_N7S3467C1D0Ev,_ZThn1972_N7S3467C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1832_N7S3467C1D0Ev,_ZThn1196_N7S3467C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N7S3467C1D0Ev,_ZThn1072_N7S3467C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3467C1D0Ev,_ZThn4_N7S3467C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S3467C1D1Ev,_ZTv0_n24_N7S3467C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn3024_N7S3467C1D1Ev,_ZThn1972_N7S3467C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1832_N7S3467C1D1Ev,_ZThn1196_N7S3467C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N7S3467C1D1Ev,_ZThn1072_N7S3467C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S3467C1D1Ev,_ZThn4_N7S3467C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3467C1 = {  "S3467C1", // class name
  bases_S3467C1, 61,
  &(vtc_S3467C1[0]), // expected_vtbl_contents
  &(vtt_S3467C1[0]), // expected_vtt_contents
  ABISELECT(3040,1980), // object size
  NSPAIRA(_ZTI7S3467C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3467C1),209, //virtual function table var
  23, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3467C1),152, //virtual table table var
  43, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S19438C5C1Ev();
extern void _ZN8S19438C5D1Ev();
Name_Map name_map_S19438C5[] = {
  NSPAIR(_ZN8S19438C5C1Ev),
  NSPAIR(_ZN8S19438C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19438C5[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C5[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
Class_Descriptor cd_S19438C5 = {  "S19438C5", // class name
  0,0,//no base classes
  &(vtc_S19438C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19438C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19438C5),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  S19438C4  : S19438C5 , virtual S20997C6 , S4227C37 {
  void *s19438c4f0[10];
  ~S19438C4(); // tgen
  S19438C4(); // tgen
};
//SIG(-1 S19438C4) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S19438C4()
{
  extern Class_Descriptor cd_S19438C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S19438C4, buf);
    S19438C4 *dp, &lv = *(dp=new (buf) S19438C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S19438C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C4)");
    check_base_class_offset(lv, (S19438C5*), 0, "S19438C4");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S19438C4");
    check_base_class_offset(lv, (S4227C37*), 0, "S19438C4");
    check_field_offset(lv, s19438c4f0, ABISELECT(8,4), "S19438C4.s19438c4f0");
    test_class_info(&lv, &cd_S19438C4);
    dp->~S19438C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C4(Test_S19438C4, "S19438C4", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN8S19438C4C1Ev();
extern void _ZN8S19438C4D1Ev();
Name_Map name_map_S19438C4[] = {
  NSPAIR(_ZN8S19438C4C1Ev),
  NSPAIR(_ZN8S19438C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S19438C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19438C4[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C4[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S19438C4[];
static  VTT_ENTRY vtt_S19438C4[] = {
  {&(_ZTV8S19438C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
Class_Descriptor cd_S19438C4 = {  "S19438C4", // class name
  bases_S19438C4, 3,
  &(vtc_S19438C4[0]), // expected_vtbl_contents
  &(vtt_S19438C4[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI8S19438C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19438C4),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19438C4),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  S19438C10  : virtual S19438C5 {
  ::S19438C4 s19438c10f0[9];
  ~S19438C10(); // tgen
  S19438C10(); // tgen
};
//SIG(-1 S19438C10) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S19438C10()
{
  extern Class_Descriptor cd_S19438C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S19438C10, buf);
    S19438C10 *dp, &lv = *(dp=new (buf) S19438C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S19438C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C10)");
    check_base_class_offset(lv, (S19438C5*), 0, "S19438C10");
    check_field_offset(lv, s19438c10f0, ABISELECT(8,4), "S19438C10.s19438c10f0");
    test_class_info(&lv, &cd_S19438C10);
    dp->~S19438C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C10(Test_S19438C10, "S19438C10", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN9S19438C10C1Ev();
extern void _ZN9S19438C10D1Ev();
Name_Map name_map_S19438C10[] = {
  NSPAIR(_ZN9S19438C10C1Ev),
  NSPAIR(_ZN9S19438C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
static Base_Class bases_S19438C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    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 _ZTI9S19438C10[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S19438C10[];
static  VTT_ENTRY vtt_S19438C10[] = {
  {&(_ZTV9S19438C10[4]),  4,5},
  {&(_ZTV9S19438C10[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
Class_Descriptor cd_S19438C10 = {  "S19438C10", // class name
  bases_S19438C10, 1,
  &(vtc_S19438C10[0]), // expected_vtbl_contents
  &(vtt_S19438C10[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI9S19438C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19438C10),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C10),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  S19438C11  : virtual S20997C6 , virtual S19438C5 , S4227C37 {
  virtual  ~S19438C11(); // _ZN9S19438C11D2Ev
  S19438C11(); // tgen
};
//SIG(-1 S19438C11) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S19438C11()
{
  extern Class_Descriptor cd_S19438C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19438C11, buf);
    S19438C11 *dp, &lv = *(dp=new (buf) S19438C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19438C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C11)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S19438C11");
    check_base_class_offset(lv, (S19438C5*), 0, "S19438C11");
    check_base_class_offset(lv, (S4227C37*), 0, "S19438C11");
    test_class_info(&lv, &cd_S19438C11);
    dp->~S19438C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C11(Test_S19438C11, "S19438C11", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S19438C11C1Ev();
extern void _ZN9S19438C11D2Ev();
Name_Map name_map_S19438C11[] = {
  NSPAIR(_ZN9S19438C11C1Ev),
  NSPAIR(_ZN9S19438C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S19438C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19438C5,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C11[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY vtc_S19438C11[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern VTBL_ENTRY _ZTV9S19438C11[];
static  VTT_ENTRY vtt_S19438C11[] = {
  {&(_ZTV9S19438C11[5]),  5,8},
  {&(_ZTV9S19438C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
Class_Descriptor cd_S19438C11 = {  "S19438C11", // class name
  bases_S19438C11, 3,
  &(vtc_S19438C11[0]), // expected_vtbl_contents
  &(vtt_S19438C11[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S19438C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19438C11),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C11),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  S19438C12  : S19438C11 {
  virtual  ~S19438C12(); // _ZN9S19438C12D2Ev
  S19438C12(); // tgen
};
//SIG(-1 S19438C12) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S19438C12()
{
  extern Class_Descriptor cd_S19438C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19438C12, buf);
    S19438C12 *dp, &lv = *(dp=new (buf) S19438C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19438C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C12)");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*), ABISELECT(8,4), "S19438C12");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*), 0, "S19438C12");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*), 0, "S19438C12");
    check_base_class_offset(lv, (S19438C11*), 0, "S19438C12");
    test_class_info(&lv, &cd_S19438C12);
    dp->~S19438C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C12(Test_S19438C12, "S19438C12", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S19438C12C1Ev();
extern void _ZN9S19438C12D2Ev();
Name_Map name_map_S19438C12[] = {
  NSPAIR(_ZN9S19438C12C1Ev),
  NSPAIR(_ZN9S19438C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
static Base_Class bases_S19438C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C5,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C12[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C12D1Ev();
extern void _ZN9S19438C12D0Ev();
static  VTBL_ENTRY vtc_S19438C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S19438C12[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
static  VTT_ENTRY vtt_S19438C12[] = {
  {&(_ZTV9S19438C12[5]),  5,8},
  {&(_tg__ZTV9S19438C11__9S19438C12[5]),  5,8},
  {&(_tg__ZTV9S19438C11__9S19438C12[5]),  5,8},
  {&(_ZTV9S19438C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19438C12[];
extern  VTBL_ENTRY _ZTV9S19438C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C12[];
Class_Descriptor cd_S19438C12 = {  "S19438C12", // class name
  bases_S19438C12, 4,
  &(vtc_S19438C12[0]), // expected_vtbl_contents
  &(vtt_S19438C12[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S19438C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19438C12),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C12),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  S19438C9  : virtual S4227C37 , S19438C10 , S19438C11 , S19438C12 {
  ~S19438C9(); // tgen
  S19438C9(); // tgen
};
//SIG(-1 S19438C9) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S19438C9()
{
  extern Class_Descriptor cd_S19438C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S19438C9, buf);
    S19438C9 *dp, &lv = *(dp=new (buf) S19438C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S19438C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C9)");
    /*is_ambiguous_... S19438C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S19438C9");
    check_base_class_offset(lv, (S19438C5*)(S19438C10*), 0, "S19438C9");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C11*), 0, "S19438C9");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C12*), 0, "S19438C9");
    check_base_class_offset(lv, (S19438C10*), 0, "S19438C9");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C11*), ABISELECT(1176,768), "S19438C9");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C12*), ABISELECT(1176,768), "S19438C9");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C11*), ABISELECT(1160,760), "S19438C9");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C11*), ABISELECT(1160,760), "S19438C9");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C12*), ABISELECT(1168,764), "S19438C9");
    check_base_class_offset(lv, (S19438C11*)(S19438C12*), ABISELECT(1168,764), "S19438C9");
    check_base_class_offset(lv, (S19438C12*), ABISELECT(1168,764), "S19438C9");
    test_class_info(&lv, &cd_S19438C9);
    dp->~S19438C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C9(Test_S19438C9, "S19438C9", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN8S19438C9C1Ev();
extern void _ZN8S19438C9D1Ev();
Name_Map name_map_S19438C9[] = {
  NSPAIR(_ZN8S19438C9C1Ev),
  NSPAIR(_ZN8S19438C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C12;
extern VTBL_ENTRY _ZTI9S19438C12[];
extern  VTBL_ENTRY _ZTV9S19438C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C12[];
static Base_Class bases_S19438C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19438C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19438C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19438C12,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19438C9[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C9D1Ev();
extern void _ZN8S19438C9D0Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev)();
static  VTBL_ENTRY vtc_S19438C9[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19438C9[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C10__8S19438C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C11__8S19438C9[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C11__8S19438C9[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C12D1Ev();
extern void _ZN9S19438C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C12__8S19438C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C119S19438C12__A1__8S19438C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C119S19438C12__A1__8S19438C9[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C12__8S19438C9[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
static  VTT_ENTRY vtt_S19438C9[] = {
  {&(_ZTV8S19438C9[6]),  6,25},
  {&(_tg__ZTV9S19438C10__8S19438C9[4]),  4,5},
  {&(_tg__ZTV9S19438C10__8S19438C9[4]),  4,5},
  {&(_tg__ZTV9S19438C11__8S19438C9[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C11__8S19438C9[3]),  3,4},
  {&(_tg__ZTV9S19438C12__8S19438C9[5]),  5,8},
  {&(_tg__ZTV9S19438C119S19438C12__A1__8S19438C9[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C119S19438C12__A1__8S19438C9[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C12__8S19438C9[3]),  3,4},
  {&(_ZTV8S19438C9[6]),  6,25},
  {&(_ZTV8S19438C9[14]),  14,25},
  {&(_ZTV8S19438C9[22]),  22,25},
};
extern VTBL_ENTRY _ZTI8S19438C9[];
extern  VTBL_ENTRY _ZTV8S19438C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C9[];
Class_Descriptor cd_S19438C9 = {  "S19438C9", // class name
  bases_S19438C9, 9,
  &(vtc_S19438C9[0]), // expected_vtbl_contents
  &(vtt_S19438C9[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI8S19438C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19438C9),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19438C9),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  S19438C14  : virtual S19438C5 , S19438C4 , virtual S19438C9 {
  virtual  ~S19438C14(); // _ZN9S19438C14D2Ev
  S19438C14(); // tgen
};
//SIG(-1 S19438C14) C1{ VBC2{ v1} BC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC5 BC7{ VBC2 FC3[9]} BC8{ VBC4 VBC2 BC5 vd} BC9{ BC8 vd}} vd}


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

static void Test_S19438C14()
{
  extern Class_Descriptor cd_S19438C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(165,215)];
    init_test(&cd_S19438C14, buf);
    S19438C14 *dp, &lv = *(dp=new (buf) S19438C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1312,856), "sizeof(S19438C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C14)");
    /*is_ambiguous_... S19438C14::S19438C5 */ AMB_check_base_class_offset(lv, (S19438C5*), ABISELECT(128,84), "S19438C14");
    check_base_class_offset(lv, (S19438C5*)(S19438C10*)(S19438C9*), ABISELECT(128,84), "S19438C14");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C9*), ABISELECT(128,84), "S19438C14");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(128,84), "S19438C14");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*), 0, "S19438C14");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*), ABISELECT(88,44), "S19438C14");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C9*), ABISELECT(88,44), "S19438C14");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(88,44), "S19438C14");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*), 0, "S19438C14");
    check_base_class_offset(lv, (S19438C4*), 0, "S19438C14");
    /*is_ambiguous_... S19438C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C9*), ABISELECT(1304,852), "S19438C14");
    check_base_class_offset(lv, (S19438C10*)(S19438C9*), ABISELECT(128,84), "S19438C14");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C9*), ABISELECT(1288,844), "S19438C14");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C11*)(S19438C9*), ABISELECT(1288,844), "S19438C14");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1296,848), "S19438C14");
    check_base_class_offset(lv, (S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1296,848), "S19438C14");
    check_base_class_offset(lv, (S19438C12*)(S19438C9*), ABISELECT(1296,848), "S19438C14");
    check_base_class_offset(lv, (S19438C9*), ABISELECT(128,84), "S19438C14");
    test_class_info(&lv, &cd_S19438C14);
    dp->~S19438C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C14(Test_S19438C14, "S19438C14", ABISELECT(1312,856));

#else // __cplusplus

extern void _ZN9S19438C14C1Ev();
extern void _ZN9S19438C14D2Ev();
Name_Map name_map_S19438C14[] = {
  NSPAIR(_ZN9S19438C14C1Ev),
  NSPAIR(_ZN9S19438C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C12;
extern VTBL_ENTRY _ZTI9S19438C12[];
extern  VTBL_ENTRY _ZTV9S19438C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C12[];
extern Class_Descriptor cd_S19438C9;
extern VTBL_ENTRY _ZTI8S19438C9[];
extern  VTBL_ENTRY _ZTV8S19438C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C9[];
static Base_Class bases_S19438C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19438C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19438C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C10,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1288,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1288,844), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1296,848), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19438C12,    ABISELECT(1296,848), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S19438C9,    ABISELECT(128,84), //bcp->offset
    9, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C14[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C14D1Ev();
extern void _ZN9S19438C14D0Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZThn128_N9S19438C14D1Ev,_ZThn84_N9S19438C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev)();
extern void ABISELECT(_ZThn128_N9S19438C14D0Ev,_ZThn84_N9S19438C14D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY vtc_S19438C14[] = {
  ABISELECT(1304,852),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D0Ev,
  ABISELECT(-128,-84),
  -40,
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19438C14[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C14[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C9D1Ev();
extern void _ZN8S19438C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C14[] = {
  -40,
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C108S19438C9__9S19438C14[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C14[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C118S19438C9__9S19438C14[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C12D1Ev();
extern void _ZN9S19438C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C14[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C119S19438C128S19438C9__A1__9S19438C14[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__9S19438C14[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C128S19438C9__9S19438C14[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__8S19438C9__9S19438C14[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C12__8S19438C9__9S19438C14[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev),
};
static  VTT_ENTRY vtt_S19438C14[] = {
  {&(_ZTV9S19438C14[6]),  6,35},
  {&(_tg__ZTV8S19438C4__9S19438C14[3]),  3,4},
  {&(_ZTV9S19438C14[16]),  16,35},
  {&(_ZTV9S19438C14[16]),  16,35},
  {&(_ZTV9S19438C14[24]),  24,35},
  {&(_ZTV9S19438C14[32]),  32,35},
  {&(_tg__ZTV8S19438C9__9S19438C14[6]),  6,9},
  {&(_tg__ZTV9S19438C108S19438C9__9S19438C14[4]),  4,5},
  {&(_tg__ZTV9S19438C108S19438C9__9S19438C14[4]),  4,5},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C14[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C118S19438C9__9S19438C14[3]),  3,4},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C14[5]),  5,8},
  {&(_tg__ZTV9S19438C119S19438C128S19438C9__A1__9S19438C14[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__9S19438C14[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C128S19438C9__9S19438C14[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C14[6]),  6,9},
  {&(_tg__ZTV9S19438C11__8S19438C9__9S19438C14[5]),  5,8},
  {&(_tg__ZTV9S19438C12__8S19438C9__9S19438C14[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19438C14[];
extern  VTBL_ENTRY _ZTV9S19438C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C14[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19438C14D0Ev,_ZThn84_N9S19438C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19438C14D1Ev,_ZThn84_N9S19438C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19438C14 = {  "S19438C14", // class name
  bases_S19438C14, 13,
  &(vtc_S19438C14[0]), // expected_vtbl_contents
  &(vtt_S19438C14[0]), // expected_vtt_contents
  ABISELECT(1312,856), // object size
  NSPAIRA(_ZTI9S19438C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19438C14),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C14),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C16  : S20997C6 , S19438C5 {
  ~S19438C16(); // tgen
  S19438C16(); // tgen
};
//SIG(-1 S19438C16) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S19438C16()
{
  extern Class_Descriptor cd_S19438C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19438C16, buf);
    S19438C16 *dp, &lv = *(dp=new (buf) S19438C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19438C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C16)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S19438C16");
    check_base_class_offset(lv, (S19438C5*), 0, "S19438C16");
    test_class_info(&lv, &cd_S19438C16);
    dp->~S19438C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C16(Test_S19438C16, "S19438C16", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S19438C16C1Ev();
extern void _ZN9S19438C16D1Ev();
Name_Map name_map_S19438C16[] = {
  NSPAIR(_ZN9S19438C16C1Ev),
  NSPAIR(_ZN9S19438C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
static Base_Class bases_S19438C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19438C5,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C16[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C16[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
Class_Descriptor cd_S19438C16 = {  "S19438C16", // class name
  bases_S19438C16, 2,
  &(vtc_S19438C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S19438C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19438C16),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C15  : S19438C16 {
  long double s19438c15f0;
  ~S19438C15(); // tgen
  S19438C15(); // tgen
};
//SIG(-1 S19438C15) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} FD}


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

static void Test_S19438C15()
{
  extern Class_Descriptor cd_S19438C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,15)];
    init_test(&cd_S19438C15, buf);
    S19438C15 *dp, &lv = *(dp=new (buf) S19438C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S19438C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19438C15)");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*), ABISELECT(8,4), "S19438C15");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*), 0, "S19438C15");
    check_base_class_offset(lv, (S19438C16*), 0, "S19438C15");
    check_field_offset(lv, s19438c15f0, ABISELECT(48,44), "S19438C15.s19438c15f0");
    test_class_info(&lv, &cd_S19438C15);
    dp->~S19438C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C15(Test_S19438C15, "S19438C15", ABISELECT(64,56));

#else // __cplusplus

extern void _ZN9S19438C15C1Ev();
extern void _ZN9S19438C15D1Ev();
Name_Map name_map_S19438C15[] = {
  NSPAIR(_ZN9S19438C15C1Ev),
  NSPAIR(_ZN9S19438C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
static Base_Class bases_S19438C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19438C5,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19438C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19438C15[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C15[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTI9S19438C15[];
extern  VTBL_ENTRY _ZTV9S19438C15[];
Class_Descriptor cd_S19438C15 = {  "S19438C15", // class name
  bases_S19438C15, 3,
  &(vtc_S19438C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,56), // object size
  NSPAIRA(_ZTI9S19438C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19438C15),3, //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  S19438C13  : virtual S19438C14 , S19438C15 {
  ~S19438C13(); // tgen
  S19438C13(); // tgen
};
//SIG(-1 S19438C13) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} BC11{ BC12{ BC5 BC3} FD}}


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

static void Test_S19438C13()
{
  extern Class_Descriptor cd_S19438C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S19438C13, buf);
    S19438C13 *dp, &lv = *(dp=new (buf) S19438C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S19438C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19438C13)");
    /*is_ambiguous_... S19438C14::S19438C5 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C14*), ABISELECT(192,140), "S19438C13");
    check_base_class_offset(lv, (S19438C5*)(S19438C10*)(S19438C9*), ABISELECT(192,140), "S19438C13");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C9*), ABISELECT(192,140), "S19438C13");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(192,140), "S19438C13");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*)(S19438C14*), ABISELECT(64,56), "S19438C13");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*)(S19438C14*), ABISELECT(152,100), "S19438C13");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C9*), ABISELECT(152,100), "S19438C13");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(152,100), "S19438C13");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*)(S19438C14*), ABISELECT(64,56), "S19438C13");
    check_base_class_offset(lv, (S19438C4*)(S19438C14*), ABISELECT(64,56), "S19438C13");
    /*is_ambiguous_... S19438C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C9*), 0, "S19438C13");
    check_base_class_offset(lv, (S19438C10*)(S19438C9*), ABISELECT(192,140), "S19438C13");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C9*), ABISELECT(1352,900), "S19438C13");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C11*)(S19438C9*), ABISELECT(1352,900), "S19438C13");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1360,904), "S19438C13");
    check_base_class_offset(lv, (S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1360,904), "S19438C13");
    check_base_class_offset(lv, (S19438C12*)(S19438C9*), ABISELECT(1360,904), "S19438C13");
    check_base_class_offset(lv, (S19438C9*)(S19438C14*), ABISELECT(192,140), "S19438C13");
    check_base_class_offset(lv, (S19438C14*), ABISELECT(64,56), "S19438C13");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*)(S19438C15*), ABISELECT(8,4), "S19438C13");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*)(S19438C15*), 0, "S19438C13");
    check_base_class_offset(lv, (S19438C16*)(S19438C15*), 0, "S19438C13");
    check_base_class_offset(lv, (S19438C15*), 0, "S19438C13");
    test_class_info(&lv, &cd_S19438C13);
    dp->~S19438C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C13(Test_S19438C13, "S19438C13", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN9S19438C13C1Ev();
extern void _ZN9S19438C13D1Ev();
Name_Map name_map_S19438C13[] = {
  NSPAIR(_ZN9S19438C13C1Ev),
  NSPAIR(_ZN9S19438C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C12;
extern VTBL_ENTRY _ZTI9S19438C12[];
extern  VTBL_ENTRY _ZTV9S19438C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C12[];
extern Class_Descriptor cd_S19438C9;
extern VTBL_ENTRY _ZTI8S19438C9[];
extern  VTBL_ENTRY _ZTV8S19438C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C9[];
extern Class_Descriptor cd_S19438C14;
extern VTBL_ENTRY _ZTI9S19438C14[];
extern  VTBL_ENTRY _ZTV9S19438C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C14[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C15;
extern VTBL_ENTRY _ZTI9S19438C15[];
extern  VTBL_ENTRY _ZTV9S19438C15[];
static Base_Class bases_S19438C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19438C5,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S19438C4,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C10,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19438C11,    ABISELECT(1352,900), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19438C12,    ABISELECT(1360,904), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19438C9,    ABISELECT(192,140), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19438C14,    ABISELECT(64,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19438C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19438C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C13[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C13D1Ev();
extern void _ZN9S19438C13D0Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S19438C13D1Ev,_ZThn56_N9S19438C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S19438C13D0Ev,_ZThn56_N9S19438C13D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZThn192_N9S19438C13D1Ev,_ZThn140_N9S19438C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev)();
extern void ABISELECT(_ZThn192_N9S19438C13D0Ev,_ZThn140_N9S19438C13D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY vtc_S19438C13[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D0Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S19438C13[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C14D1Ev();
extern void _ZN9S19438C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C14__9S19438C13[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C14__9S19438C13[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZThn128_N9S19438C14D1Ev,_ZThn84_N9S19438C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev)();
extern void ABISELECT(_ZThn128_N9S19438C14D0Ev,_ZThn84_N9S19438C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C14__9S19438C13[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C14__9S19438C13[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C14__9S19438C13[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C9D1Ev();
extern void _ZN8S19438C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C13[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C108S19438C9__9S19438C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C13[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C118S19438C9__9S19438C13[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C12D1Ev();
extern void _ZN9S19438C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C13[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C119S19438C128S19438C9__A1__9S19438C13[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__9S19438C13[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C128S19438C9__9S19438C13[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__8S19438C9__9S19438C13[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C12__8S19438C9__9S19438C13[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev),
};
static  VTT_ENTRY vtt_S19438C13[] = {
  {&(_ZTV9S19438C13[7]),  7,47},
  {&(_ZTV9S19438C13[18]),  18,47},
  {&(_ZTV9S19438C13[28]),  28,47},
  {&(_ZTV9S19438C13[28]),  28,47},
  {&(_ZTV9S19438C13[36]),  36,47},
  {&(_ZTV9S19438C13[44]),  44,47},
  {&(_tg__ZTV9S19438C14__9S19438C13[6]),  6,9},
  {&(_tg__ZTV8S19438C49S19438C14__9S19438C13[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C14__9S19438C13[7]),  7,10},
  {&(_tg__ZTV8S19438C9__9S19438C14__9S19438C13[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C14__9S19438C13[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C14__9S19438C13[5]),  5,8},
  {&(_tg__ZTV8S19438C9__9S19438C13[6]),  6,9},
  {&(_tg__ZTV9S19438C108S19438C9__9S19438C13[4]),  4,5},
  {&(_tg__ZTV9S19438C108S19438C9__9S19438C13[4]),  4,5},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C13[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C118S19438C9__9S19438C13[3]),  3,4},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C13[5]),  5,8},
  {&(_tg__ZTV9S19438C119S19438C128S19438C9__A1__9S19438C13[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__9S19438C13[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C128S19438C9__9S19438C13[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C13[6]),  6,9},
  {&(_tg__ZTV9S19438C11__8S19438C9__9S19438C13[5]),  5,8},
  {&(_tg__ZTV9S19438C12__8S19438C9__9S19438C13[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19438C13[];
extern  VTBL_ENTRY _ZTV9S19438C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C13[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19438C14D0Ev,_ZThn84_N9S19438C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19438C14D1Ev,_ZThn84_N9S19438C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19438C13D0Ev,_ZThn140_N9S19438C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19438C13D1Ev,_ZThn140_N9S19438C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C13D0Ev,_ZThn56_N9S19438C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C13D1Ev,_ZThn56_N9S19438C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19438C13 = {  "S19438C13", // class name
  bases_S19438C13, 18,
  &(vtc_S19438C13[0]), // expected_vtbl_contents
  &(vtt_S19438C13[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI9S19438C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19438C13),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C13),24, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C8  : virtual S20997C6 , virtual S19438C9 , virtual S19438C13 {
  void *s19438c8f0;
  virtual  ~S19438C8(); // _ZN8S19438C8D2Ev
  S19438C8(); // tgen
};
//SIG(-1 S19438C8) C1{ VBC2{ m FL[5]} VBC3{ VBC4{ m} BC5{ VBC6{ v1} FC7{ BC6 VBC2 BC4 Fp[10]}[9]} BC8{ VBC2 VBC6 BC4 vd} BC9{ BC8 vd}} VBC10{ VBC11{ VBC6 BC7 VBC3 vd} BC12{ BC13{ BC2 BC6} FD}} vd Fp}


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

static void Test_S19438C8()
{
  extern Class_Descriptor cd_S19438C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,230)];
    init_test(&cd_S19438C8, buf);
    S19438C8 *dp, &lv = *(dp=new (buf) S19438C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,916), "sizeof(S19438C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19438C8)");
    /*is_ambiguous_... S19438C8::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(16,8), "S19438C8");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C9*), ABISELECT(16,8), "S19438C8");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(16,8), "S19438C8");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*)(S19438C14*), ABISELECT(16,8), "S19438C8");
    /*is_ambiguous_... S19438C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C9*), 0, "S19438C8");
    check_base_class_offset(lv, (S19438C5*)(S19438C10*)(S19438C9*), 0, "S19438C8");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C9*), 0, "S19438C8");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C12*)(S19438C9*), 0, "S19438C8");
    /*is_ambiguous_... S19438C14::S19438C5 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C14*), 0, "S19438C8");
    check_base_class_offset(lv, (S19438C10*)(S19438C9*), ABISELECT(56,48), "S19438C8");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C9*), ABISELECT(1216,808), "S19438C8");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C11*)(S19438C9*), ABISELECT(1216,808), "S19438C8");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1224,812), "S19438C8");
    check_base_class_offset(lv, (S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1224,812), "S19438C8");
    check_base_class_offset(lv, (S19438C12*)(S19438C9*), ABISELECT(1224,812), "S19438C8");
    check_base_class_offset(lv, (S19438C9*), ABISELECT(56,48), "S19438C8");
    check_base_class_offset(lv, (S19438C9*)(S19438C14*), ABISELECT(56,48), "S19438C8");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*)(S19438C14*), ABISELECT(1296,872), "S19438C8");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*)(S19438C14*), ABISELECT(1296,872), "S19438C8");
    check_base_class_offset(lv, (S19438C4*)(S19438C14*), ABISELECT(1296,872), "S19438C8");
    check_base_class_offset(lv, (S19438C14*)(S19438C13*), ABISELECT(1296,872), "S19438C8");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(1240,820), "S19438C8");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(1232,816), "S19438C8");
    check_base_class_offset(lv, (S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(1232,816), "S19438C8");
    check_base_class_offset(lv, (S19438C15*)(S19438C13*), ABISELECT(1232,816), "S19438C8");
    check_base_class_offset(lv, (S19438C13*), ABISELECT(1232,816), "S19438C8");
    check_field_offset(lv, s19438c8f0, ABISELECT(8,4), "S19438C8.s19438c8f0");
    test_class_info(&lv, &cd_S19438C8);
    dp->~S19438C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C8(Test_S19438C8, "S19438C8", ABISELECT(1392,916));

#else // __cplusplus

extern void _ZN8S19438C8C1Ev();
extern void _ZN8S19438C8D2Ev();
Name_Map name_map_S19438C8[] = {
  NSPAIR(_ZN8S19438C8C1Ev),
  NSPAIR(_ZN8S19438C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C12;
extern VTBL_ENTRY _ZTI9S19438C12[];
extern  VTBL_ENTRY _ZTV9S19438C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C12[];
extern Class_Descriptor cd_S19438C9;
extern VTBL_ENTRY _ZTI8S19438C9[];
extern  VTBL_ENTRY _ZTV8S19438C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C9[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S19438C14;
extern VTBL_ENTRY _ZTI9S19438C14[];
extern  VTBL_ENTRY _ZTV9S19438C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C14[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C15;
extern VTBL_ENTRY _ZTI9S19438C15[];
extern  VTBL_ENTRY _ZTV9S19438C15[];
extern Class_Descriptor cd_S19438C13;
extern VTBL_ENTRY _ZTI9S19438C13[];
extern  VTBL_ENTRY _ZTV9S19438C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C13[];
static Base_Class bases_S19438C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19438C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19438C10,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1216,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19438C11,    ABISELECT(1216,808), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1224,812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1224,812), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19438C12,    ABISELECT(1224,812), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19438C9,    ABISELECT(56,48), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19438C5,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_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_S4227C37,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C4,    ABISELECT(1296,872), //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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19438C14,    ABISELECT(1296,872), //bcp->offset
    50, //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
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1240,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C5,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19438C16,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19438C15,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19438C13,    ABISELECT(1232,816), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19438C8[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C8D1Ev();
extern void _ZN8S19438C8D0Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19438C8D1Ev,_ZTv0_n28_N8S19438C8D1Ev)();
extern void ABISELECT(_ZThn56_N8S19438C8D1Ev,_ZThn48_N8S19438C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19438C8D0Ev,_ZTv0_n28_N8S19438C8D0Ev)();
extern void ABISELECT(_ZThn56_N8S19438C8D0Ev,_ZThn48_N8S19438C8D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C8D1Ev,_ZTvn760_n28_N8S19438C8D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C8D0Ev,_ZTvn760_n28_N8S19438C8D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C8D1Ev,_ZTvn764_n28_N8S19438C8D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C8D0Ev,_ZTvn764_n28_N8S19438C8D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S19438C8D1Ev,_ZTv0_n36_N8S19438C8D1Ev)();
extern void ABISELECT(_ZThn1232_N8S19438C8D1Ev,_ZThn816_N8S19438C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19438C8D0Ev,_ZTv0_n36_N8S19438C8D0Ev)();
extern void ABISELECT(_ZThn1232_N8S19438C8D0Ev,_ZThn816_N8S19438C8D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19438C8D1Ev,_ZTv0_n32_N8S19438C8D1Ev)();
extern void ABISELECT(_ZThn1296_N8S19438C8D1Ev,_ZThn872_N8S19438C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19438C8D0Ev,_ZTv0_n32_N8S19438C8D0Ev)();
extern void ABISELECT(_ZThn1296_N8S19438C8D0Ev,_ZThn872_N8S19438C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19438C8[] = {
  ABISELECT(1296,872),
  ABISELECT(1232,816),
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C8D0Ev,
  ABISELECT(-56,-48),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C8D1Ev,_ZTv0_n28_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C8D0Ev,_ZTv0_n28_N8S19438C8D0Ev),
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(-1216,-808),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C8D1Ev,_ZTvn760_n28_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C8D0Ev,_ZTvn760_n28_N8S19438C8D0Ev),
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(-1224,-812),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C8D1Ev,_ZTvn764_n28_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C8D0Ev,_ZTvn764_n28_N8S19438C8D0Ev),
  ABISELECT(-1232,-816),
  0,
  ABISELECT(-1232,-816),
  ABISELECT(-1176,-768),
  ABISELECT(-1216,-808),
  ABISELECT(-1232,-816),
  ABISELECT(64,56),
  ABISELECT(-1232,-816),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C8D1Ev,_ZTv0_n36_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C8D0Ev,_ZTv0_n36_N8S19438C8D0Ev),
  ABISELECT(-1296,-872),
  0,
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  ABISELECT(-1296,-872),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C8D1Ev,_ZTv0_n32_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C8D0Ev,_ZTv0_n32_N8S19438C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19438C8[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C9D1Ev();
extern void _ZN8S19438C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C9__8S19438C8[] = {
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C108S19438C9__8S19438C8[] = {
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C108S19438C9__8S19438C8[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__8S19438C8[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C118S19438C9__8S19438C8[] = {
  0,
  ABISELECT(1216,808),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C12D1Ev();
extern void _ZN9S19438C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__8S19438C8[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C119S19438C128S19438C9__A1__8S19438C8[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__8S19438C8[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C128S19438C9__8S19438C8[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__8S19438C9__8S19438C8[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__8S19438C9__8S19438C8[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C12__8S19438C9__8S19438C8[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C13D1Ev();
extern void _ZN9S19438C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C13__8S19438C8[] = {
  ABISELECT(-1232,-816),
  ABISELECT(-1176,-768),
  ABISELECT(-1216,-808),
  ABISELECT(-1232,-816),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S19438C13D1Ev,_ZThn56_N9S19438C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S19438C13D0Ev,_ZThn56_N9S19438C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__9S19438C13__8S19438C8[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C13__8S19438C8[] = {
  0,
  ABISELECT(1232,816),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C13__8S19438C8[] = {
  ABISELECT(1176,768),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C13__8S19438C8[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C13__8S19438C8[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C14D1Ev();
extern void _ZN9S19438C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C14__8S19438C8[] = {
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C14__8S19438C8[] = {
  ABISELECT(-1280,-864),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C14__8S19438C8[] = {
  0,
  ABISELECT(1296,872),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C14__8S19438C8[] = {
  ABISELECT(1240,824),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C14__8S19438C8[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C14__8S19438C8[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev),
};
static  VTT_ENTRY vtt_S19438C8[] = {
  {&(_ZTV8S19438C8[9]),  9,61},
  {&(_ZTV8S19438C8[19]),  19,61},
  {&(_ZTV8S19438C8[9]),  9,61},
  {&(_ZTV8S19438C8[27]),  27,61},
  {&(_ZTV8S19438C8[35]),  35,61},
  {&(_ZTV8S19438C8[47]),  47,61},
  {&(_ZTV8S19438C8[58]),  58,61},
  {&(_tg__ZTV8S19438C9__8S19438C8[6]),  6,9},
  {&(_tg__ZTV9S19438C108S19438C9__8S19438C8[4]),  4,5},
  {&(_tg__ZTV8S19438C5__9S19438C108S19438C9__8S19438C8[3]),  3,4},
  {&(_tg__ZTV9S19438C118S19438C9__8S19438C8[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C118S19438C9__8S19438C8[3]),  3,4},
  {&(_tg__ZTV9S19438C128S19438C9__8S19438C8[5]),  5,8},
  {&(_tg__ZTV9S19438C119S19438C128S19438C9__A1__8S19438C8[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__8S19438C8[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C128S19438C9__8S19438C8[3]),  3,4},
  {&(_tg__ZTV8S19438C5__8S19438C9__8S19438C8[3]),  3,4},
  {&(_tg__ZTV9S19438C11__8S19438C9__8S19438C8[5]),  5,8},
  {&(_tg__ZTV9S19438C12__8S19438C9__8S19438C8[5]),  5,8},
  {&(_tg__ZTV9S19438C13__8S19438C8[7]),  7,10},
  {&(_tg__ZTV9S19438C14__9S19438C13__8S19438C8[8]),  8,11},
  {&(_tg__ZTV8S19438C5__9S19438C13__8S19438C8[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C13__8S19438C8[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C13__8S19438C8[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C13__8S19438C8[5]),  5,8},
  {&(_tg__ZTV9S19438C14__8S19438C8[6]),  6,9},
  {&(_tg__ZTV8S19438C49S19438C14__8S19438C8[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C14__8S19438C8[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C14__8S19438C8[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C14__8S19438C8[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C14__8S19438C8[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19438C8[];
extern  VTBL_ENTRY _ZTV8S19438C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C8[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C13D0Ev,_ZThn56_N9S19438C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C13D1Ev,_ZThn56_N9S19438C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C8D0Ev,_ZTv0_n32_N8S19438C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N8S19438C8D0Ev,_ZThn872_N8S19438C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C8D1Ev,_ZTv0_n32_N8S19438C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N8S19438C8D1Ev,_ZThn872_N8S19438C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C8D0Ev,_ZTv0_n36_N8S19438C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19438C8D0Ev,_ZThn816_N8S19438C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C8D1Ev,_ZTv0_n36_N8S19438C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S19438C8D1Ev,_ZThn816_N8S19438C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C8D0Ev,_ZTv0_n28_N8S19438C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19438C8D0Ev,_ZThn48_N8S19438C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C8D1Ev,_ZTv0_n28_N8S19438C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19438C8D1Ev,_ZThn48_N8S19438C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19438C8 = {  "S19438C8", // class name
  bases_S19438C8, 19,
  &(vtc_S19438C8[0]), // expected_vtbl_contents
  &(vtt_S19438C8[0]), // expected_vtt_contents
  ABISELECT(1392,916), // object size
  NSPAIRA(_ZTI8S19438C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19438C8),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19438C8),31, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C3  : virtual S19438C4 , virtual S19438C8 {
  ~S19438C3(); // tgen
  S19438C3(); // tgen
};
//SIG(-1 S19438C3) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC4 VBC7{ VBC5 BC8{ VBC3 FC2[9]} BC9{ VBC4 VBC3 BC5 vd} BC10{ BC9 vd}} VBC11{ VBC12{ VBC3 BC2 VBC7 vd} BC13{ BC14{ BC4 BC3} FD}} vd Fp}}


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

static void Test_S19438C3()
{
  extern Class_Descriptor cd_S19438C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(94,242)];
    init_test(&cd_S19438C3, buf);
    S19438C3 *dp, &lv = *(dp=new (buf) S19438C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1488,964), "sizeof(S19438C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19438C3)");
    /*is_ambiguous_... S19438C3::S19438C4 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C4*), ABISELECT(8,4), "S19438C3");
    /*is_ambiguous_... S19438C3::S19438C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C4*), ABISELECT(96,48), "S19438C3");
    /*is_ambiguous_... S19438C8::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C8*), ABISELECT(96,48), "S19438C3");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C9*), ABISELECT(96,48), "S19438C3");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(96,48), "S19438C3");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*)(S19438C14*), ABISELECT(96,48), "S19438C3");
    /*is_ambiguous_... S19438C3::S19438C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C4*), ABISELECT(8,4), "S19438C3");
    /*is_ambiguous_... S19438C3::S19438C4 */ AMB_check_base_class_offset(lv, (S19438C4*), ABISELECT(8,4), "S19438C3");
    /*is_ambiguous_... S19438C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C9*), 0, "S19438C3");
    check_base_class_offset(lv, (S19438C5*)(S19438C10*)(S19438C9*), 0, "S19438C3");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C9*), 0, "S19438C3");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C12*)(S19438C9*), 0, "S19438C3");
    /*is_ambiguous_... S19438C14::S19438C5 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C14*), 0, "S19438C3");
    check_base_class_offset(lv, (S19438C10*)(S19438C9*), ABISELECT(152,96), "S19438C3");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C9*), ABISELECT(1312,856), "S19438C3");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C11*)(S19438C9*), ABISELECT(1312,856), "S19438C3");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1320,860), "S19438C3");
    check_base_class_offset(lv, (S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1320,860), "S19438C3");
    check_base_class_offset(lv, (S19438C12*)(S19438C9*), ABISELECT(1320,860), "S19438C3");
    check_base_class_offset(lv, (S19438C9*)(S19438C8*), ABISELECT(152,96), "S19438C3");
    check_base_class_offset(lv, (S19438C9*)(S19438C14*), ABISELECT(152,96), "S19438C3");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*)(S19438C14*), ABISELECT(1392,920), "S19438C3");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*)(S19438C14*), ABISELECT(1392,920), "S19438C3");
    check_base_class_offset(lv, (S19438C4*)(S19438C14*), ABISELECT(1392,920), "S19438C3");
    check_base_class_offset(lv, (S19438C14*)(S19438C13*), ABISELECT(1392,920), "S19438C3");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(1336,868), "S19438C3");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(1328,864), "S19438C3");
    check_base_class_offset(lv, (S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(1328,864), "S19438C3");
    check_base_class_offset(lv, (S19438C15*)(S19438C13*), ABISELECT(1328,864), "S19438C3");
    check_base_class_offset(lv, (S19438C13*)(S19438C8*), ABISELECT(1328,864), "S19438C3");
    check_base_class_offset(lv, (S19438C8*), ABISELECT(136,88), "S19438C3");
    test_class_info(&lv, &cd_S19438C3);
    dp->~S19438C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C3(Test_S19438C3, "S19438C3", ABISELECT(1488,964));

#else // __cplusplus

extern void _ZN8S19438C3C1Ev();
extern void _ZN8S19438C3D1Ev();
Name_Map name_map_S19438C3[] = {
  NSPAIR(_ZN8S19438C3C1Ev),
  NSPAIR(_ZN8S19438C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C12;
extern VTBL_ENTRY _ZTI9S19438C12[];
extern  VTBL_ENTRY _ZTV9S19438C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C12[];
extern Class_Descriptor cd_S19438C9;
extern VTBL_ENTRY _ZTI8S19438C9[];
extern  VTBL_ENTRY _ZTV8S19438C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C9[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S19438C14;
extern VTBL_ENTRY _ZTI9S19438C14[];
extern  VTBL_ENTRY _ZTV9S19438C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C14[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C15;
extern VTBL_ENTRY _ZTI9S19438C15[];
extern  VTBL_ENTRY _ZTV9S19438C15[];
extern Class_Descriptor cd_S19438C13;
extern VTBL_ENTRY _ZTI9S19438C13[];
extern  VTBL_ENTRY _ZTV9S19438C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C13[];
extern Class_Descriptor cd_S19438C8;
extern VTBL_ENTRY _ZTI8S19438C8[];
extern  VTBL_ENTRY _ZTV8S19438C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C8[];
static Base_Class bases_S19438C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C4,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C5,    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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19438C10,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1312,856), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1320,860), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19438C12,    ABISELECT(1320,860), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19438C9,    ABISELECT(152,96), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19438C5,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19438C4,    ABISELECT(1392,920), //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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19438C14,    ABISELECT(1392,920), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19438C5,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19438C16,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19438C15,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19438C13,    ABISELECT(1328,864), //bcp->offset
    58, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19438C8,    ABISELECT(136,88), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19438C3[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C3D1Ev();
extern void _ZN8S19438C3D0Ev();
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S19438C3D1Ev,_ZTv0_n40_N8S19438C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S19438C3D1Ev,_ZThn88_N8S19438C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19438C3D0Ev,_ZTv0_n40_N8S19438C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S19438C3D0Ev,_ZThn88_N8S19438C3D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19438C3D1Ev,_ZTv0_n28_N8S19438C3D1Ev)();
extern void ABISELECT(_ZThn152_N8S19438C3D1Ev,_ZThn96_N8S19438C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19438C3D0Ev,_ZTv0_n28_N8S19438C3D0Ev)();
extern void ABISELECT(_ZThn152_N8S19438C3D0Ev,_ZThn96_N8S19438C3D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C3D1Ev,_ZTvn760_n28_N8S19438C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C3D0Ev,_ZTvn760_n28_N8S19438C3D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C3D1Ev,_ZTvn764_n28_N8S19438C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C3D0Ev,_ZTvn764_n28_N8S19438C3D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S19438C3D1Ev,_ZTv0_n36_N8S19438C3D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19438C3D1Ev,_ZThn864_N8S19438C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19438C3D0Ev,_ZTv0_n36_N8S19438C3D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19438C3D0Ev,_ZThn864_N8S19438C3D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19438C3D1Ev,_ZTv0_n32_N8S19438C3D1Ev)();
extern void ABISELECT(_ZThn1392_N8S19438C3D1Ev,_ZThn920_N8S19438C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19438C3D0Ev,_ZTv0_n32_N8S19438C3D0Ev)();
extern void ABISELECT(_ZThn1392_N8S19438C3D0Ev,_ZThn920_N8S19438C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19438C3[] = {
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  0,
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C3D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19438C3D1Ev,_ZTv0_n40_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19438C3D0Ev,_ZTv0_n40_N8S19438C3D0Ev),
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C3D1Ev,_ZTv0_n28_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C3D0Ev,_ZTv0_n28_N8S19438C3D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C3D1Ev,_ZTvn760_n28_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C3D0Ev,_ZTvn760_n28_N8S19438C3D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C3D1Ev,_ZTvn764_n28_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C3D0Ev,_ZTvn764_n28_N8S19438C3D0Ev),
  ABISELECT(-1328,-864),
  0,
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C3D1Ev,_ZTv0_n36_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C3D0Ev,_ZTv0_n36_N8S19438C3D0Ev),
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C3D1Ev,_ZTv0_n32_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C3D0Ev,_ZTv0_n32_N8S19438C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19438C3[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__8S19438C3[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C8D1Ev();
extern void _ZN8S19438C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C8__8S19438C3[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C8D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19438C8D1Ev,_ZTv0_n28_N8S19438C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19438C8D1Ev,_ZThn8_N8S19438C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19438C8D0Ev,_ZTv0_n28_N8S19438C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19438C8D0Ev,_ZThn8_N8S19438C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__8S19438C8__8S19438C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C8D1Ev,_ZTv0_n28_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C8D0Ev,_ZTv0_n28_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__8S19438C8__8S19438C3[] = {
  0,
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C8D1Ev,_ZTvn760_n28_N8S19438C8D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C8D0Ev,_ZTvn760_n28_N8S19438C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__8S19438C8__8S19438C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C8D1Ev,_ZTvn760_n28_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C8D0Ev,_ZTvn760_n28_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C8D1Ev,_ZTvn764_n28_N8S19438C8D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C8D0Ev,_ZTvn764_n28_N8S19438C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__8S19438C8__8S19438C3[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C8D1Ev,_ZTvn764_n28_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C8D0Ev,_ZTvn764_n28_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S19438C8D1Ev,_ZTv0_n36_N8S19438C8D1Ev)();
extern void ABISELECT(_ZThn1192_N8S19438C8D1Ev,_ZThn776_N8S19438C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19438C8D0Ev,_ZTv0_n36_N8S19438C8D0Ev)();
extern void ABISELECT(_ZThn1192_N8S19438C8D0Ev,_ZThn776_N8S19438C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C13__8S19438C8__8S19438C3[] = {
  ABISELECT(-1192,-776),
  0,
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C8D1Ev,_ZTv0_n36_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C8D0Ev,_ZTv0_n36_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19438C8D1Ev,_ZTv0_n32_N8S19438C8D1Ev)();
extern void ABISELECT(_ZThn1256_N8S19438C8D1Ev,_ZThn832_N8S19438C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19438C8D0Ev,_ZTv0_n32_N8S19438C8D0Ev)();
extern void ABISELECT(_ZThn1256_N8S19438C8D0Ev,_ZThn832_N8S19438C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__8S19438C8__8S19438C3[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C8D1Ev,_ZTv0_n32_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C8D0Ev,_ZTv0_n32_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C9D1Ev();
extern void _ZN8S19438C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C9__8S19438C3[] = {
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C108S19438C9__8S19438C3[] = {
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C108S19438C9__8S19438C3[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__8S19438C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C118S19438C9__8S19438C3[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C12D1Ev();
extern void _ZN9S19438C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__8S19438C3[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C119S19438C128S19438C9__A1__8S19438C3[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__8S19438C3[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C128S19438C9__8S19438C3[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__8S19438C9__8S19438C3[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__8S19438C9__8S19438C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C12__8S19438C9__8S19438C3[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C13D1Ev();
extern void _ZN9S19438C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C13__8S19438C3[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S19438C13D1Ev,_ZThn56_N9S19438C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S19438C13D0Ev,_ZThn56_N9S19438C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__9S19438C13__8S19438C3[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C13__8S19438C3[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C13__8S19438C3[] = {
  ABISELECT(1176,768),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C13__8S19438C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C13__8S19438C3[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C14D1Ev();
extern void _ZN9S19438C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C14__8S19438C3[] = {
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C14__A1__8S19438C3[] = {
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C14__8S19438C3[] = {
  0,
  ABISELECT(1392,920),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C14__8S19438C3[] = {
  ABISELECT(1240,824),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C14__8S19438C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C14__8S19438C3[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev),
};
static  VTT_ENTRY vtt_S19438C3[] = {
  {&(_ZTV8S19438C3[11]),  11,81},
  {&(_ZTV8S19438C3[18]),  18,81},
  {&(_ZTV8S19438C3[29]),  29,81},
  {&(_ZTV8S19438C3[39]),  39,81},
  {&(_ZTV8S19438C3[11]),  11,81},
  {&(_ZTV8S19438C3[47]),  47,81},
  {&(_ZTV8S19438C3[55]),  55,81},
  {&(_ZTV8S19438C3[67]),  67,81},
  {&(_ZTV8S19438C3[78]),  78,81},
  {&(_tg__ZTV8S19438C4__8S19438C3[3]),  3,4},
  {&(_tg__ZTV8S19438C8__8S19438C3[9]),  9,12},
  {&(_tg__ZTV8S19438C9__8S19438C8__8S19438C3[7]),  7,10},
  {&(_tg__ZTV8S19438C5__8S19438C8__8S19438C3[3]),  3,4},
  {&(_tg__ZTV9S19438C118S19438C9__8S19438C8__8S19438C3[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__8S19438C8__8S19438C3[5]),  5,8},
  {&(_tg__ZTV9S19438C13__8S19438C8__8S19438C3[9]),  9,12},
  {&(_tg__ZTV9S19438C14__8S19438C8__8S19438C3[8]),  8,11},
  {&(_tg__ZTV8S19438C9__8S19438C3[6]),  6,9},
  {&(_tg__ZTV9S19438C108S19438C9__8S19438C3[4]),  4,5},
  {&(_tg__ZTV8S19438C5__9S19438C108S19438C9__8S19438C3[3]),  3,4},
  {&(_tg__ZTV9S19438C118S19438C9__8S19438C3[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C118S19438C9__8S19438C3[3]),  3,4},
  {&(_tg__ZTV9S19438C128S19438C9__8S19438C3[5]),  5,8},
  {&(_tg__ZTV9S19438C119S19438C128S19438C9__A1__8S19438C3[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__8S19438C3[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C128S19438C9__8S19438C3[3]),  3,4},
  {&(_tg__ZTV8S19438C5__8S19438C9__8S19438C3[3]),  3,4},
  {&(_tg__ZTV9S19438C11__8S19438C9__8S19438C3[5]),  5,8},
  {&(_tg__ZTV9S19438C12__8S19438C9__8S19438C3[5]),  5,8},
  {&(_tg__ZTV9S19438C13__8S19438C3[7]),  7,10},
  {&(_tg__ZTV9S19438C14__9S19438C13__8S19438C3[8]),  8,11},
  {&(_tg__ZTV8S19438C5__9S19438C13__8S19438C3[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C13__8S19438C3[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C13__8S19438C3[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C13__8S19438C3[5]),  5,8},
  {&(_tg__ZTV9S19438C14__8S19438C3[6]),  6,9},
  {&(_tg__ZTV8S19438C49S19438C14__A1__8S19438C3[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C14__8S19438C3[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C14__8S19438C3[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C14__8S19438C3[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C14__8S19438C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19438C3[];
extern  VTBL_ENTRY _ZTV8S19438C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C3[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C13D0Ev,_ZThn56_N9S19438C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C13D1Ev,_ZThn56_N9S19438C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C8D0Ev,_ZTv0_n32_N8S19438C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N8S19438C8D0Ev,_ZThn832_N8S19438C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C8D1Ev,_ZTv0_n32_N8S19438C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N8S19438C8D1Ev,_ZThn832_N8S19438C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C8D0Ev,_ZTv0_n36_N8S19438C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S19438C8D0Ev,_ZThn776_N8S19438C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C8D1Ev,_ZTv0_n36_N8S19438C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S19438C8D1Ev,_ZThn776_N8S19438C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C8D0Ev,_ZTv0_n28_N8S19438C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19438C8D0Ev,_ZThn8_N8S19438C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C8D1Ev,_ZTv0_n28_N8S19438C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19438C8D1Ev,_ZThn8_N8S19438C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C3D0Ev,_ZTv0_n32_N8S19438C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19438C3D0Ev,_ZThn920_N8S19438C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C3D1Ev,_ZTv0_n32_N8S19438C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19438C3D1Ev,_ZThn920_N8S19438C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C3D0Ev,_ZTv0_n36_N8S19438C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19438C3D0Ev,_ZThn864_N8S19438C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C3D1Ev,_ZTv0_n36_N8S19438C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19438C3D1Ev,_ZThn864_N8S19438C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C3D0Ev,_ZTv0_n28_N8S19438C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19438C3D0Ev,_ZThn96_N8S19438C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C3D1Ev,_ZTv0_n28_N8S19438C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19438C3D1Ev,_ZThn96_N8S19438C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19438C3D0Ev,_ZTv0_n40_N8S19438C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19438C3D0Ev,_ZThn88_N8S19438C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19438C3D1Ev,_ZTv0_n40_N8S19438C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19438C3D1Ev,_ZThn88_N8S19438C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19438C3 = {  "S19438C3", // class name
  bases_S19438C3, 23,
  &(vtc_S19438C3[0]), // expected_vtbl_contents
  &(vtt_S19438C3[0]), // expected_vtt_contents
  ABISELECT(1488,964), // object size
  NSPAIRA(_ZTI8S19438C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19438C3),81, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19438C3),41, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C18  : virtual S10258C6_nt , virtual S19438C11 {
  virtual  ~S19438C18(); // _ZN9S19438C18D2Ev
  S19438C18(); // tgen
};
//SIG(-1 S19438C18) C1{ VBC2{ m FL[4]} VBC3{ VBC4{ m FL[5]} VBC5{ v1} BC6{ m} vd} vd}


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

static void Test_S19438C18()
{
  extern Class_Descriptor cd_S19438C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,20)];
    init_test(&cd_S19438C18, buf);
    S19438C18 *dp, &lv = *(dp=new (buf) S19438C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,76), "sizeof(S19438C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C18)");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(8,4), "S19438C18");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*), ABISELECT(40,36), "S19438C18");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*), 0, "S19438C18");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*), 0, "S19438C18");
    check_base_class_offset(lv, (S19438C11*), 0, "S19438C18");
    test_class_info(&lv, &cd_S19438C18);
    dp->~S19438C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C18(Test_S19438C18, "S19438C18", ABISELECT(80,76));

#else // __cplusplus

extern void _ZN9S19438C18C1Ev();
extern void _ZN9S19438C18D2Ev();
Name_Map name_map_S19438C18[] = {
  NSPAIR(_ZN9S19438C18C1Ev),
  NSPAIR(_ZN9S19438C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
static Base_Class bases_S19438C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19438C5,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19438C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C18[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C18D1Ev();
extern void _ZN9S19438C18D0Ev();
static  VTBL_ENTRY vtc_S19438C18[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C18[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C18D0Ev,
};
extern VTBL_ENTRY _ZTV9S19438C18[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C18[] = {
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
static  VTT_ENTRY vtt_S19438C18[] = {
  {&(_ZTV9S19438C18[8]),  8,11},
  {&(_ZTV9S19438C18[8]),  8,11},
  {&(_ZTV9S19438C18[8]),  8,11},
  {&(_tg__ZTV9S19438C11__9S19438C18[5]),  5,8},
  {&(_tg__ZTV9S19438C11__9S19438C18[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19438C18[];
extern  VTBL_ENTRY _ZTV9S19438C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C18[];
Class_Descriptor cd_S19438C18 = {  "S19438C18", // class name
  bases_S19438C18, 5,
  &(vtc_S19438C18[0]), // expected_vtbl_contents
  &(vtt_S19438C18[0]), // expected_vtt_contents
  ABISELECT(80,76), // object size
  NSPAIRA(_ZTI9S19438C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19438C18),11, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C18),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C20  : S19438C16 , S19438C4 {
  ~S19438C20(); // tgen
  S19438C20(); // tgen
};
//SIG(-1 S19438C20) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} BC5{ BC4 VBC3 BC6{ m} Fp[10]}}


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

static void Test_S19438C20()
{
  extern Class_Descriptor cd_S19438C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S19438C20, buf);
    S19438C20 *dp, &lv = *(dp=new (buf) S19438C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S19438C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C20)");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*), ABISELECT(8,4), "S19438C20");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*), 0, "S19438C20");
    check_base_class_offset(lv, (S19438C16*), 0, "S19438C20");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*), ABISELECT(48,44), "S19438C20");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*), ABISELECT(136,88), "S19438C20");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*), ABISELECT(48,44), "S19438C20");
    check_base_class_offset(lv, (S19438C4*), ABISELECT(48,44), "S19438C20");
    test_class_info(&lv, &cd_S19438C20);
    dp->~S19438C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C20(Test_S19438C20, "S19438C20", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN9S19438C20C1Ev();
extern void _ZN9S19438C20D1Ev();
Name_Map name_map_S19438C20[] = {
  NSPAIR(_ZN9S19438C20C1Ev),
  NSPAIR(_ZN9S19438C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
static Base_Class bases_S19438C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19438C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19438C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19438C5,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    6, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19438C4,    ABISELECT(48,44), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C20[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C20[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C20[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  ABISELECT(88,44),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S19438C20[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S19438C20[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C20[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
static  VTT_ENTRY vtt_S19438C20[] = {
  {&(_ZTV9S19438C20[3]),  3,8},
  {&(_tg__ZTV8S19438C4__9S19438C20[3]),  3,4},
  {&(_ZTV9S19438C20[7]),  7,8},
};
extern VTBL_ENTRY _ZTI9S19438C20[];
extern  VTBL_ENTRY _ZTV9S19438C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C20[];
Class_Descriptor cd_S19438C20 = {  "S19438C20", // class name
  bases_S19438C20, 7,
  &(vtc_S19438C20[0]), // expected_vtbl_contents
  &(vtt_S19438C20[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI9S19438C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19438C20),8, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C20),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  S19438C22  : S4227C23 {
};
//SIG(-1 S19438C22) C1{ BC2{ m}}



static void Test_S19438C22()
{
  extern Class_Descriptor cd_S19438C22;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S19438C22, buf);
    S19438C22 &lv = *(new (buf) S19438C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S19438C22)");
    check2(__alignof__(lv), 1, "__alignof__(S19438C22)");
    check_base_class_offset(lv, (S4227C23*), 0, "S19438C22");
    test_class_info(&lv, &cd_S19438C22);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C22(Test_S19438C22, "S19438C22", 1);

#else // __cplusplus

extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
static Base_Class bases_S19438C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C22[];
Class_Descriptor cd_S19438C22 = {  "S19438C22", // class name
  bases_S19438C22, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI9S19438C22),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  S19438C17  : virtual S19438C4 , virtual S19438C18 , virtual S19438C20 , S4227C27 , virtual S19438C22 {
  virtual  ~S19438C17(); // _ZN9S19438C17D2Ev
  S19438C17(); // tgen
};
//SIG(-1 S19438C17) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC7{ m FL[4]} VBC8{ VBC4 VBC3 BC5 vd} vd} VBC9{ BC10{ BC4 BC3} BC2} BC11{ m} VBC12{ BC13{ m}} vd}


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

static void Test_S19438C17()
{
  extern Class_Descriptor cd_S19438C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,53)];
    init_test(&cd_S19438C17, buf);
    S19438C17 *dp, &lv = *(dp=new (buf) S19438C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,208), "sizeof(S19438C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C17)");
    /*is_ambiguous_... S19438C17::S19438C4 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C4*), ABISELECT(8,4), "S19438C17");
    /*is_ambiguous_... S19438C17::S19438C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C4*), ABISELECT(96,48), "S19438C17");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*), ABISELECT(96,48), "S19438C17");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*)(S19438C20*), ABISELECT(96,48), "S19438C17");
    /*is_ambiguous_... S19438C17::S19438C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C4*), ABISELECT(8,4), "S19438C17");
    /*is_ambiguous_... S19438C17::S19438C4 */ AMB_check_base_class_offset(lv, (S19438C4*), ABISELECT(8,4), "S19438C17");
    check_base_class_offset(lv, (S10258C6_nt*)(S19438C18*), ABISELECT(136,88), "S19438C17");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*), 0, "S19438C17");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*), 0, "S19438C17");
    check_base_class_offset(lv, (S19438C11*)(S19438C18*), 0, "S19438C17");
    check_base_class_offset(lv, (S19438C18*), 0, "S19438C17");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*)(S19438C20*), ABISELECT(176,124), "S19438C17");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*)(S19438C20*), ABISELECT(168,120), "S19438C17");
    check_base_class_offset(lv, (S19438C16*)(S19438C20*), ABISELECT(168,120), "S19438C17");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*)(S19438C20*), ABISELECT(216,164), "S19438C17");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*)(S19438C20*), ABISELECT(216,164), "S19438C17");
    check_base_class_offset(lv, (S19438C4*)(S19438C20*), ABISELECT(216,164), "S19438C17");
    check_base_class_offset(lv, (S19438C20*), ABISELECT(168,120), "S19438C17");
    check_base_class_offset(lv, (S4227C27*), 0, "S19438C17");
    check_base_class_offset(lv, (S4227C23*)(S19438C22*), 0, "S19438C17");
    check_base_class_offset(lv, (S19438C22*), 0, "S19438C17");
    test_class_info(&lv, &cd_S19438C17);
    dp->~S19438C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C17(Test_S19438C17, "S19438C17", ABISELECT(304,208));

#else // __cplusplus

extern void _ZN9S19438C17C1Ev();
extern void _ZN9S19438C17D2Ev();
Name_Map name_map_S19438C17[] = {
  NSPAIR(_ZN9S19438C17C1Ev),
  NSPAIR(_ZN9S19438C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C18;
extern VTBL_ENTRY _ZTI9S19438C18[];
extern  VTBL_ENTRY _ZTV9S19438C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C18[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S19438C20;
extern VTBL_ENTRY _ZTI9S19438C20[];
extern  VTBL_ENTRY _ZTV9S19438C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C20[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S19438C22;
extern VTBL_ENTRY _ZTI9S19438C22[];
static Base_Class bases_S19438C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C4,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_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
    8, //immediately_derived
  0, 1},
  {&cd_S19438C5,    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
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 1},
  {&cd_S19438C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(176,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
    11, //immediately_derived
  0, 0},
  {&cd_S19438C5,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19438C16,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19438C5,    ABISELECT(216,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
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S19438C4,    ABISELECT(216,164), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19438C20,    ABISELECT(168,120), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19438C17[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C17D1Ev();
extern void _ZN9S19438C17D0Ev();
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C17[] = {
  0,
  ABISELECT(168,120),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(136,88),
  0,
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C17D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  0,
  -72,
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  ABISELECT(-120,-116),
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S19438C17[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C17[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C18D1Ev,_ZTv0_n24_N9S19438C18D1Ev)();
extern void _ZN9S19438C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C18D0Ev,_ZTv0_n24_N9S19438C18D0Ev)();
extern void _ZN9S19438C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C18__9S19438C17[] = {
  0,
  ABISELECT(136,88),
  0,
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C18[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C18D1Ev,_ZTv0_n24_N9S19438C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C18D0Ev,_ZTv0_n24_N9S19438C18D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C17[] = {
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C20__9S19438C17[] = {
  -72,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C20[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C20__A1__9S19438C17[] = {
  ABISELECT(-120,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C20__9S19438C17[] = {
  ABISELECT(-120,-116),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S19438C20[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
static  VTT_ENTRY vtt_S19438C17[] = {
  {&(_ZTV9S19438C17[12]),  12,29},
  {&(_ZTV9S19438C17[19]),  19,29},
  {&(_ZTV9S19438C17[12]),  12,29},
  {&(_ZTV9S19438C17[12]),  12,29},
  {&(_ZTV9S19438C17[12]),  12,29},
  {&(_ZTV9S19438C17[24]),  24,29},
  {&(_ZTV9S19438C17[28]),  28,29},
  {&(_tg__ZTV8S19438C4__9S19438C17[3]),  3,4},
  {&(_tg__ZTV9S19438C18__9S19438C17[8]),  8,11},
  {&(_tg__ZTV9S19438C18__9S19438C17[8]),  8,11},
  {&(_tg__ZTV9S19438C18__9S19438C17[8]),  8,11},
  {&(_tg__ZTV9S19438C11__9S19438C17[5]),  5,8},
  {&(_tg__ZTV9S19438C11__9S19438C17[5]),  5,8},
  {&(_tg__ZTV9S19438C20__9S19438C17[3]),  3,4},
  {&(_tg__ZTV8S19438C49S19438C20__A1__9S19438C17[3]),  3,4},
  {&(_tg__ZTV8S19438C4__9S19438C20__9S19438C17[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19438C17[];
extern  VTBL_ENTRY _ZTV9S19438C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C17[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C18D0Ev,_ZTv0_n24_N9S19438C18D0Ev), // 
  (VTBL_ENTRY)_ZN9S19438C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C18D1Ev,_ZTv0_n24_N9S19438C18D1Ev), // 
  (VTBL_ENTRY)_ZN9S19438C18D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19438C17 = {  "S19438C17", // class name
  bases_S19438C17, 19,
  &(vtc_S19438C17[0]), // expected_vtbl_contents
  &(vtt_S19438C17[0]), // expected_vtt_contents
  ABISELECT(304,208), // object size
  NSPAIRA(_ZTI9S19438C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19438C17),29, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C17),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C25  : virtual S4227C37 , virtual S19438C11 {
  virtual void  v2(); // _ZN9S19438C252v2Ev
  ~S19438C25(); // tgen
  S19438C25(); // tgen
};
//SIG(-1 S19438C25) C1{ VBC2{ m} VBC3{ VBC4{ m FL[5]} VBC5{ v2} BC2 vd} v1}


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

static void Test_S19438C25()
{
  extern Class_Descriptor cd_S19438C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19438C25, buf);
    S19438C25 *dp, &lv = *(dp=new (buf) S19438C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19438C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C25)");
    /*is_ambiguous_... S19438C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), ABISELECT(8,4), "S19438C25");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*), ABISELECT(8,4), "S19438C25");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*), 0, "S19438C25");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*), 0, "S19438C25");
    check_base_class_offset(lv, (S19438C11*), 0, "S19438C25");
    test_class_info(&lv, &cd_S19438C25);
    dp->~S19438C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C25(Test_S19438C25, "S19438C25", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S19438C25C1Ev();
extern void _ZN9S19438C25D1Ev();
Name_Map name_map_S19438C25[] = {
  NSPAIR(_ZN9S19438C25C1Ev),
  NSPAIR(_ZN9S19438C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
static Base_Class bases_S19438C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19438C5,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19438C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C25[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C25D1Ev();
extern void _ZN9S19438C25D0Ev();
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY vtc_S19438C25[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C25D0Ev,
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern VTBL_ENTRY _ZTV9S19438C25[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C25[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
static  VTT_ENTRY vtt_S19438C25[] = {
  {&(_ZTV9S19438C25[8]),  8,12},
  {&(_ZTV9S19438C25[8]),  8,12},
  {&(_ZTV9S19438C25[8]),  8,12},
  {&(_tg__ZTV9S19438C11__9S19438C25[5]),  5,8},
  {&(_tg__ZTV9S19438C11__9S19438C25[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19438C25[];
extern  VTBL_ENTRY _ZTV9S19438C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C25[];
Class_Descriptor cd_S19438C25 = {  "S19438C25", // class name
  bases_S19438C25, 5,
  &(vtc_S19438C25[0]), // expected_vtbl_contents
  &(vtt_S19438C25[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S19438C25),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19438C25),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C25),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C24  : virtual S19438C5 , virtual S19438C11 , virtual S10258C6_nt , virtual S19438C25 , virtual S19438C10 {
  virtual  ~S19438C24(); // _ZN9S19438C24D2Ev
  S19438C24(); // tgen
};
//SIG(-1 S19438C24) C1{ VBC2{ v1} VBC3{ VBC4{ m FL[5]} VBC2 BC5{ m} vd} VBC6{ m FL[4]} VBC7{ VBC5 VBC3 v2} VBC8{ VBC2 FC9{ BC2 VBC4 BC5 Fp[10]}[9]} vd}


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

static void Test_S19438C24()
{
  extern Class_Descriptor cd_S19438C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(156,210)];
    init_test(&cd_S19438C24, buf);
    S19438C24 *dp, &lv = *(dp=new (buf) S19438C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1240,836), "sizeof(S19438C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C24)");
    check_base_class_offset(lv, (S19438C5*), 0, "S19438C24");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*), 0, "S19438C24");
    check_base_class_offset(lv, (S19438C5*)(S19438C10*), 0, "S19438C24");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*), ABISELECT(8,4), "S19438C24");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*), 0, "S19438C24");
    check_base_class_offset(lv, (S19438C11*), 0, "S19438C24");
    check_base_class_offset(lv, (S19438C11*)(S19438C25*), 0, "S19438C24");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(48,44), "S19438C24");
    /*is_ambiguous_... S19438C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C25*), ABISELECT(80,76), "S19438C24");
    check_base_class_offset(lv, (S19438C25*), 0, "S19438C24");
    check_base_class_offset(lv, (S19438C10*), ABISELECT(80,76), "S19438C24");
    test_class_info(&lv, &cd_S19438C24);
    dp->~S19438C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C24(Test_S19438C24, "S19438C24", ABISELECT(1240,836));

#else // __cplusplus

extern void _ZN9S19438C24C1Ev();
extern void _ZN9S19438C24D2Ev();
Name_Map name_map_S19438C24[] = {
  NSPAIR(_ZN9S19438C24C1Ev),
  NSPAIR(_ZN9S19438C24D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C25;
extern VTBL_ENTRY _ZTI9S19438C25[];
extern  VTBL_ENTRY _ZTV9S19438C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C25[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
static Base_Class bases_S19438C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(80,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19438C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19438C10,    ABISELECT(80,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C24[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C24D1Ev();
extern void _ZN9S19438C24D0Ev();
extern void _ZN9S19438C252v2Ev();
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C24[] = {
  ABISELECT(80,76),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C24D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C24D0Ev,
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S19438C24[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C24[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev)();
extern void _ZN9S19438C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev)();
extern void _ZN9S19438C25D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C25__9S19438C24[] = {
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C10__9S19438C24[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C10__9S19438C24[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
static  VTT_ENTRY vtt_S19438C24[] = {
  {&(_ZTV9S19438C24[12]),  12,21},
  {&(_ZTV9S19438C24[12]),  12,21},
  {&(_ZTV9S19438C24[12]),  12,21},
  {&(_ZTV9S19438C24[12]),  12,21},
  {&(_ZTV9S19438C24[20]),  20,21},
  {&(_tg__ZTV9S19438C11__9S19438C24[5]),  5,8},
  {&(_tg__ZTV9S19438C11__9S19438C24[5]),  5,8},
  {&(_tg__ZTV9S19438C25__9S19438C24[8]),  8,12},
  {&(_tg__ZTV9S19438C25__9S19438C24[8]),  8,12},
  {&(_tg__ZTV9S19438C25__9S19438C24[8]),  8,12},
  {&(_tg__ZTV9S19438C10__9S19438C24[4]),  4,5},
  {&(_tg__ZTV8S19438C5__9S19438C10__9S19438C24[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19438C24[];
extern  VTBL_ENTRY _ZTV9S19438C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C24[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev), // 
  (VTBL_ENTRY)_ZN9S19438C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev), // 
  (VTBL_ENTRY)_ZN9S19438C25D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19438C24 = {  "S19438C24", // class name
  bases_S19438C24, 8,
  &(vtc_S19438C24[0]), // expected_vtbl_contents
  &(vtt_S19438C24[0]), // expected_vtt_contents
  ABISELECT(1240,836), // object size
  NSPAIRA(_ZTI9S19438C24),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19438C24),21, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C24),12, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C2  : S19438C3 , S4227C37 , virtual S19438C17 , virtual S19438C24 {
  ~S19438C2(); // tgen
  S19438C2(); // tgen
};
//SIG(-1 S19438C2) C1{ BC2{ VBC3{ BC4{ v1} VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC5 VBC8{ VBC6 BC9{ VBC4 FC3[9]} BC10{ VBC5 VBC4 BC6 vd} BC11{ BC10 vd}} VBC12{ VBC13{ VBC4 BC3 VBC8 vd} BC14{ BC15{ BC5 BC4} FD}} vd Fp}} BC6 VBC16{ VBC3 VBC17{ VBC18{ m FL[4]} VBC10 vd} VBC19{ BC15 BC3} BC20{ m} VBC21{ BC22{ m}} vd} VBC23{ VBC4 VBC10 VBC18 VBC24{ VBC6 VBC10 v2} VBC9 vd}}


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

static void Test_S19438C2()
{
  extern Class_Descriptor cd_S19438C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(178,464)];
    init_test(&cd_S19438C2, buf);
    S19438C2 *dp, &lv = *(dp=new (buf) S19438C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2832,1852), "sizeof(S19438C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19438C2)");
    /*is_ambiguous_... S19438C2::S19438C4 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C4*), ABISELECT(8,4), "S19438C2");
    /*is_ambiguous_... S19438C2::S19438C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C4*), ABISELECT(96,48), "S19438C2");
    /*is_ambiguous_... S19438C8::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C8*), ABISELECT(96,48), "S19438C2");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C9*), ABISELECT(96,48), "S19438C2");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(96,48), "S19438C2");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*)(S19438C14*), ABISELECT(96,48), "S19438C2");
    /*is_ambiguous_... S19438C2::S19438C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C11*), ABISELECT(96,48), "S19438C2");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*)(S19438C20*), ABISELECT(96,48), "S19438C2");
    /*is_ambiguous_... S19438C2::S19438C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C4*), ABISELECT(8,4), "S19438C2");
    /*is_ambiguous_... S19438C3::S19438C4 */ AMB_check_base_class_offset(lv, (S19438C4*)(S19438C3*), ABISELECT(8,4), "S19438C2");
    /*is_ambiguous_... S19438C17::S19438C4 */ AMB_check_base_class_offset(lv, (S19438C4*)(S19438C17*), ABISELECT(8,4), "S19438C2");
    /*is_ambiguous_... S19438C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C9*), ABISELECT(1328,864), "S19438C2");
    /*is_ambiguous_... S19438C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C25*), ABISELECT(1328,864), "S19438C2");
    check_base_class_offset(lv, (S19438C5*)(S19438C10*)(S19438C9*), 0, "S19438C2");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C9*), 0, "S19438C2");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C12*)(S19438C9*), 0, "S19438C2");
    /*is_ambiguous_... S19438C14::S19438C5 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C14*), 0, "S19438C2");
    /*is_ambiguous_... S19438C2::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C11*), 0, "S19438C2");
    check_base_class_offset(lv, (S19438C5*)(S19438C24*), 0, "S19438C2");
    /*is_ambiguous_... S19438C2::S19438C10 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C10*), 0, "S19438C2");
    check_base_class_offset(lv, (S19438C10*)(S19438C9*), ABISELECT(152,96), "S19438C2");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C9*), ABISELECT(1312,856), "S19438C2");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C11*)(S19438C9*), ABISELECT(1312,856), "S19438C2");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1320,860), "S19438C2");
    check_base_class_offset(lv, (S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1320,860), "S19438C2");
    check_base_class_offset(lv, (S19438C12*)(S19438C9*), ABISELECT(1320,860), "S19438C2");
    check_base_class_offset(lv, (S19438C9*)(S19438C8*), ABISELECT(152,96), "S19438C2");
    check_base_class_offset(lv, (S19438C9*)(S19438C14*), ABISELECT(152,96), "S19438C2");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*)(S19438C14*), ABISELECT(1392,920), "S19438C2");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*)(S19438C14*), ABISELECT(1392,920), "S19438C2");
    check_base_class_offset(lv, (S19438C4*)(S19438C14*), ABISELECT(1392,920), "S19438C2");
    check_base_class_offset(lv, (S19438C14*)(S19438C13*), ABISELECT(1392,920), "S19438C2");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(1336,868), "S19438C2");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(1328,864), "S19438C2");
    check_base_class_offset(lv, (S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(1328,864), "S19438C2");
    check_base_class_offset(lv, (S19438C15*)(S19438C13*), ABISELECT(1328,864), "S19438C2");
    check_base_class_offset(lv, (S19438C13*)(S19438C8*), ABISELECT(1328,864), "S19438C2");
    check_base_class_offset(lv, (S19438C8*)(S19438C3*), ABISELECT(136,88), "S19438C2");
    check_base_class_offset(lv, (S19438C3*), 0, "S19438C2");
    /*is_ambiguous_... S19438C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S19438C2");
    check_base_class_offset(lv, (S10258C6_nt*)(S19438C18*), ABISELECT(1488,968), "S19438C2");
    check_base_class_offset(lv, (S10258C6_nt*)(S19438C24*), ABISELECT(1488,968), "S19438C2");
    /*is_ambiguous_... S19438C2::S19438C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C11*), ABISELECT(1480,964), "S19438C2");
    check_base_class_offset(lv, (S19438C11*)(S19438C18*), ABISELECT(1480,964), "S19438C2");
    check_base_class_offset(lv, (S19438C11*)(S19438C24*), ABISELECT(1480,964), "S19438C2");
    check_base_class_offset(lv, (S19438C11*)(S19438C25*), ABISELECT(1480,964), "S19438C2");
    check_base_class_offset(lv, (S19438C18*)(S19438C17*), ABISELECT(1480,964), "S19438C2");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*)(S19438C20*), ABISELECT(1528,1004), "S19438C2");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*)(S19438C20*), ABISELECT(1520,1000), "S19438C2");
    check_base_class_offset(lv, (S19438C16*)(S19438C20*), ABISELECT(1520,1000), "S19438C2");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*)(S19438C20*), ABISELECT(1568,1044), "S19438C2");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*)(S19438C20*), ABISELECT(1568,1044), "S19438C2");
    check_base_class_offset(lv, (S19438C4*)(S19438C20*), ABISELECT(1568,1044), "S19438C2");
    check_base_class_offset(lv, (S19438C20*)(S19438C17*), ABISELECT(1520,1000), "S19438C2");
    check_base_class_offset(lv, (S4227C27*)(S19438C17*), ABISELECT(1480,964), "S19438C2");
    check_base_class_offset(lv, (S4227C23*)(S19438C22*), 0, "S19438C2");
    check_base_class_offset(lv, (S19438C22*)(S19438C17*), 0, "S19438C2");
    check_base_class_offset(lv, (S19438C17*), ABISELECT(1480,964), "S19438C2");
    check_base_class_offset(lv, (S19438C25*)(S19438C24*), ABISELECT(1656,1088), "S19438C2");
    check_base_class_offset(lv, (S19438C10*)(S19438C24*), ABISELECT(1664,1092), "S19438C2");
    check_base_class_offset(lv, (S19438C24*), ABISELECT(1656,1088), "S19438C2");
    test_class_info(&lv, &cd_S19438C2);
    dp->~S19438C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C2(Test_S19438C2, "S19438C2", ABISELECT(2832,1852));

#else // __cplusplus

extern void _ZN8S19438C2C1Ev();
extern void _ZN8S19438C2D1Ev();
Name_Map name_map_S19438C2[] = {
  NSPAIR(_ZN8S19438C2C1Ev),
  NSPAIR(_ZN8S19438C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C12;
extern VTBL_ENTRY _ZTI9S19438C12[];
extern  VTBL_ENTRY _ZTV9S19438C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C12[];
extern Class_Descriptor cd_S19438C9;
extern VTBL_ENTRY _ZTI8S19438C9[];
extern  VTBL_ENTRY _ZTV8S19438C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C9[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S19438C14;
extern VTBL_ENTRY _ZTI9S19438C14[];
extern  VTBL_ENTRY _ZTV9S19438C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C14[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C15;
extern VTBL_ENTRY _ZTI9S19438C15[];
extern  VTBL_ENTRY _ZTV9S19438C15[];
extern Class_Descriptor cd_S19438C13;
extern VTBL_ENTRY _ZTI9S19438C13[];
extern  VTBL_ENTRY _ZTV9S19438C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C13[];
extern Class_Descriptor cd_S19438C8;
extern VTBL_ENTRY _ZTI8S19438C8[];
extern  VTBL_ENTRY _ZTV8S19438C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C8[];
extern Class_Descriptor cd_S19438C3;
extern VTBL_ENTRY _ZTI8S19438C3[];
extern  VTBL_ENTRY _ZTV8S19438C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C3[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C18;
extern VTBL_ENTRY _ZTI9S19438C18[];
extern  VTBL_ENTRY _ZTV9S19438C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C18[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S19438C20;
extern VTBL_ENTRY _ZTI9S19438C20[];
extern  VTBL_ENTRY _ZTV9S19438C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C20[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S19438C22;
extern VTBL_ENTRY _ZTI9S19438C22[];
extern Class_Descriptor cd_S19438C17;
extern VTBL_ENTRY _ZTI9S19438C17[];
extern  VTBL_ENTRY _ZTV9S19438C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C17[];
extern Class_Descriptor cd_S19438C25;
extern VTBL_ENTRY _ZTI9S19438C25[];
extern  VTBL_ENTRY _ZTV9S19438C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C25[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
extern Class_Descriptor cd_S19438C24;
extern VTBL_ENTRY _ZTI9S19438C24[];
extern  VTBL_ENTRY _ZTV9S19438C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C24[];
static Base_Class bases_S19438C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C4,    ABISELECT(8,4), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19438C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19438C10,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1312,856), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1320,860), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19438C12,    ABISELECT(1320,860), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19438C9,    ABISELECT(152,96), //bcp->offset
    41, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19438C5,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19438C4,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19438C14,    ABISELECT(1392,920), //bcp->offset
    79, //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
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19438C5,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19438C16,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19438C15,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19438C13,    ABISELECT(1328,864), //bcp->offset
    67, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19438C8,    ABISELECT(136,88), //bcp->offset
    28, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19438C3,    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
    28, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10258C6_nt,    ABISELECT(1488,968), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1480,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19438C11,    ABISELECT(1480,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19438C18,    ABISELECT(1480,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1528,1004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C5,    ABISELECT(1520,1000), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19438C16,    ABISELECT(1520,1000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19438C5,    ABISELECT(1568,1044), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1568,1044), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19438C4,    ABISELECT(1568,1044), //bcp->offset
    110, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19438C20,    ABISELECT(1520,1000), //bcp->offset
    105, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S4227C27,    ABISELECT(1480,964), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C17,    ABISELECT(1480,964), //bcp->offset
    90, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19438C25,    ABISELECT(1656,1088), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19438C10,    ABISELECT(1664,1092), //bcp->offset
    130, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19438C24,    ABISELECT(1656,1088), //bcp->offset
    114, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19438C2[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C2D1Ev();
extern void _ZN8S19438C2D0Ev();
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S19438C2D1Ev,_ZTv0_n40_N8S19438C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S19438C2D1Ev,_ZThn88_N8S19438C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19438C2D0Ev,_ZTv0_n40_N8S19438C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S19438C2D0Ev,_ZThn88_N8S19438C2D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19438C2D1Ev,_ZTv0_n28_N8S19438C2D1Ev)();
extern void ABISELECT(_ZThn152_N8S19438C2D1Ev,_ZThn96_N8S19438C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19438C2D0Ev,_ZTv0_n28_N8S19438C2D0Ev)();
extern void ABISELECT(_ZThn152_N8S19438C2D0Ev,_ZThn96_N8S19438C2D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C2D1Ev,_ZTvn760_n28_N8S19438C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C2D0Ev,_ZTvn760_n28_N8S19438C2D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C2D1Ev,_ZTvn764_n28_N8S19438C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C2D0Ev,_ZTvn764_n28_N8S19438C2D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S19438C2D1Ev,_ZTv0_n36_N8S19438C2D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19438C2D1Ev,_ZThn864_N8S19438C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19438C2D0Ev,_ZTv0_n36_N8S19438C2D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19438C2D0Ev,_ZThn864_N8S19438C2D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19438C2D1Ev,_ZTv0_n32_N8S19438C2D1Ev)();
extern void ABISELECT(_ZThn1392_N8S19438C2D1Ev,_ZThn920_N8S19438C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19438C2D0Ev,_ZTv0_n32_N8S19438C2D0Ev)();
extern void ABISELECT(_ZThn1392_N8S19438C2D0Ev,_ZThn920_N8S19438C2D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19438C2D1Ev,_ZTv0_n24_N8S19438C2D1Ev)();
extern void ABISELECT(_ZThn1480_N8S19438C2D1Ev,_ZThn964_N8S19438C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19438C2D0Ev,_ZTv0_n24_N8S19438C2D0Ev)();
extern void ABISELECT(_ZThn1480_N8S19438C2D0Ev,_ZThn964_N8S19438C2D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19438C2D1Ev,_ZTv0_n24_N8S19438C2D1Ev)();
extern void ABISELECT(_ZThn1656_N8S19438C2D1Ev,_ZThn1088_N8S19438C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19438C2D0Ev,_ZTv0_n24_N8S19438C2D0Ev)();
extern void ABISELECT(_ZThn1656_N8S19438C2D0Ev,_ZThn1088_N8S19438C2D0Ev)() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C2[] = {
  ABISELECT(1664,1092),
  ABISELECT(1656,1088),
  ABISELECT(1656,1088),
  0,
  ABISELECT(1520,1000),
  ABISELECT(1480,964),
  ABISELECT(1488,968),
  ABISELECT(1480,964),
  ABISELECT(1480,964),
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  ABISELECT(1328,864),
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C2D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19438C2D1Ev,_ZTv0_n40_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19438C2D0Ev,_ZTv0_n40_N8S19438C2D0Ev),
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C2D1Ev,_ZTv0_n28_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C2D0Ev,_ZTv0_n28_N8S19438C2D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C2D1Ev,_ZTvn760_n28_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C2D0Ev,_ZTvn760_n28_N8S19438C2D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C2D1Ev,_ZTvn764_n28_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C2D0Ev,_ZTvn764_n28_N8S19438C2D0Ev),
  ABISELECT(-1328,-864),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C2D1Ev,_ZTv0_n36_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C2D0Ev,_ZTv0_n36_N8S19438C2D0Ev),
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C2D1Ev,_ZTv0_n32_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C2D0Ev,_ZTv0_n32_N8S19438C2D0Ev),
  ABISELECT(-1480,-964),
  ABISELECT(40,36),
  0,
  ABISELECT(-1472,-960),
  0,
  ABISELECT(8,4),
  ABISELECT(-1480,-964),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(-1480,-964),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C2D1Ev,_ZTv0_n24_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C2D0Ev,_ZTv0_n24_N8S19438C2D0Ev),
  0,
  ABISELECT(-1424,-952),
  ABISELECT(-1520,-1000),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  ABISELECT(-1472,-996),
  ABISELECT(-1568,-1044),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  ABISELECT(-1656,-1088),
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  ABISELECT(-1656,-1088),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C2D1Ev,_ZTv0_n24_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C2D0Ev,_ZTv0_n24_N8S19438C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S19438C2[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C3D1Ev();
extern void _ZN8S19438C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C3__8S19438C2[] = {
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  ABISELECT(1328,864),
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C3D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__8S19438C3__8S19438C2[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S19438C3D1Ev,_ZTv0_n40_N8S19438C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S19438C3D1Ev,_ZThn88_N8S19438C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19438C3D0Ev,_ZTv0_n40_N8S19438C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S19438C3D0Ev,_ZThn88_N8S19438C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C8__8S19438C3__8S19438C2[] = {
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19438C3D1Ev,_ZTv0_n40_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19438C3D0Ev,_ZTv0_n40_N8S19438C3D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19438C3D1Ev,_ZTv0_n28_N8S19438C3D1Ev)();
extern void ABISELECT(_ZThn152_N8S19438C3D1Ev,_ZThn96_N8S19438C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19438C3D0Ev,_ZTv0_n28_N8S19438C3D0Ev)();
extern void ABISELECT(_ZThn152_N8S19438C3D0Ev,_ZThn96_N8S19438C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__8S19438C3__8S19438C2[] = {
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C3D1Ev,_ZTv0_n28_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C3D0Ev,_ZTv0_n28_N8S19438C3D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C3D1Ev,_ZTvn760_n28_N8S19438C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C3D0Ev,_ZTvn760_n28_N8S19438C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__8S19438C3__8S19438C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C3D1Ev,_ZTvn760_n28_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C3D0Ev,_ZTvn760_n28_N8S19438C3D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C3D1Ev,_ZTvn764_n28_N8S19438C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C3D0Ev,_ZTvn764_n28_N8S19438C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__8S19438C3__8S19438C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C3D1Ev,_ZTvn764_n28_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C3D0Ev,_ZTvn764_n28_N8S19438C3D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S19438C3D1Ev,_ZTv0_n36_N8S19438C3D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19438C3D1Ev,_ZThn864_N8S19438C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19438C3D0Ev,_ZTv0_n36_N8S19438C3D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19438C3D0Ev,_ZThn864_N8S19438C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C13__8S19438C3__8S19438C2[] = {
  ABISELECT(-1328,-864),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C3D1Ev,_ZTv0_n36_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C3D0Ev,_ZTv0_n36_N8S19438C3D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19438C3D1Ev,_ZTv0_n32_N8S19438C3D1Ev)();
extern void ABISELECT(_ZThn1392_N8S19438C3D1Ev,_ZThn920_N8S19438C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19438C3D0Ev,_ZTv0_n32_N8S19438C3D0Ev)();
extern void ABISELECT(_ZThn1392_N8S19438C3D0Ev,_ZThn920_N8S19438C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__8S19438C3__8S19438C2[] = {
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C3D1Ev,_ZTv0_n32_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C3D0Ev,_ZTv0_n32_N8S19438C3D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__8S19438C2[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C8D1Ev();
extern void _ZN8S19438C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C8__8S19438C2[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(1192,776),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C8D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19438C8D1Ev,_ZTv0_n28_N8S19438C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19438C8D1Ev,_ZThn8_N8S19438C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19438C8D0Ev,_ZTv0_n28_N8S19438C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19438C8D0Ev,_ZThn8_N8S19438C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__8S19438C8__8S19438C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C8D1Ev,_ZTv0_n28_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C8D0Ev,_ZTv0_n28_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__8S19438C8__8S19438C2[] = {
  0,
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C8D1Ev,_ZTvn760_n28_N8S19438C8D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C8D0Ev,_ZTvn760_n28_N8S19438C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__8S19438C8__8S19438C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C8D1Ev,_ZTvn760_n28_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C8D0Ev,_ZTvn760_n28_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C8D1Ev,_ZTvn764_n28_N8S19438C8D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C8D0Ev,_ZTvn764_n28_N8S19438C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__8S19438C8__8S19438C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C8D1Ev,_ZTvn764_n28_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C8D0Ev,_ZTvn764_n28_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S19438C8D1Ev,_ZTv0_n36_N8S19438C8D1Ev)();
extern void ABISELECT(_ZThn1192_N8S19438C8D1Ev,_ZThn776_N8S19438C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19438C8D0Ev,_ZTv0_n36_N8S19438C8D0Ev)();
extern void ABISELECT(_ZThn1192_N8S19438C8D0Ev,_ZThn776_N8S19438C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C13__8S19438C8__8S19438C2[] = {
  ABISELECT(-1192,-776),
  0,
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C8D1Ev,_ZTv0_n36_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C8D0Ev,_ZTv0_n36_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19438C8D1Ev,_ZTv0_n32_N8S19438C8D1Ev)();
extern void ABISELECT(_ZThn1256_N8S19438C8D1Ev,_ZThn832_N8S19438C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19438C8D0Ev,_ZTv0_n32_N8S19438C8D0Ev)();
extern void ABISELECT(_ZThn1256_N8S19438C8D0Ev,_ZThn832_N8S19438C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__8S19438C8__8S19438C2[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C8D1Ev,_ZTv0_n32_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C8D0Ev,_ZTv0_n32_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C9D1Ev();
extern void _ZN8S19438C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C9__8S19438C2[] = {
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C108S19438C9__8S19438C2[] = {
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C108S19438C9__8S19438C2[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__8S19438C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C118S19438C9__8S19438C2[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C12D1Ev();
extern void _ZN9S19438C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__8S19438C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C119S19438C128S19438C9__A1__8S19438C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__8S19438C2[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C128S19438C9__8S19438C2[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__8S19438C9__8S19438C2[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__8S19438C9__8S19438C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C12__8S19438C9__8S19438C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C13D1Ev();
extern void _ZN9S19438C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C13__8S19438C2[] = {
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S19438C13D1Ev,_ZThn56_N9S19438C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S19438C13D0Ev,_ZThn56_N9S19438C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__9S19438C13__8S19438C2[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C13__8S19438C2[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C13__8S19438C2[] = {
  ABISELECT(1176,768),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C13__8S19438C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C13__8S19438C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C14D1Ev();
extern void _ZN9S19438C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C14__8S19438C2[] = {
  ABISELECT(-64,-56),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C14__A1__8S19438C2[] = {
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C14__8S19438C2[] = {
  0,
  ABISELECT(1392,920),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C14__8S19438C2[] = {
  ABISELECT(1240,824),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C14__8S19438C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C14__8S19438C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C17D1Ev,_ZTv0_n24_N9S19438C17D1Ev)();
extern void _ZN9S19438C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C17D0Ev,_ZTv0_n24_N9S19438C17D0Ev)();
extern void _ZN9S19438C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C17__8S19438C2[] = {
  ABISELECT(-1480,-964),
  ABISELECT(40,36),
  0,
  ABISELECT(-1472,-960),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C17D1Ev,_ZTv0_n24_N9S19438C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C17D0Ev,_ZTv0_n24_N9S19438C17D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C17__8S19438C2[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(1472,960),
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__A1__9S19438C17__8S19438C2[] = {
  0,
  ABISELECT(1480,964),
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C20__9S19438C17__8S19438C2[] = {
  0,
  ABISELECT(-1424,-952),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C20__A1__9S19438C17__8S19438C2[] = {
  ABISELECT(-1472,-996),
  ABISELECT(-88,-80),
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C18D1Ev,_ZTv0_n24_N9S19438C18D1Ev)();
extern void _ZN9S19438C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C18D0Ev,_ZTv0_n24_N9S19438C18D0Ev)();
extern void _ZN9S19438C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C18__8S19438C2[] = {
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C18[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C18D1Ev,_ZTv0_n24_N9S19438C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C18D0Ev,_ZTv0_n24_N9S19438C18D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C18__8S19438C2[] = {
  0,
  ABISELECT(1480,964),
  (VTBL_ENTRY)&(_ZTI9S19438C18[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C11__A2__8S19438C2[] = {
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C11__A2__8S19438C2[] = {
  0,
  ABISELECT(1480,964),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C20__8S19438C2[] = {
  ABISELECT(-1424,-952),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C20[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C20__A2__8S19438C2[] = {
  ABISELECT(-1472,-996),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C20__8S19438C2[] = {
  ABISELECT(-1472,-996),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S19438C20[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev)();
extern void _ZN9S19438C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev)();
extern void _ZN9S19438C24D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C24__8S19438C2[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  0,
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C24__8S19438C2[] = {
  0,
  ABISELECT(1656,1088),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C24__8S19438C2[] = {
  ABISELECT(176,124),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(176,124),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C10__9S19438C24__8S19438C2[] = {
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev)();
extern void _ZN9S19438C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev)();
extern void _ZN9S19438C25D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C25__8S19438C2[] = {
  ABISELECT(-176,-124),
  ABISELECT(-328,-224),
  0,
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C25__8S19438C2[] = {
  ABISELECT(176,124),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(176,124),
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C25__8S19438C2[] = {
  0,
  ABISELECT(1656,1088),
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C10__A1__8S19438C2[] = {
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C10__A1__8S19438C2[] = {
  0,
  ABISELECT(1664,1092),
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
static  VTT_ENTRY vtt_S19438C2[] = {
  {&(_ZTV8S19438C2[20]),  20,135},
  {&(_tg__ZTV8S19438C3__8S19438C2[11]),  11,14},
  {&(_tg__ZTV8S19438C4__8S19438C3__8S19438C2[4]),  4,5},
  {&(_tg__ZTV8S19438C8__8S19438C3__8S19438C2[10]),  10,13},
  {&(_tg__ZTV8S19438C9__8S19438C3__8S19438C2[7]),  7,10},
  {&(_tg__ZTV8S19438C3__8S19438C2[11]),  11,14},
  {&(_tg__ZTV9S19438C118S19438C9__8S19438C3__8S19438C2[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__8S19438C3__8S19438C2[5]),  5,8},
  {&(_tg__ZTV9S19438C13__8S19438C3__8S19438C2[9]),  9,12},
  {&(_tg__ZTV9S19438C14__8S19438C3__8S19438C2[8]),  8,11},
  {&(_ZTV8S19438C2[27]),  27,135},
  {&(_ZTV8S19438C2[38]),  38,135},
  {&(_ZTV8S19438C2[48]),  48,135},
  {&(_ZTV8S19438C2[20]),  20,135},
  {&(_ZTV8S19438C2[56]),  56,135},
  {&(_ZTV8S19438C2[64]),  64,135},
  {&(_ZTV8S19438C2[76]),  76,135},
  {&(_ZTV8S19438C2[87]),  87,135},
  {&(_ZTV8S19438C2[102]),  102,135},
  {&(_ZTV8S19438C2[102]),  102,135},
  {&(_ZTV8S19438C2[102]),  102,135},
  {&(_ZTV8S19438C2[109]),  109,135},
  {&(_ZTV8S19438C2[113]),  113,135},
  {&(_ZTV8S19438C2[126]),  126,135},
  {&(_ZTV8S19438C2[126]),  126,135},
  {&(_ZTV8S19438C2[134]),  134,135},
  {&(_tg__ZTV8S19438C4__8S19438C2[3]),  3,4},
  {&(_tg__ZTV8S19438C8__8S19438C2[9]),  9,12},
  {&(_tg__ZTV8S19438C9__8S19438C8__8S19438C2[7]),  7,10},
  {&(_tg__ZTV8S19438C5__8S19438C8__8S19438C2[3]),  3,4},
  {&(_tg__ZTV9S19438C118S19438C9__8S19438C8__8S19438C2[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__8S19438C8__8S19438C2[5]),  5,8},
  {&(_tg__ZTV9S19438C13__8S19438C8__8S19438C2[9]),  9,12},
  {&(_tg__ZTV9S19438C14__8S19438C8__8S19438C2[8]),  8,11},
  {&(_tg__ZTV8S19438C9__8S19438C2[6]),  6,9},
  {&(_tg__ZTV9S19438C108S19438C9__8S19438C2[4]),  4,5},
  {&(_tg__ZTV8S19438C5__9S19438C108S19438C9__8S19438C2[3]),  3,4},
  {&(_tg__ZTV9S19438C118S19438C9__8S19438C2[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C118S19438C9__8S19438C2[3]),  3,4},
  {&(_tg__ZTV9S19438C128S19438C9__8S19438C2[5]),  5,8},
  {&(_tg__ZTV9S19438C119S19438C128S19438C9__A1__8S19438C2[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__8S19438C2[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C128S19438C9__8S19438C2[3]),  3,4},
  {&(_tg__ZTV8S19438C5__8S19438C9__8S19438C2[3]),  3,4},
  {&(_tg__ZTV9S19438C11__8S19438C9__8S19438C2[5]),  5,8},
  {&(_tg__ZTV9S19438C12__8S19438C9__8S19438C2[5]),  5,8},
  {&(_tg__ZTV9S19438C13__8S19438C2[7]),  7,10},
  {&(_tg__ZTV9S19438C14__9S19438C13__8S19438C2[8]),  8,11},
  {&(_tg__ZTV8S19438C5__9S19438C13__8S19438C2[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C13__8S19438C2[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C13__8S19438C2[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C13__8S19438C2[5]),  5,8},
  {&(_tg__ZTV9S19438C14__8S19438C2[6]),  6,9},
  {&(_tg__ZTV8S19438C49S19438C14__A1__8S19438C2[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C14__8S19438C2[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C14__8S19438C2[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C14__8S19438C2[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C14__8S19438C2[5]),  5,8},
  {&(_tg__ZTV9S19438C17__8S19438C2[12]),  12,15},
  {&(_tg__ZTV8S19438C4__9S19438C17__8S19438C2[4]),  4,5},
  {&(_tg__ZTV9S19438C17__8S19438C2[12]),  12,15},
  {&(_tg__ZTV9S19438C17__8S19438C2[12]),  12,15},
  {&(_tg__ZTV8S19438C5__A1__9S19438C17__8S19438C2[3]),  3,4},
  {&(_tg__ZTV9S19438C20__9S19438C17__8S19438C2[4]),  4,5},
  {&(_tg__ZTV8S19438C49S19438C20__A1__9S19438C17__8S19438C2[3]),  3,4},
  {&(_tg__ZTV9S19438C18__8S19438C2[8]),  8,11},
  {&(_tg__ZTV9S19438C18__8S19438C2[8]),  8,11},
  {&(_tg__ZTV8S19438C5__9S19438C18__8S19438C2[3]),  3,4},
  {&(_tg__ZTV9S19438C11__A2__8S19438C2[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C11__A2__8S19438C2[3]),  3,4},
  {&(_tg__ZTV9S19438C20__8S19438C2[3]),  3,4},
  {&(_tg__ZTV8S19438C49S19438C20__A2__8S19438C2[3]),  3,4},
  {&(_tg__ZTV8S19438C4__9S19438C20__8S19438C2[3]),  3,4},
  {&(_tg__ZTV9S19438C24__8S19438C2[12]),  12,16},
  {&(_tg__ZTV8S19438C5__9S19438C24__8S19438C2[3]),  3,4},
  {&(_tg__ZTV9S19438C11__9S19438C24__8S19438C2[6]),  6,9},
  {&(_tg__ZTV9S19438C24__8S19438C2[12]),  12,16},
  {&(_tg__ZTV9S19438C10__9S19438C24__8S19438C2[4]),  4,5},
  {&(_tg__ZTV9S19438C25__8S19438C2[8]),  8,12},
  {&(_tg__ZTV9S19438C11__9S19438C25__8S19438C2[6]),  6,9},
  {&(_tg__ZTV8S19438C5__9S19438C25__8S19438C2[3]),  3,4},
  {&(_tg__ZTV9S19438C10__A1__8S19438C2[4]),  4,5},
  {&(_tg__ZTV8S19438C5__9S19438C10__A1__8S19438C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19438C2[];
extern  VTBL_ENTRY _ZTV8S19438C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C2[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev), // 
  (VTBL_ENTRY)_ZN9S19438C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev), // 
  (VTBL_ENTRY)_ZN9S19438C25D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev), // 
  (VTBL_ENTRY)_ZN9S19438C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev), // 
  (VTBL_ENTRY)_ZN9S19438C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C18D0Ev,_ZTv0_n24_N9S19438C18D0Ev), // 
  (VTBL_ENTRY)_ZN9S19438C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C18D1Ev,_ZTv0_n24_N9S19438C18D1Ev), // 
  (VTBL_ENTRY)_ZN9S19438C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C17D0Ev,_ZTv0_n24_N9S19438C17D0Ev), // 
  (VTBL_ENTRY)_ZN9S19438C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C17D1Ev,_ZTv0_n24_N9S19438C17D1Ev), // 
  (VTBL_ENTRY)_ZN9S19438C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C13D0Ev,_ZThn56_N9S19438C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C13D1Ev,_ZThn56_N9S19438C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C8D0Ev,_ZTv0_n32_N8S19438C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N8S19438C8D0Ev,_ZThn832_N8S19438C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C8D1Ev,_ZTv0_n32_N8S19438C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N8S19438C8D1Ev,_ZThn832_N8S19438C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C8D0Ev,_ZTv0_n36_N8S19438C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S19438C8D0Ev,_ZThn776_N8S19438C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C8D1Ev,_ZTv0_n36_N8S19438C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S19438C8D1Ev,_ZThn776_N8S19438C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C8D0Ev,_ZTv0_n28_N8S19438C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19438C8D0Ev,_ZThn8_N8S19438C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C8D1Ev,_ZTv0_n28_N8S19438C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19438C8D1Ev,_ZThn8_N8S19438C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C3D0Ev,_ZTv0_n32_N8S19438C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19438C3D0Ev,_ZThn920_N8S19438C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C3D1Ev,_ZTv0_n32_N8S19438C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19438C3D1Ev,_ZThn920_N8S19438C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C3D0Ev,_ZTv0_n36_N8S19438C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19438C3D0Ev,_ZThn864_N8S19438C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C3D1Ev,_ZTv0_n36_N8S19438C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19438C3D1Ev,_ZThn864_N8S19438C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C3D0Ev,_ZTv0_n28_N8S19438C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19438C3D0Ev,_ZThn96_N8S19438C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C3D1Ev,_ZTv0_n28_N8S19438C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19438C3D1Ev,_ZThn96_N8S19438C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19438C3D0Ev,_ZTv0_n40_N8S19438C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19438C3D0Ev,_ZThn88_N8S19438C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19438C3D1Ev,_ZTv0_n40_N8S19438C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19438C3D1Ev,_ZThn88_N8S19438C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19438C2D0Ev,_ZTv0_n24_N8S19438C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N8S19438C2D0Ev,_ZThn1088_N8S19438C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1480_N8S19438C2D0Ev,_ZThn964_N8S19438C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19438C2D1Ev,_ZTv0_n24_N8S19438C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N8S19438C2D1Ev,_ZThn1088_N8S19438C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1480_N8S19438C2D1Ev,_ZThn964_N8S19438C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C2D0Ev,_ZTv0_n32_N8S19438C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19438C2D0Ev,_ZThn920_N8S19438C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C2D1Ev,_ZTv0_n32_N8S19438C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19438C2D1Ev,_ZThn920_N8S19438C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C2D0Ev,_ZTv0_n36_N8S19438C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19438C2D0Ev,_ZThn864_N8S19438C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C2D1Ev,_ZTv0_n36_N8S19438C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19438C2D1Ev,_ZThn864_N8S19438C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C2D0Ev,_ZTv0_n28_N8S19438C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19438C2D0Ev,_ZThn96_N8S19438C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C2D1Ev,_ZTv0_n28_N8S19438C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19438C2D1Ev,_ZThn96_N8S19438C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19438C2D0Ev,_ZTv0_n40_N8S19438C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19438C2D0Ev,_ZThn88_N8S19438C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19438C2D1Ev,_ZTv0_n40_N8S19438C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19438C2D1Ev,_ZThn88_N8S19438C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19438C2 = {  "S19438C2", // class name
  bases_S19438C2, 43,
  &(vtc_S19438C2[0]), // expected_vtbl_contents
  &(vtt_S19438C2[0]), // expected_vtt_contents
  ABISELECT(2832,1852), // object size
  NSPAIRA(_ZTI8S19438C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19438C2),135, //virtual function table var
  20, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19438C2),83, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C26  : S19438C13 {
  virtual  ~S19438C26(); // _ZN9S19438C26D2Ev
  virtual void  v3(); // _ZN9S19438C262v3Ev
  S19438C26(); // tgen
};
//SIG(-1 S19438C26) C1{ BC2{ VBC3{ VBC4{ v2} BC5{ BC4 VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC7 BC9{ VBC4 FC5[9]} BC10{ VBC6 VBC4 BC7 vd} BC11{ BC10 vd}} vd} BC12{ BC13{ BC6 BC4} FD}} vd v1}


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

static void Test_S19438C26()
{
  extern Class_Descriptor cd_S19438C26;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S19438C26, buf);
    S19438C26 *dp, &lv = *(dp=new (buf) S19438C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S19438C26)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19438C26)");
    /*is_ambiguous_... S19438C14::S19438C5 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C14*), ABISELECT(192,140), "S19438C26");
    check_base_class_offset(lv, (S19438C5*)(S19438C10*)(S19438C9*), ABISELECT(192,140), "S19438C26");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C9*), ABISELECT(192,140), "S19438C26");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(192,140), "S19438C26");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*)(S19438C14*), ABISELECT(64,56), "S19438C26");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*)(S19438C14*), ABISELECT(152,100), "S19438C26");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C9*), ABISELECT(152,100), "S19438C26");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(152,100), "S19438C26");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*)(S19438C14*), ABISELECT(64,56), "S19438C26");
    check_base_class_offset(lv, (S19438C4*)(S19438C14*), ABISELECT(64,56), "S19438C26");
    /*is_ambiguous_... S19438C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C9*), 0, "S19438C26");
    check_base_class_offset(lv, (S19438C10*)(S19438C9*), ABISELECT(192,140), "S19438C26");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C9*), ABISELECT(1352,900), "S19438C26");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C11*)(S19438C9*), ABISELECT(1352,900), "S19438C26");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1360,904), "S19438C26");
    check_base_class_offset(lv, (S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1360,904), "S19438C26");
    check_base_class_offset(lv, (S19438C12*)(S19438C9*), ABISELECT(1360,904), "S19438C26");
    check_base_class_offset(lv, (S19438C9*)(S19438C14*), ABISELECT(192,140), "S19438C26");
    check_base_class_offset(lv, (S19438C14*)(S19438C13*), ABISELECT(64,56), "S19438C26");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(8,4), "S19438C26");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*)(S19438C15*)(S19438C13*), 0, "S19438C26");
    check_base_class_offset(lv, (S19438C16*)(S19438C15*)(S19438C13*), 0, "S19438C26");
    check_base_class_offset(lv, (S19438C15*)(S19438C13*), 0, "S19438C26");
    check_base_class_offset(lv, (S19438C13*), 0, "S19438C26");
    test_class_info(&lv, &cd_S19438C26);
    dp->~S19438C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C26(Test_S19438C26, "S19438C26", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN9S19438C26C1Ev();
extern void _ZN9S19438C26D2Ev();
Name_Map name_map_S19438C26[] = {
  NSPAIR(_ZN9S19438C26C1Ev),
  NSPAIR(_ZN9S19438C26D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C12;
extern VTBL_ENTRY _ZTI9S19438C12[];
extern  VTBL_ENTRY _ZTV9S19438C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C12[];
extern Class_Descriptor cd_S19438C9;
extern VTBL_ENTRY _ZTI8S19438C9[];
extern  VTBL_ENTRY _ZTV8S19438C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C9[];
extern Class_Descriptor cd_S19438C14;
extern VTBL_ENTRY _ZTI9S19438C14[];
extern  VTBL_ENTRY _ZTV9S19438C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C14[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C15;
extern VTBL_ENTRY _ZTI9S19438C15[];
extern  VTBL_ENTRY _ZTV9S19438C15[];
extern Class_Descriptor cd_S19438C13;
extern VTBL_ENTRY _ZTI9S19438C13[];
extern  VTBL_ENTRY _ZTV9S19438C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C13[];
static Base_Class bases_S19438C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    ABISELECT(192,140), //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
    6, //immediately_derived
  0, 1},
  {&cd_S19438C5,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S19438C4,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C10,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19438C11,    ABISELECT(1352,900), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19438C12,    ABISELECT(1360,904), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19438C9,    ABISELECT(192,140), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19438C14,    ABISELECT(64,56), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19438C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19438C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19438C13,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C26[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C26D1Ev();
extern void _ZN9S19438C26D0Ev();
extern void _ZN9S19438C262v3Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19438C26D1Ev,_ZTv0_n32_N9S19438C26D1Ev)();
extern void ABISELECT(_ZThn64_N9S19438C26D1Ev,_ZThn56_N9S19438C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19438C26D0Ev,_ZTv0_n32_N9S19438C26D0Ev)();
extern void ABISELECT(_ZThn64_N9S19438C26D0Ev,_ZThn56_N9S19438C26D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C26D1Ev,_ZTv0_n28_N9S19438C26D1Ev)();
extern void ABISELECT(_ZThn192_N9S19438C26D1Ev,_ZThn140_N9S19438C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19438C26D0Ev,_ZTv0_n28_N9S19438C26D0Ev)();
extern void ABISELECT(_ZThn192_N9S19438C26D0Ev,_ZThn140_N9S19438C26D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C26D1Ev,_ZTvn760_n28_N9S19438C26D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C26D0Ev,_ZTvn760_n28_N9S19438C26D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C26D1Ev,_ZTvn764_n28_N9S19438C26D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C26D0Ev,_ZTvn764_n28_N9S19438C26D0Ev)();
static  VTBL_ENTRY vtc_S19438C26[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C26[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C26D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C26D0Ev,
  (VTBL_ENTRY)&_ZN9S19438C262v3Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S19438C26[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C26D1Ev,_ZTv0_n32_N9S19438C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C26D0Ev,_ZTv0_n32_N9S19438C26D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S19438C26[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C26D1Ev,_ZTv0_n28_N9S19438C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C26D0Ev,_ZTv0_n28_N9S19438C26D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S19438C26[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C26D1Ev,_ZTvn760_n28_N9S19438C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C26D0Ev,_ZTvn760_n28_N9S19438C26D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S19438C26[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C26D1Ev,_ZTvn764_n28_N9S19438C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C26D0Ev,_ZTvn764_n28_N9S19438C26D0Ev),
};
extern VTBL_ENTRY _ZTV9S19438C26[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C13D1Ev();
extern void _ZN9S19438C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C13__9S19438C26[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S19438C13D1Ev,_ZThn56_N9S19438C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S19438C13D0Ev,_ZThn56_N9S19438C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__9S19438C13__9S19438C26[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZThn192_N9S19438C13D1Ev,_ZThn140_N9S19438C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev)();
extern void ABISELECT(_ZThn192_N9S19438C13D0Ev,_ZThn140_N9S19438C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C13__9S19438C26[] = {
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C13__9S19438C26[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C13__9S19438C26[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C14D1Ev();
extern void _ZN9S19438C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C14__9S19438C26[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C14__9S19438C26[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZThn128_N9S19438C14D1Ev,_ZThn84_N9S19438C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev)();
extern void ABISELECT(_ZThn128_N9S19438C14D0Ev,_ZThn84_N9S19438C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C14__9S19438C26[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C14__9S19438C26[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C14__9S19438C26[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C9D1Ev();
extern void _ZN8S19438C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C26[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C108S19438C9__9S19438C26[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C26[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C118S19438C9__9S19438C26[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C12D1Ev();
extern void _ZN9S19438C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C26[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C119S19438C128S19438C9__A1__9S19438C26[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__9S19438C26[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C128S19438C9__9S19438C26[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__8S19438C9__9S19438C26[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C12__8S19438C9__9S19438C26[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev),
};
static  VTT_ENTRY vtt_S19438C26[] = {
  {&(_ZTV9S19438C26[7]),  7,48},
  {&(_tg__ZTV9S19438C13__9S19438C26[7]),  7,10},
  {&(_tg__ZTV9S19438C14__9S19438C13__9S19438C26[8]),  8,11},
  {&(_tg__ZTV8S19438C9__9S19438C13__9S19438C26[7]),  7,10},
  {&(_tg__ZTV8S19438C9__9S19438C13__9S19438C26[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C13__9S19438C26[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C13__9S19438C26[5]),  5,8},
  {&(_ZTV9S19438C26[19]),  19,48},
  {&(_ZTV9S19438C26[29]),  29,48},
  {&(_ZTV9S19438C26[29]),  29,48},
  {&(_ZTV9S19438C26[37]),  37,48},
  {&(_ZTV9S19438C26[45]),  45,48},
  {&(_tg__ZTV9S19438C14__9S19438C26[6]),  6,9},
  {&(_tg__ZTV8S19438C49S19438C14__9S19438C26[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C14__9S19438C26[7]),  7,10},
  {&(_tg__ZTV8S19438C9__9S19438C14__9S19438C26[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C14__9S19438C26[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C14__9S19438C26[5]),  5,8},
  {&(_tg__ZTV8S19438C9__9S19438C26[6]),  6,9},
  {&(_tg__ZTV9S19438C108S19438C9__9S19438C26[4]),  4,5},
  {&(_tg__ZTV9S19438C108S19438C9__9S19438C26[4]),  4,5},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C26[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C118S19438C9__9S19438C26[3]),  3,4},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C26[5]),  5,8},
  {&(_tg__ZTV9S19438C119S19438C128S19438C9__A1__9S19438C26[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__9S19438C26[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C128S19438C9__9S19438C26[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C26[6]),  6,9},
  {&(_tg__ZTV9S19438C11__8S19438C9__9S19438C26[5]),  5,8},
  {&(_tg__ZTV9S19438C12__8S19438C9__9S19438C26[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19438C26[];
extern  VTBL_ENTRY _ZTV9S19438C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C26[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19438C14D0Ev,_ZThn84_N9S19438C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19438C14D1Ev,_ZThn84_N9S19438C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19438C13D0Ev,_ZThn140_N9S19438C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19438C13D1Ev,_ZThn140_N9S19438C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C13D0Ev,_ZThn56_N9S19438C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C13D1Ev,_ZThn56_N9S19438C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C26D0Ev,_ZTv0_n28_N9S19438C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19438C26D0Ev,_ZThn140_N9S19438C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C26D1Ev,_ZTv0_n28_N9S19438C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19438C26D1Ev,_ZThn140_N9S19438C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C26D0Ev,_ZTv0_n32_N9S19438C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C26D0Ev,_ZThn56_N9S19438C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C26D1Ev,_ZTv0_n32_N9S19438C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C26D1Ev,_ZThn56_N9S19438C26D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19438C26 = {  "S19438C26", // class name
  bases_S19438C26, 19,
  &(vtc_S19438C26[0]), // expected_vtbl_contents
  &(vtt_S19438C26[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI9S19438C26),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19438C26),48, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C26),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C28  : virtual S19438C4 {
  ~S19438C28(); // tgen
  S19438C28(); // tgen
};
//SIG(-1 S19438C28) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]}}


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

static void Test_S19438C28()
{
  extern Class_Descriptor cd_S19438C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S19438C28, buf);
    S19438C28 *dp, &lv = *(dp=new (buf) S19438C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S19438C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C28)");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*), ABISELECT(8,4), "S19438C28");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*), ABISELECT(96,48), "S19438C28");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*), ABISELECT(8,4), "S19438C28");
    check_base_class_offset(lv, (S19438C4*), ABISELECT(8,4), "S19438C28");
    test_class_info(&lv, &cd_S19438C28);
    dp->~S19438C28();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C28(Test_S19438C28, "S19438C28", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN9S19438C28C1Ev();
extern void _ZN9S19438C28D1Ev();
Name_Map name_map_S19438C28[] = {
  NSPAIR(_ZN9S19438C28C1Ev),
  NSPAIR(_ZN9S19438C28D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
static Base_Class bases_S19438C28[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C4,    ABISELECT(8,4), //bcp->offset
    4, //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 _ZTI9S19438C28[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C28[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C28[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19438C28[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S19438C28[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C28[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
static  VTT_ENTRY vtt_S19438C28[] = {
  {&(_ZTV9S19438C28[4]),  4,9},
  {&(_ZTV9S19438C28[8]),  8,9},
  {&(_tg__ZTV8S19438C4__9S19438C28[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19438C28[];
extern  VTBL_ENTRY _ZTV9S19438C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C28[];
Class_Descriptor cd_S19438C28 = {  "S19438C28", // class name
  bases_S19438C28, 4,
  &(vtc_S19438C28[0]), // expected_vtbl_contents
  &(vtt_S19438C28[0]), // expected_vtt_contents
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI9S19438C28),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19438C28),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C28),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C27  : virtual S19438C28 {
  ~S19438C27(); // tgen
  S19438C27(); // tgen
};
//SIG(-1 S19438C27) C1{ VBC2{ VBC3{ BC4{ v1} VBC5{ m FL[5]} BC6{ m} Fp[10]}}}


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

static void Test_S19438C27()
{
  extern Class_Descriptor cd_S19438C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S19438C27, buf);
    S19438C27 *dp, &lv = *(dp=new (buf) S19438C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S19438C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C27)");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*), ABISELECT(8,4), "S19438C27");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*), ABISELECT(96,48), "S19438C27");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*), ABISELECT(8,4), "S19438C27");
    check_base_class_offset(lv, (S19438C4*)(S19438C28*), ABISELECT(8,4), "S19438C27");
    check_base_class_offset(lv, (S19438C28*), 0, "S19438C27");
    test_class_info(&lv, &cd_S19438C27);
    dp->~S19438C27();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C27(Test_S19438C27, "S19438C27", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN9S19438C27C1Ev();
extern void _ZN9S19438C27D1Ev();
Name_Map name_map_S19438C27[] = {
  NSPAIR(_ZN9S19438C27C1Ev),
  NSPAIR(_ZN9S19438C27D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S19438C28;
extern VTBL_ENTRY _ZTI9S19438C28[];
extern  VTBL_ENTRY _ZTV9S19438C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C28[];
static Base_Class bases_S19438C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C4,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19438C28,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C27[];
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C27[] = {
  0,
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C27[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19438C27[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S19438C27[];
static  VTBL_ENTRY _tg__ZTV9S19438C28__9S19438C27[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C28[0]),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C28__9S19438C27[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19438C28[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C27[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
static  VTT_ENTRY vtt_S19438C27[] = {
  {&(_ZTV9S19438C27[5]),  5,10},
  {&(_ZTV9S19438C27[5]),  5,10},
  {&(_ZTV9S19438C27[9]),  9,10},
  {&(_tg__ZTV9S19438C28__9S19438C27[4]),  4,4},
  {&(_tg__ZTV8S19438C4__9S19438C28__9S19438C27[4]),  4,5},
  {&(_tg__ZTV8S19438C4__9S19438C27[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19438C27[];
extern  VTBL_ENTRY _ZTV9S19438C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C27[];
Class_Descriptor cd_S19438C27 = {  "S19438C27", // class name
  bases_S19438C27, 5,
  &(vtc_S19438C27[0]), // expected_vtbl_contents
  &(vtt_S19438C27[0]), // expected_vtt_contents
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI9S19438C27),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19438C27),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C27),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  S19438C30  : virtual S20997C6 , S19438C25 , virtual S19438C16 {
  ~S19438C30(); // tgen
  S19438C30(); // tgen
};
//SIG(-1 S19438C30) C1{ VBC2{ m FL[5]} BC3{ VBC4{ m} VBC5{ VBC2 VBC6{ v1} BC4 vd} v2} VBC7{ BC2 BC6}}


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

static void Test_S19438C30()
{
  extern Class_Descriptor cd_S19438C30;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,23)];
    init_test(&cd_S19438C30, buf);
    S19438C30 *dp, &lv = *(dp=new (buf) S19438C30());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,88), "sizeof(S19438C30)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C30)");
    /*is_ambiguous_... S19438C30::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S19438C30");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*), ABISELECT(8,4), "S19438C30");
    /*is_ambiguous_... S19438C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C25*), ABISELECT(48,44), "S19438C30");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*), 0, "S19438C30");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*), 0, "S19438C30");
    check_base_class_offset(lv, (S19438C11*)(S19438C25*), 0, "S19438C30");
    check_base_class_offset(lv, (S19438C25*), 0, "S19438C30");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*), ABISELECT(56,48), "S19438C30");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*), ABISELECT(48,44), "S19438C30");
    check_base_class_offset(lv, (S19438C16*), ABISELECT(48,44), "S19438C30");
    test_class_info(&lv, &cd_S19438C30);
    dp->~S19438C30();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C30(Test_S19438C30, "S19438C30", ABISELECT(96,88));

#else // __cplusplus

extern void _ZN9S19438C30C1Ev();
extern void _ZN9S19438C30D1Ev();
Name_Map name_map_S19438C30[] = {
  NSPAIR(_ZN9S19438C30C1Ev),
  NSPAIR(_ZN9S19438C30D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C25;
extern VTBL_ENTRY _ZTI9S19438C25[];
extern  VTBL_ENTRY _ZTV9S19438C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C25[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
static Base_Class bases_S19438C30[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19438C5,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19438C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19438C25,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19438C5,    ABISELECT(48,44), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19438C16,    ABISELECT(48,44), //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C30[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C30D1Ev();
extern void _ZN9S19438C30D0Ev();
extern void _ZN9S19438C252v2Ev();
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C30[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C30[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C30D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C30D0Ev,
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S19438C30[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S19438C30[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C25D1Ev();
extern void _ZN9S19438C25D0Ev();
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C25__9S19438C30[] = {
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C25D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C25D0Ev,
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C30[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
static  VTT_ENTRY vtt_S19438C30[] = {
  {&(_ZTV9S19438C30[9]),  9,17},
  {&(_tg__ZTV9S19438C25__9S19438C30[8]),  8,12},
  {&(_tg__ZTV9S19438C25__9S19438C30[8]),  8,12},
  {&(_tg__ZTV9S19438C25__9S19438C30[8]),  8,12},
  {&(_ZTV9S19438C30[9]),  9,17},
  {&(_ZTV9S19438C30[9]),  9,17},
  {&(_ZTV9S19438C30[16]),  16,17},
  {&(_tg__ZTV9S19438C11__9S19438C30[5]),  5,8},
  {&(_tg__ZTV9S19438C11__9S19438C30[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19438C30[];
extern  VTBL_ENTRY _ZTV9S19438C30[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C30[];
Class_Descriptor cd_S19438C30 = {  "S19438C30", // class name
  bases_S19438C30, 9,
  &(vtc_S19438C30[0]), // expected_vtbl_contents
  &(vtt_S19438C30[0]), // expected_vtt_contents
  ABISELECT(96,88), // object size
  NSPAIRA(_ZTI9S19438C30),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19438C30),17, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C30),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C29  : virtual S19438C30 , S19438C24 {
  virtual void  v4(); // _ZN9S19438C292v4Ev
  ~S19438C29(); // tgen
  S19438C29(); // tgen
};
//SIG(-1 S19438C29) C1{ VBC2{ VBC3{ m FL[5]} BC4{ VBC5{ m} VBC6{ VBC3 VBC7{ v2} BC5 vd} v3} VBC8{ BC3 BC7}} BC9{ VBC7 VBC6 VBC10{ m FL[4]} VBC4 VBC11{ VBC7 FC12{ BC7 VBC3 BC5 Fp[10]}[9]} vd} v1}


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

static void Test_S19438C29()
{
  extern Class_Descriptor cd_S19438C29;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(163,222)];
    init_test(&cd_S19438C29, buf);
    S19438C29 *dp, &lv = *(dp=new (buf) S19438C29());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1296,884), "sizeof(S19438C29)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C29)");
    /*is_ambiguous_... S19438C30::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C30*), ABISELECT(16,8), "S19438C29");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*), ABISELECT(16,8), "S19438C29");
    /*is_ambiguous_... S19438C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C25*)(S19438C30*), 0, "S19438C29");
    /*is_ambiguous_... S19438C29::S19438C25 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C25*), 0, "S19438C29");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*), ABISELECT(8,4), "S19438C29");
    check_base_class_offset(lv, (S19438C5*)(S19438C24*), ABISELECT(8,4), "S19438C29");
    check_base_class_offset(lv, (S19438C5*)(S19438C10*), ABISELECT(8,4), "S19438C29");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*), ABISELECT(8,4), "S19438C29");
    check_base_class_offset(lv, (S19438C11*)(S19438C25*)(S19438C30*), ABISELECT(8,4), "S19438C29");
    check_base_class_offset(lv, (S19438C11*)(S19438C24*), ABISELECT(8,4), "S19438C29");
    /*is_ambiguous_... S19438C29::S19438C25 */ AMB_check_base_class_offset(lv, (S19438C11*)(S19438C25*), ABISELECT(8,4), "S19438C29");
    check_base_class_offset(lv, (S19438C25*)(S19438C30*), ABISELECT(8,4), "S19438C29");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*), ABISELECT(64,52), "S19438C29");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*), ABISELECT(56,48), "S19438C29");
    check_base_class_offset(lv, (S19438C16*)(S19438C30*), ABISELECT(56,48), "S19438C29");
    check_base_class_offset(lv, (S19438C30*), ABISELECT(8,4), "S19438C29");
    check_base_class_offset(lv, (S10258C6_nt*)(S19438C24*), ABISELECT(104,92), "S19438C29");
    check_base_class_offset(lv, (S19438C25*)(S19438C24*), 0, "S19438C29");
    check_base_class_offset(lv, (S19438C10*)(S19438C24*), ABISELECT(136,124), "S19438C29");
    check_base_class_offset(lv, (S19438C24*), 0, "S19438C29");
    test_class_info(&lv, &cd_S19438C29);
    dp->~S19438C29();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C29(Test_S19438C29, "S19438C29", ABISELECT(1296,884));

#else // __cplusplus

extern void _ZN9S19438C29C1Ev();
extern void _ZN9S19438C29D1Ev();
Name_Map name_map_S19438C29[] = {
  NSPAIR(_ZN9S19438C29C1Ev),
  NSPAIR(_ZN9S19438C29D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C25;
extern VTBL_ENTRY _ZTI9S19438C25[];
extern  VTBL_ENTRY _ZTV9S19438C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C25[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C30;
extern VTBL_ENTRY _ZTI9S19438C30[];
extern  VTBL_ENTRY _ZTV9S19438C30[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C30[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S19438C25;
extern VTBL_ENTRY _ZTI9S19438C25[];
extern  VTBL_ENTRY _ZTV9S19438C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C25[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
extern Class_Descriptor cd_S19438C24;
extern VTBL_ENTRY _ZTI9S19438C24[];
extern  VTBL_ENTRY _ZTV9S19438C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C24[];
static Base_Class bases_S19438C29[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C5,    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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19438C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19438C25,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //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_S20997C6,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19438C5,    ABISELECT(56,48), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19438C16,    ABISELECT(56,48), //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
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19438C30,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(104,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19438C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19438C10,    ABISELECT(136,124), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19438C24,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C29[];
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev)();
extern void _ZN9S19438C29D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev)();
extern void _ZN9S19438C29D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
extern void _ZN9S19438C292v4Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev)();
extern void ABISELECT(_ZThn8_N9S19438C29D1Ev,_ZThn4_N9S19438C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev)();
extern void ABISELECT(_ZThn8_N9S19438C29D0Ev,_ZThn4_N9S19438C29D0Ev)() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C29[] = {
  ABISELECT(56,48),
  ABISELECT(8,4),
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C29[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
  (VTBL_ENTRY)&_ZN9S19438C292v4Ev,
  0,
  ABISELECT(48,44),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19438C29[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S19438C29[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI9S19438C29[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S19438C29[];
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev)();
extern void _ZN9S19438C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev)();
extern void _ZN9S19438C24D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C24__9S19438C29[] = {
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev)();
extern void ABISELECT(_ZThn8_N9S19438C24D1Ev,_ZThn4_N9S19438C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev)();
extern void ABISELECT(_ZThn8_N9S19438C24D0Ev,_ZThn4_N9S19438C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C24__9S19438C29[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C10__9S19438C24__9S19438C29[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C30D1Ev,_ZTv0_n24_N9S19438C30D1Ev)();
extern void _ZN9S19438C30D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C30D0Ev,_ZTv0_n24_N9S19438C30D0Ev)();
extern void _ZN9S19438C30D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C30__9S19438C29[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C30[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C30D1Ev,_ZTv0_n24_N9S19438C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C30D0Ev,_ZTv0_n24_N9S19438C30D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev)();
extern void _ZN9S19438C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev)();
extern void _ZN9S19438C25D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C259S19438C30__9S19438C29[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C59S19438C16__A1__9S19438C30__9S19438C29[] = {
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S19438C30[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C29[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev)();
extern void _ZN9S19438C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev)();
extern void _ZN9S19438C25D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C25__A1__9S19438C29[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev)();
extern void ABISELECT(_ZThn8_N9S19438C25D1Ev,_ZThn4_N9S19438C25D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev)();
extern void ABISELECT(_ZThn8_N9S19438C25D0Ev,_ZThn4_N9S19438C25D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C25__A1__9S19438C29[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C10__9S19438C29[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C10__9S19438C29[] = {
  0,
  ABISELECT(128,120),
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
static  VTT_ENTRY vtt_S19438C29[] = {
  {&(_ZTV9S19438C29[14]),  14,42},
  {&(_tg__ZTV9S19438C24__9S19438C29[12]),  12,16},
  {&(_tg__ZTV9S19438C11__9S19438C24__9S19438C29[6]),  6,9},
  {&(_tg__ZTV9S19438C11__9S19438C24__9S19438C29[6]),  6,9},
  {&(_tg__ZTV9S19438C24__9S19438C29[12]),  12,16},
  {&(_tg__ZTV9S19438C10__9S19438C24__9S19438C29[4]),  4,5},
  {&(_ZTV9S19438C29[29]),  29,42},
  {&(_ZTV9S19438C29[29]),  29,42},
  {&(_ZTV9S19438C29[29]),  29,42},
  {&(_ZTV9S19438C29[36]),  36,42},
  {&(_ZTV9S19438C29[14]),  14,42},
  {&(_ZTV9S19438C29[41]),  41,42},
  {&(_tg__ZTV9S19438C30__9S19438C29[9]),  9,13},
  {&(_tg__ZTV9S19438C259S19438C30__9S19438C29[8]),  8,12},
  {&(_tg__ZTV9S19438C259S19438C30__9S19438C29[8]),  8,12},
  {&(_tg__ZTV9S19438C259S19438C30__9S19438C29[8]),  8,12},
  {&(_tg__ZTV9S19438C30__9S19438C29[9]),  9,13},
  {&(_tg__ZTV9S19438C30__9S19438C29[9]),  9,13},
  {&(_tg__ZTV8S19438C59S19438C16__A1__9S19438C30__9S19438C29[3]),  3,4},
  {&(_tg__ZTV9S19438C11__9S19438C29[5]),  5,8},
  {&(_tg__ZTV9S19438C11__9S19438C29[5]),  5,8},
  {&(_tg__ZTV9S19438C25__A1__9S19438C29[8]),  8,12},
  {&(_tg__ZTV9S19438C11__9S19438C25__A1__9S19438C29[6]),  6,9},
  {&(_tg__ZTV9S19438C11__9S19438C25__A1__9S19438C29[6]),  6,9},
  {&(_tg__ZTV9S19438C10__9S19438C29[4]),  4,5},
  {&(_tg__ZTV8S19438C5__9S19438C10__9S19438C29[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19438C29[];
extern  VTBL_ENTRY _ZTV9S19438C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C29[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19438C25D0Ev,_ZThn4_N9S19438C25D0Ev),
  (VTBL_ENTRY)_ZN9S19438C25D0Ev,
  (VTBL_ENTRY)_ZN9S19438C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19438C25D1Ev,_ZThn4_N9S19438C25D1Ev),
  (VTBL_ENTRY)_ZN9S19438C25D1Ev,
  (VTBL_ENTRY)_ZN9S19438C25D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C30D0Ev,_ZTv0_n24_N9S19438C30D0Ev), // 
  (VTBL_ENTRY)_ZN9S19438C30D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C30D1Ev,_ZTv0_n24_N9S19438C30D1Ev), // 
  (VTBL_ENTRY)_ZN9S19438C30D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19438C24D0Ev,_ZThn4_N9S19438C24D0Ev),
  (VTBL_ENTRY)_ZN9S19438C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19438C24D1Ev,_ZThn4_N9S19438C24D1Ev),
  (VTBL_ENTRY)_ZN9S19438C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19438C29D0Ev,_ZThn4_N9S19438C29D0Ev),
  (VTBL_ENTRY)_ZN9S19438C29D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19438C29D1Ev,_ZThn4_N9S19438C29D1Ev),
  (VTBL_ENTRY)_ZN9S19438C29D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19438C29 = {  "S19438C29", // class name
  bases_S19438C29, 14,
  &(vtc_S19438C29[0]), // expected_vtbl_contents
  &(vtt_S19438C29[0]), // expected_vtt_contents
  ABISELECT(1296,884), // object size
  NSPAIRA(_ZTI9S19438C29),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19438C29),42, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C29),26, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C31  : virtual S19438C14 {
  int s19438c31f0;
  ~S19438C31(); // tgen
  S19438C31(); // tgen
};
//SIG(-1 S19438C31) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} Fi}


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

static void Test_S19438C31()
{
  extern Class_Descriptor cd_S19438C31;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(166,216)];
    init_test(&cd_S19438C31, buf);
    S19438C31 *dp, &lv = *(dp=new (buf) S19438C31());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1320,860), "sizeof(S19438C31)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19438C31)");
    /*is_ambiguous_... S19438C14::S19438C5 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C14*), 0, "S19438C31");
    check_base_class_offset(lv, (S19438C5*)(S19438C10*)(S19438C9*), 0, "S19438C31");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C9*), 0, "S19438C31");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C12*)(S19438C9*), 0, "S19438C31");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*)(S19438C14*), ABISELECT(16,8), "S19438C31");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*)(S19438C14*), ABISELECT(104,52), "S19438C31");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C9*), ABISELECT(104,52), "S19438C31");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(104,52), "S19438C31");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*)(S19438C14*), ABISELECT(16,8), "S19438C31");
    check_base_class_offset(lv, (S19438C4*)(S19438C14*), ABISELECT(16,8), "S19438C31");
    /*is_ambiguous_... S19438C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C9*), 0, "S19438C31");
    check_base_class_offset(lv, (S19438C10*)(S19438C9*), ABISELECT(144,92), "S19438C31");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C9*), ABISELECT(1304,852), "S19438C31");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C11*)(S19438C9*), ABISELECT(1304,852), "S19438C31");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1312,856), "S19438C31");
    check_base_class_offset(lv, (S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1312,856), "S19438C31");
    check_base_class_offset(lv, (S19438C12*)(S19438C9*), ABISELECT(1312,856), "S19438C31");
    check_base_class_offset(lv, (S19438C9*)(S19438C14*), ABISELECT(144,92), "S19438C31");
    check_base_class_offset(lv, (S19438C14*), ABISELECT(16,8), "S19438C31");
    check_field_offset(lv, s19438c31f0, ABISELECT(8,4), "S19438C31.s19438c31f0");
    test_class_info(&lv, &cd_S19438C31);
    dp->~S19438C31();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C31(Test_S19438C31, "S19438C31", ABISELECT(1320,860));

#else // __cplusplus

extern void _ZN9S19438C31C1Ev();
extern void _ZN9S19438C31D1Ev();
Name_Map name_map_S19438C31[] = {
  NSPAIR(_ZN9S19438C31C1Ev),
  NSPAIR(_ZN9S19438C31D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C12;
extern VTBL_ENTRY _ZTI9S19438C12[];
extern  VTBL_ENTRY _ZTV9S19438C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C12[];
extern Class_Descriptor cd_S19438C9;
extern VTBL_ENTRY _ZTI8S19438C9[];
extern  VTBL_ENTRY _ZTV8S19438C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C9[];
extern Class_Descriptor cd_S19438C14;
extern VTBL_ENTRY _ZTI9S19438C14[];
extern  VTBL_ENTRY _ZTV9S19438C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C14[];
static Base_Class bases_S19438C31[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19438C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19438C4,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C10,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1304,852), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1312,856), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19438C12,    ABISELECT(1312,856), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19438C9,    ABISELECT(144,92), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19438C14,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19438C31[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C31D1Ev();
extern void _ZN9S19438C31D0Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19438C31D1Ev,_ZTv0_n32_N9S19438C31D1Ev)();
extern void ABISELECT(_ZThn16_N9S19438C31D1Ev,_ZThn8_N9S19438C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19438C31D0Ev,_ZTv0_n32_N9S19438C31D0Ev)();
extern void ABISELECT(_ZThn16_N9S19438C31D0Ev,_ZThn8_N9S19438C31D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C31D1Ev,_ZTv0_n28_N9S19438C31D1Ev)();
extern void ABISELECT(_ZThn144_N9S19438C31D1Ev,_ZThn92_N9S19438C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19438C31D0Ev,_ZTv0_n28_N9S19438C31D0Ev)();
extern void ABISELECT(_ZThn144_N9S19438C31D0Ev,_ZThn92_N9S19438C31D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C31D1Ev,_ZTvn760_n28_N9S19438C31D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C31D0Ev,_ZTvn760_n28_N9S19438C31D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C31D1Ev,_ZTvn764_n28_N9S19438C31D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C31D0Ev,_ZTvn764_n28_N9S19438C31D0Ev)();
static  VTBL_ENTRY vtc_S19438C31[] = {
  0,
  ABISELECT(144,92),
  ABISELECT(104,52),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C31[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C31D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C31D0Ev,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19438C31[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C31D1Ev,_ZTv0_n32_N9S19438C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C31D0Ev,_ZTv0_n32_N9S19438C31D0Ev),
  ABISELECT(-144,-92),
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S19438C31[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C31D1Ev,_ZTv0_n28_N9S19438C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C31D0Ev,_ZTv0_n28_N9S19438C31D0Ev),
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1304,-852),
  (VTBL_ENTRY)&(_ZTI9S19438C31[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C31D1Ev,_ZTvn760_n28_N9S19438C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C31D0Ev,_ZTvn760_n28_N9S19438C31D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI9S19438C31[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C31D1Ev,_ZTvn764_n28_N9S19438C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C31D0Ev,_ZTvn764_n28_N9S19438C31D0Ev),
};
extern VTBL_ENTRY _ZTV9S19438C31[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C14D1Ev();
extern void _ZN9S19438C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C14__9S19438C31[] = {
  ABISELECT(-16,-8),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C14__9S19438C31[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C14__9S19438C31[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZThn128_N9S19438C14D1Ev,_ZThn84_N9S19438C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev)();
extern void ABISELECT(_ZThn128_N9S19438C14D0Ev,_ZThn84_N9S19438C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C14__9S19438C31[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C14__9S19438C31[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C14__9S19438C31[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C9D1Ev();
extern void _ZN8S19438C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C31[] = {
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C108S19438C9__9S19438C31[] = {
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C108S19438C9__9S19438C31[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C31[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C118S19438C9__9S19438C31[] = {
  0,
  ABISELECT(1304,852),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C12D1Ev();
extern void _ZN9S19438C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C31[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C119S19438C128S19438C9__A1__9S19438C31[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__9S19438C31[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C128S19438C9__9S19438C31[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__8S19438C9__9S19438C31[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__8S19438C9__9S19438C31[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C12__8S19438C9__9S19438C31[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev),
};
static  VTT_ENTRY vtt_S19438C31[] = {
  {&(_ZTV9S19438C31[8]),  8,48},
  {&(_ZTV9S19438C31[19]),  19,48},
  {&(_ZTV9S19438C31[8]),  8,48},
  {&(_ZTV9S19438C31[29]),  29,48},
  {&(_ZTV9S19438C31[37]),  37,48},
  {&(_ZTV9S19438C31[45]),  45,48},
  {&(_tg__ZTV9S19438C14__9S19438C31[6]),  6,9},
  {&(_tg__ZTV8S19438C49S19438C14__9S19438C31[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C14__9S19438C31[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C14__9S19438C31[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C14__9S19438C31[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C14__9S19438C31[5]),  5,8},
  {&(_tg__ZTV8S19438C9__9S19438C31[6]),  6,9},
  {&(_tg__ZTV9S19438C108S19438C9__9S19438C31[4]),  4,5},
  {&(_tg__ZTV8S19438C5__9S19438C108S19438C9__9S19438C31[3]),  3,4},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C31[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C118S19438C9__9S19438C31[3]),  3,4},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C31[5]),  5,8},
  {&(_tg__ZTV9S19438C119S19438C128S19438C9__A1__9S19438C31[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__9S19438C31[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C128S19438C9__9S19438C31[3]),  3,4},
  {&(_tg__ZTV8S19438C5__8S19438C9__9S19438C31[3]),  3,4},
  {&(_tg__ZTV9S19438C11__8S19438C9__9S19438C31[5]),  5,8},
  {&(_tg__ZTV9S19438C12__8S19438C9__9S19438C31[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19438C31[];
extern  VTBL_ENTRY _ZTV9S19438C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C31[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19438C14D0Ev,_ZThn84_N9S19438C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19438C14D1Ev,_ZThn84_N9S19438C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C31D0Ev,_ZTv0_n28_N9S19438C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19438C31D0Ev,_ZThn92_N9S19438C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C31D1Ev,_ZTv0_n28_N9S19438C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19438C31D1Ev,_ZThn92_N9S19438C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C31D0Ev,_ZTv0_n32_N9S19438C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19438C31D0Ev,_ZThn8_N9S19438C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C31D1Ev,_ZTv0_n32_N9S19438C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19438C31D1Ev,_ZThn8_N9S19438C31D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19438C31 = {  "S19438C31", // class name
  bases_S19438C31, 14,
  &(vtc_S19438C31[0]), // expected_vtbl_contents
  &(vtt_S19438C31[0]), // expected_vtt_contents
  ABISELECT(1320,860), // object size
  NSPAIRA(_ZTI9S19438C31),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19438C31),48, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19438C31),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19438C1  : virtual S19438C2 , S19438C26 , virtual S19438C27 , virtual S19438C29 , S19438C31 {
  virtual  ~S19438C1(); // _ZN8S19438C1D2Ev
  S19438C1(); // tgen
};
//SIG(1 S19438C1) C1{ VBC2{ BC3{ VBC4{ BC5{ v1} VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC6 VBC9{ VBC7 BC10{ VBC5 FC4[9]} BC11{ VBC6 VBC5 BC7 vd} BC12{ BC11 vd}} VBC13{ VBC14{ VBC5 BC4 VBC9 vd} BC15{ BC16{ BC6 BC5} FD}} vd Fp}} BC7 VBC17{ VBC4 VBC18{ VBC19{ m FL[4]} VBC11 vd} VBC20{ BC16 BC4} BC21{ m} VBC22{ BC23{ m}} vd} VBC24{ VBC5 VBC11 VBC19 VBC25{ VBC7 VBC11 v2} VBC10 vd}} BC26{ BC13 vd v3} VBC27{ VBC28{ VBC4}} VBC29{ VBC30{ VBC6 BC25 VBC16} BC24 v4} BC31{ VBC14 Fi} vd}


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

static void Test_S19438C1()
{
  extern Class_Descriptor cd_S19438C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(187,494)];
    init_test(&cd_S19438C1, buf);
    S19438C1 *dp, &lv = *(dp=new (buf) S19438C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2976,1972), "sizeof(S19438C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19438C1)");
    /*is_ambiguous_... S19438C1::S19438C4 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C4*), ABISELECT(88,68), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C4*), ABISELECT(176,112), "S19438C1");
    /*is_ambiguous_... S19438C8::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C8*), ABISELECT(176,112), "S19438C1");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C9*), ABISELECT(176,112), "S19438C1");
    check_base_class_offset(lv, (S20997C6*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(176,112), "S19438C1");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*)(S19438C14*), ABISELECT(176,112), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C11*), ABISELECT(176,112), "S19438C1");
    check_base_class_offset(lv, (S20997C6*)(S19438C4*)(S19438C20*), ABISELECT(176,112), "S19438C1");
    /*is_ambiguous_... S19438C30::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C30*), ABISELECT(176,112), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C4*), ABISELECT(88,68), "S19438C1");
    /*is_ambiguous_... S19438C3::S19438C4 */ AMB_check_base_class_offset(lv, (S19438C4*)(S19438C3*)(S19438C2*), ABISELECT(88,68), "S19438C1");
    /*is_ambiguous_... S19438C17::S19438C4 */ AMB_check_base_class_offset(lv, (S19438C4*)(S19438C17*), ABISELECT(88,68), "S19438C1");
    check_base_class_offset(lv, (S19438C4*)(S19438C28*), ABISELECT(88,68), "S19438C1");
    /*is_ambiguous_... S19438C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C9*), 0, "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C25 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C25*), 0, "S19438C1");
    /*is_ambiguous_... S19438C25::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C25*)(S19438C30*), 0, "S19438C1");
    check_base_class_offset(lv, (S19438C5*)(S19438C10*)(S19438C9*), ABISELECT(80,64), "S19438C1");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C9*), ABISELECT(80,64), "S19438C1");
    check_base_class_offset(lv, (S19438C5*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(80,64), "S19438C1");
    /*is_ambiguous_... S19438C14::S19438C5 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C14*), ABISELECT(80,64), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C11*), ABISELECT(80,64), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C24 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C24*), ABISELECT(80,64), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C10 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C10*), ABISELECT(80,64), "S19438C1");
    check_base_class_offset(lv, (S19438C5*)(S19438C24*)(S19438C29*), ABISELECT(80,64), "S19438C1");
    check_base_class_offset(lv, (S19438C10*)(S19438C9*), ABISELECT(232,160), "S19438C1");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C9*), ABISELECT(1392,920), "S19438C1");
    /*is_ambiguous_... S19438C9::S19438C11 */ AMB_check_base_class_offset(lv, (S19438C11*)(S19438C9*), ABISELECT(1392,920), "S19438C1");
    check_base_class_offset(lv, (S4227C37*)(S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1400,924), "S19438C1");
    check_base_class_offset(lv, (S19438C11*)(S19438C12*)(S19438C9*), ABISELECT(1400,924), "S19438C1");
    check_base_class_offset(lv, (S19438C12*)(S19438C9*), ABISELECT(1400,924), "S19438C1");
    check_base_class_offset(lv, (S19438C9*)(S19438C8*), ABISELECT(232,160), "S19438C1");
    check_base_class_offset(lv, (S19438C9*)(S19438C14*), ABISELECT(232,160), "S19438C1");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*)(S19438C14*), ABISELECT(1472,984), "S19438C1");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*)(S19438C14*), ABISELECT(1472,984), "S19438C1");
    check_base_class_offset(lv, (S19438C4*)(S19438C14*), ABISELECT(1472,984), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C13 */ AMB_check_base_class_offset(lv, (S19438C14*)(S19438C13*), ABISELECT(1472,984), "S19438C1");
    check_base_class_offset(lv, (S19438C14*)(S19438C13*)(S19438C26*), ABISELECT(1472,984), "S19438C1");
    check_base_class_offset(lv, (S19438C14*)(S19438C31*), ABISELECT(1472,984), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C13 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(1416,932), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C13 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(1408,928), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C13 */ AMB_check_base_class_offset(lv, (S19438C16*)(S19438C15*)(S19438C13*), ABISELECT(1408,928), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C13 */ AMB_check_base_class_offset(lv, (S19438C15*)(S19438C13*), ABISELECT(1408,928), "S19438C1");
    check_base_class_offset(lv, (S19438C13*)(S19438C8*), ABISELECT(1408,928), "S19438C1");
    check_base_class_offset(lv, (S19438C8*)(S19438C3*)(S19438C2*), ABISELECT(216,152), "S19438C1");
    check_base_class_offset(lv, (S19438C3*)(S19438C2*), ABISELECT(80,64), "S19438C1");
    /*is_ambiguous_... S19438C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C2*), ABISELECT(80,64), "S19438C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S19438C18*), ABISELECT(1568,1032), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C24 */ AMB_check_base_class_offset(lv, (S10258C6_nt*)(S19438C24*), ABISELECT(1568,1032), "S19438C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S19438C24*)(S19438C29*), ABISELECT(1568,1032), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19438C11*), ABISELECT(1560,1028), "S19438C1");
    check_base_class_offset(lv, (S19438C11*)(S19438C18*), ABISELECT(1560,1028), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C24 */ AMB_check_base_class_offset(lv, (S19438C11*)(S19438C24*), ABISELECT(1560,1028), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C25 */ AMB_check_base_class_offset(lv, (S19438C11*)(S19438C25*), ABISELECT(1560,1028), "S19438C1");
    check_base_class_offset(lv, (S19438C11*)(S19438C25*)(S19438C30*), ABISELECT(1560,1028), "S19438C1");
    check_base_class_offset(lv, (S19438C11*)(S19438C24*)(S19438C29*), ABISELECT(1560,1028), "S19438C1");
    check_base_class_offset(lv, (S19438C18*)(S19438C17*), ABISELECT(1560,1028), "S19438C1");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*)(S19438C20*), ABISELECT(1608,1068), "S19438C1");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*)(S19438C20*), ABISELECT(1600,1064), "S19438C1");
    check_base_class_offset(lv, (S19438C16*)(S19438C20*), ABISELECT(1600,1064), "S19438C1");
    check_base_class_offset(lv, (S19438C5*)(S19438C4*)(S19438C20*), ABISELECT(1648,1108), "S19438C1");
    check_base_class_offset(lv, (S4227C37*)(S19438C4*)(S19438C20*), ABISELECT(1648,1108), "S19438C1");
    check_base_class_offset(lv, (S19438C4*)(S19438C20*), ABISELECT(1648,1108), "S19438C1");
    check_base_class_offset(lv, (S19438C20*)(S19438C17*), ABISELECT(1600,1064), "S19438C1");
    check_base_class_offset(lv, (S4227C27*)(S19438C17*), ABISELECT(1560,1028), "S19438C1");
    check_base_class_offset(lv, (S4227C23*)(S19438C22*), 0, "S19438C1");
    check_base_class_offset(lv, (S19438C22*)(S19438C17*), 0, "S19438C1");
    check_base_class_offset(lv, (S19438C17*)(S19438C2*), ABISELECT(1560,1028), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C24 */ AMB_check_base_class_offset(lv, (S19438C25*)(S19438C24*), ABISELECT(1736,1152), "S19438C1");
    check_base_class_offset(lv, (S19438C25*)(S19438C24*)(S19438C29*), ABISELECT(1736,1152), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C24 */ AMB_check_base_class_offset(lv, (S19438C10*)(S19438C24*), ABISELECT(1744,1156), "S19438C1");
    check_base_class_offset(lv, (S19438C10*)(S19438C24*)(S19438C29*), ABISELECT(1744,1156), "S19438C1");
    check_base_class_offset(lv, (S19438C24*)(S19438C2*), ABISELECT(1736,1152), "S19438C1");
    check_base_class_offset(lv, (S19438C2*), ABISELECT(80,64), "S19438C1");
    check_base_class_offset(lv, (S20997C6*)(S19438C16*)(S19438C15*)(S19438C13*)(S19438C26*), ABISELECT(8,4), "S19438C1");
    check_base_class_offset(lv, (S19438C5*)(S19438C16*)(S19438C15*)(S19438C13*)(S19438C26*), 0, "S19438C1");
    check_base_class_offset(lv, (S19438C16*)(S19438C15*)(S19438C13*)(S19438C26*), 0, "S19438C1");
    check_base_class_offset(lv, (S19438C15*)(S19438C13*)(S19438C26*), 0, "S19438C1");
    check_base_class_offset(lv, (S19438C13*)(S19438C26*), 0, "S19438C1");
    check_base_class_offset(lv, (S19438C26*), 0, "S19438C1");
    check_base_class_offset(lv, (S19438C28*)(S19438C27*), ABISELECT(2904,1916), "S19438C1");
    check_base_class_offset(lv, (S19438C27*), ABISELECT(2904,1916), "S19438C1");
    check_base_class_offset(lv, (S19438C25*)(S19438C30*), ABISELECT(2920,1924), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C16 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19438C16*), ABISELECT(2936,1932), "S19438C1");
    /*is_ambiguous_... S19438C1::S19438C16 */ AMB_check_base_class_offset(lv, (S19438C5*)(S19438C16*), ABISELECT(2928,1928), "S19438C1");
    check_base_class_offset(lv, (S19438C16*)(S19438C30*), ABISELECT(2928,1928), "S19438C1");
    check_base_class_offset(lv, (S19438C30*)(S19438C29*), ABISELECT(2920,1924), "S19438C1");
    check_base_class_offset(lv, (S19438C24*)(S19438C29*), ABISELECT(2912,1920), "S19438C1");
    check_base_class_offset(lv, (S19438C29*), ABISELECT(2912,1920), "S19438C1");
    check_base_class_offset(lv, (S19438C31*), ABISELECT(64,56), "S19438C1");
    test_class_info(&lv, &cd_S19438C1);
    dp->~S19438C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19438C1(Test_S19438C1, "S19438C1", ABISELECT(2976,1972));

#else // __cplusplus

extern void _ZN8S19438C1C1Ev();
extern void _ZN8S19438C1D2Ev();
Name_Map name_map_S19438C1[] = {
  NSPAIR(_ZN8S19438C1C1Ev),
  NSPAIR(_ZN8S19438C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C12;
extern VTBL_ENTRY _ZTI9S19438C12[];
extern  VTBL_ENTRY _ZTV9S19438C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C12[];
extern Class_Descriptor cd_S19438C9;
extern VTBL_ENTRY _ZTI8S19438C9[];
extern  VTBL_ENTRY _ZTV8S19438C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C9[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S19438C14;
extern VTBL_ENTRY _ZTI9S19438C14[];
extern  VTBL_ENTRY _ZTV9S19438C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C14[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C15;
extern VTBL_ENTRY _ZTI9S19438C15[];
extern  VTBL_ENTRY _ZTV9S19438C15[];
extern Class_Descriptor cd_S19438C13;
extern VTBL_ENTRY _ZTI9S19438C13[];
extern  VTBL_ENTRY _ZTV9S19438C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C13[];
extern Class_Descriptor cd_S19438C8;
extern VTBL_ENTRY _ZTI8S19438C8[];
extern  VTBL_ENTRY _ZTV8S19438C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C8[];
extern Class_Descriptor cd_S19438C3;
extern VTBL_ENTRY _ZTI8S19438C3[];
extern  VTBL_ENTRY _ZTV8S19438C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C3[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C11;
extern VTBL_ENTRY _ZTI9S19438C11[];
extern  VTBL_ENTRY _ZTV9S19438C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C11[];
extern Class_Descriptor cd_S19438C18;
extern VTBL_ENTRY _ZTI9S19438C18[];
extern  VTBL_ENTRY _ZTV9S19438C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C18[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19438C4;
extern VTBL_ENTRY _ZTI8S19438C4[];
extern  VTBL_ENTRY _ZTV8S19438C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C4[];
extern Class_Descriptor cd_S19438C20;
extern VTBL_ENTRY _ZTI9S19438C20[];
extern  VTBL_ENTRY _ZTV9S19438C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C20[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S19438C22;
extern VTBL_ENTRY _ZTI9S19438C22[];
extern Class_Descriptor cd_S19438C17;
extern VTBL_ENTRY _ZTI9S19438C17[];
extern  VTBL_ENTRY _ZTV9S19438C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C17[];
extern Class_Descriptor cd_S19438C25;
extern VTBL_ENTRY _ZTI9S19438C25[];
extern  VTBL_ENTRY _ZTV9S19438C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C25[];
extern Class_Descriptor cd_S19438C10;
extern VTBL_ENTRY _ZTI9S19438C10[];
extern  VTBL_ENTRY _ZTV9S19438C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C10[];
extern Class_Descriptor cd_S19438C24;
extern VTBL_ENTRY _ZTI9S19438C24[];
extern  VTBL_ENTRY _ZTV9S19438C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C24[];
extern Class_Descriptor cd_S19438C2;
extern VTBL_ENTRY _ZTI8S19438C2[];
extern  VTBL_ENTRY _ZTV8S19438C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C15;
extern VTBL_ENTRY _ZTI9S19438C15[];
extern  VTBL_ENTRY _ZTV9S19438C15[];
extern Class_Descriptor cd_S19438C13;
extern VTBL_ENTRY _ZTI9S19438C13[];
extern  VTBL_ENTRY _ZTV9S19438C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C13[];
extern Class_Descriptor cd_S19438C26;
extern VTBL_ENTRY _ZTI9S19438C26[];
extern  VTBL_ENTRY _ZTV9S19438C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C26[];
extern Class_Descriptor cd_S19438C28;
extern VTBL_ENTRY _ZTI9S19438C28[];
extern  VTBL_ENTRY _ZTV9S19438C28[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C28[];
extern Class_Descriptor cd_S19438C27;
extern VTBL_ENTRY _ZTI9S19438C27[];
extern  VTBL_ENTRY _ZTV9S19438C27[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C27[];
extern Class_Descriptor cd_S19438C25;
extern VTBL_ENTRY _ZTI9S19438C25[];
extern  VTBL_ENTRY _ZTV9S19438C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C25[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19438C5;
extern VTBL_ENTRY _ZTI8S19438C5[];
extern  VTBL_ENTRY _ZTV8S19438C5[];
extern Class_Descriptor cd_S19438C16;
extern VTBL_ENTRY _ZTI9S19438C16[];
extern  VTBL_ENTRY _ZTV9S19438C16[];
extern Class_Descriptor cd_S19438C30;
extern VTBL_ENTRY _ZTI9S19438C30[];
extern  VTBL_ENTRY _ZTV9S19438C30[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C30[];
extern Class_Descriptor cd_S19438C24;
extern VTBL_ENTRY _ZTI9S19438C24[];
extern  VTBL_ENTRY _ZTV9S19438C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C24[];
extern Class_Descriptor cd_S19438C29;
extern VTBL_ENTRY _ZTI9S19438C29[];
extern  VTBL_ENTRY _ZTV9S19438C29[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C29[];
extern Class_Descriptor cd_S19438C31;
extern VTBL_ENTRY _ZTI9S19438C31[];
extern  VTBL_ENTRY _ZTV9S19438C31[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19438C31[];
static Base_Class bases_S19438C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19438C5,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(176,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19438C4,    ABISELECT(88,68), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    69, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C5,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19438C10,    ABISELECT(232,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19438C11,    ABISELECT(1392,920), //bcp->offset
    92, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1400,924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19438C11,    ABISELECT(1400,924), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19438C12,    ABISELECT(1400,924), //bcp->offset
    100, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19438C9,    ABISELECT(232,160), //bcp->offset
    82, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19438C5,    ABISELECT(1472,984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1472,984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19438C4,    ABISELECT(1472,984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19438C14,    ABISELECT(1472,984), //bcp->offset
    120, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1416,932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C5,    ABISELECT(1408,928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19438C16,    ABISELECT(1408,928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19438C15,    ABISELECT(1408,928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19438C13,    ABISELECT(1408,928), //bcp->offset
    108, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19438C8,    ABISELECT(216,152), //bcp->offset
    69, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19438C3,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S4227C37,    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
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S10258C6_nt,    ABISELECT(1568,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1560,1028), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C11,    ABISELECT(1560,1028), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    111, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S19438C18,    ABISELECT(1560,1028), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1608,1068), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C5,    ABISELECT(1600,1064), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19438C16,    ABISELECT(1600,1064), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19438C5,    ABISELECT(1648,1108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1648,1108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19438C4,    ABISELECT(1648,1108), //bcp->offset
    151, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    114, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19438C20,    ABISELECT(1600,1064), //bcp->offset
    146, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    113, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S4227C27,    ABISELECT(1560,1028), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C22,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C17,    ABISELECT(1560,1028), //bcp->offset
    131, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19438C25,    ABISELECT(1736,1152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19438C10,    ABISELECT(1744,1156), //bcp->offset
    171, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S19438C24,    ABISELECT(1736,1152), //bcp->offset
    155, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    116, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    43, //immediately_derived
  0, 1},
  {&cd_S19438C2,    ABISELECT(80,64), //bcp->offset
    40, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19438C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19438C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19438C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19438C13,    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
    41, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19438C26,    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
    42, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19438C28,    ABISELECT(2904,1916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    51, //immediately_derived
  0, 1},
  {&cd_S19438C27,    ABISELECT(2904,1916), //bcp->offset
    176, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19438C25,    ABISELECT(2920,1924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(2936,1932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19438C5,    ABISELECT(2928,1928), //bcp->offset
    215, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S19438C16,    ABISELECT(2928,1928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    56, //immediately_derived
  0, 1},
  {&cd_S19438C30,    ABISELECT(2920,1924), //bcp->offset
    201, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S19438C24,    ABISELECT(2912,1920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S19438C29,    ABISELECT(2912,1920), //bcp->offset
    181, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19438C31,    ABISELECT(64,56), //bcp->offset
    29, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19438C1[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C1D1Ev();
extern void _ZN8S19438C1D0Ev();
extern void _ZN9S19438C262v3Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn64_N8S19438C1D1Ev,_ZThn56_N8S19438C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19438C1D0Ev,_ZThn56_N8S19438C1D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n168_N8S19438C1D1Ev,_ZTv0_n84_N8S19438C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19438C1D1Ev,_ZThn64_N8S19438C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n168_N8S19438C1D0Ev,_ZTv0_n84_N8S19438C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19438C1D0Ev,_ZThn64_N8S19438C1D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S19438C1D1Ev,_ZTv0_n40_N8S19438C1D1Ev)();
extern void ABISELECT(_ZThn216_N8S19438C1D1Ev,_ZThn152_N8S19438C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19438C1D0Ev,_ZTv0_n40_N8S19438C1D0Ev)();
extern void ABISELECT(_ZThn216_N8S19438C1D0Ev,_ZThn152_N8S19438C1D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19438C1D1Ev,_ZTv0_n28_N8S19438C1D1Ev)();
extern void ABISELECT(_ZThn232_N8S19438C1D1Ev,_ZThn160_N8S19438C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19438C1D0Ev,_ZTv0_n28_N8S19438C1D0Ev)();
extern void ABISELECT(_ZThn232_N8S19438C1D0Ev,_ZThn160_N8S19438C1D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C1D1Ev,_ZTvn760_n28_N8S19438C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C1D0Ev,_ZTvn760_n28_N8S19438C1D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C1D1Ev,_ZTvn764_n28_N8S19438C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C1D0Ev,_ZTvn764_n28_N8S19438C1D0Ev)();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S19438C1D1Ev,_ZTv0_n36_N8S19438C1D1Ev)();
extern void ABISELECT(_ZThn1408_N8S19438C1D1Ev,_ZThn928_N8S19438C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19438C1D0Ev,_ZTv0_n36_N8S19438C1D0Ev)();
extern void ABISELECT(_ZThn1408_N8S19438C1D0Ev,_ZThn928_N8S19438C1D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19438C1D1Ev,_ZTv0_n32_N8S19438C1D1Ev)();
extern void ABISELECT(_ZThn1472_N8S19438C1D1Ev,_ZThn984_N8S19438C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19438C1D0Ev,_ZTv0_n32_N8S19438C1D0Ev)();
extern void ABISELECT(_ZThn1472_N8S19438C1D0Ev,_ZThn984_N8S19438C1D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19438C1D1Ev,_ZTv0_n24_N8S19438C1D1Ev)();
extern void ABISELECT(_ZThn1560_N8S19438C1D1Ev,_ZThn1028_N8S19438C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19438C1D0Ev,_ZTv0_n24_N8S19438C1D0Ev)();
extern void ABISELECT(_ZThn1560_N8S19438C1D0Ev,_ZThn1028_N8S19438C1D0Ev)() __attribute__((weak));
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19438C1D1Ev,_ZTv0_n24_N8S19438C1D1Ev)();
extern void ABISELECT(_ZThn1736_N8S19438C1D1Ev,_ZThn1152_N8S19438C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19438C1D0Ev,_ZTv0_n24_N8S19438C1D0Ev)();
extern void ABISELECT(_ZThn1736_N8S19438C1D0Ev,_ZThn1152_N8S19438C1D0Ev)() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19438C1D1Ev,_ZTv0_n24_N8S19438C1D1Ev)();
extern void ABISELECT(_ZThn2912_N8S19438C1D1Ev,_ZThn1920_N8S19438C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19438C1D0Ev,_ZTv0_n24_N8S19438C1D0Ev)();
extern void ABISELECT(_ZThn2912_N8S19438C1D0Ev,_ZThn1920_N8S19438C1D0Ev)() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
extern void _ZN9S19438C292v4Ev();
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19438C1D1Ev,_ZTv0_n24_N8S19438C1D1Ev)();
extern void ABISELECT(_ZThn2920_N8S19438C1D1Ev,_ZThn1924_N8S19438C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19438C1D0Ev,_ZTv0_n24_N8S19438C1D0Ev)();
extern void ABISELECT(_ZThn2920_N8S19438C1D0Ev,_ZThn1924_N8S19438C1D0Ev)() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY vtc_S19438C1[] = {
  ABISELECT(2928,1928),
  ABISELECT(2920,1924),
  ABISELECT(2912,1920),
  ABISELECT(2904,1916),
  ABISELECT(2904,1916),
  ABISELECT(1744,1156),
  ABISELECT(1736,1152),
  ABISELECT(1736,1152),
  0,
  ABISELECT(1600,1064),
  ABISELECT(1560,1028),
  ABISELECT(1568,1032),
  ABISELECT(1560,1028),
  ABISELECT(1560,1028),
  ABISELECT(1408,928),
  ABISELECT(216,152),
  ABISELECT(88,68),
  ABISELECT(80,64),
  0,
  ABISELECT(232,160),
  ABISELECT(176,112),
  ABISELECT(80,64),
  ABISELECT(1472,984),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C1D0Ev,
  (VTBL_ENTRY)&_ZN9S19438C262v3Ev,
  ABISELECT(-64,-56),
  ABISELECT(168,104),
  ABISELECT(112,56),
  ABISELECT(16,8),
  ABISELECT(1408,928),
  ABISELECT(16,8),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19438C1D1Ev,_ZThn56_N8S19438C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19438C1D0Ev,_ZThn56_N8S19438C1D0Ev),
  ABISELECT(-80,-64),
  ABISELECT(1664,1092),
  ABISELECT(1656,1088),
  ABISELECT(1656,1088),
  ABISELECT(-80,-64),
  ABISELECT(1520,1000),
  ABISELECT(1480,964),
  ABISELECT(1488,968),
  ABISELECT(1480,964),
  ABISELECT(1480,964),
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  ABISELECT(-80,-64),
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S19438C1D1Ev,_ZTv0_n84_N8S19438C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n168_N8S19438C1D0Ev,_ZTv0_n84_N8S19438C1D0Ev),
  0,
  ABISELECT(88,44),
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  ABISELECT(-216,-152),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-216,-152),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-216,-152),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19438C1D1Ev,_ZTv0_n40_N8S19438C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19438C1D0Ev,_ZTv0_n40_N8S19438C1D0Ev),
  ABISELECT(-232,-160),
  ABISELECT(-56,-48),
  ABISELECT(-232,-160),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-232,-160),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C1D1Ev,_ZTv0_n28_N8S19438C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C1D0Ev,_ZTv0_n28_N8S19438C1D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C1D1Ev,_ZTvn760_n28_N8S19438C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C1D0Ev,_ZTvn760_n28_N8S19438C1D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1400,-924),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C1D1Ev,_ZTvn764_n28_N8S19438C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C1D0Ev,_ZTvn764_n28_N8S19438C1D0Ev),
  ABISELECT(-1408,-928),
  0,
  ABISELECT(-1408,-928),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1408,-928),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C1D1Ev,_ZTv0_n36_N8S19438C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C1D0Ev,_ZTv0_n36_N8S19438C1D0Ev),
  ABISELECT(-1472,-984),
  0,
  ABISELECT(-1472,-984),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1472,-984),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C1D1Ev,_ZTv0_n32_N8S19438C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C1D0Ev,_ZTv0_n32_N8S19438C1D0Ev),
  ABISELECT(-1560,-1028),
  ABISELECT(40,36),
  0,
  ABISELECT(-1472,-960),
  0,
  ABISELECT(8,4),
  ABISELECT(-1560,-1028),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(-1560,-1028),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C1D1Ev,_ZTv0_n24_N8S19438C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C1D0Ev,_ZTv0_n24_N8S19438C1D0Ev),
  0,
  ABISELECT(-1424,-952),
  ABISELECT(-1600,-1064),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  ABISELECT(-1472,-996),
  ABISELECT(-1648,-1108),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  ABISELECT(8,4),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-176,-124),
  ABISELECT(-1736,-1152),
  ABISELECT(-1736,-1152),
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  ABISELECT(-1736,-1152),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C1D1Ev,_ZTv0_n24_N8S19438C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C1D0Ev,_ZTv0_n24_N8S19438C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  ABISELECT(-1744,-1156),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  0,
  ABISELECT(-2728,-1804),
  ABISELECT(-2816,-1848),
  ABISELECT(-2904,-1916),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1176,-768),
  ABISELECT(-1344,-888),
  ABISELECT(-1176,-768),
  ABISELECT(-1352,-892),
  ABISELECT(-2912,-1920),
  ABISELECT(-2912,-1920),
  ABISELECT(-2832,-1856),
  ABISELECT(-2736,-1808),
  ABISELECT(-2832,-1856),
  ABISELECT(-2912,-1920),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C1D1Ev,_ZTv0_n24_N8S19438C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C1D0Ev,_ZTv0_n24_N8S19438C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
  (VTBL_ENTRY)&_ZN9S19438C292v4Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-1360,-896),
  ABISELECT(-2920,-1924),
  ABISELECT(-2920,-1924),
  ABISELECT(-2840,-1860),
  ABISELECT(-2744,-1812),
  ABISELECT(-2840,-1860),
  ABISELECT(-2920,-1924),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C1D1Ev,_ZTv0_n24_N8S19438C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C1D0Ev,_ZTv0_n24_N8S19438C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
  0,
  ABISELECT(-2928,-1928),
  (VTBL_ENTRY)&(_ZTI8S19438C1[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S19438C1[];
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C26D1Ev();
extern void _ZN9S19438C26D0Ev();
extern void _ZN9S19438C262v3Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C26__8S19438C1[] = {
  0,
  ABISELECT(232,160),
  ABISELECT(176,112),
  ABISELECT(80,64),
  ABISELECT(1472,984),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C26[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C26D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C26D0Ev,
  (VTBL_ENTRY)&_ZN9S19438C262v3Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C13D1Ev();
extern void _ZN9S19438C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C139S19438C26__A1__8S19438C1[] = {
  0,
  ABISELECT(232,160),
  ABISELECT(176,112),
  ABISELECT(80,64),
  ABISELECT(1472,984),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev)();
extern void ABISELECT(_ZThn1472_N9S19438C13D1Ev,_ZThn984_N9S19438C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev)();
extern void ABISELECT(_ZThn1472_N9S19438C13D0Ev,_ZThn984_N9S19438C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__9S19438C139S19438C26__A1__8S19438C1[] = {
  ABISELECT(-1472,-984),
  0,
  ABISELECT(-1472,-984),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1472,-984),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C139S19438C26__A1__8S19438C1[] = {
  0,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZThn232_N9S19438C13D1Ev,_ZThn160_N9S19438C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev)();
extern void ABISELECT(_ZThn232_N9S19438C13D0Ev,_ZThn160_N9S19438C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C139S19438C26__A1__8S19438C1[] = {
  ABISELECT(-232,-160),
  ABISELECT(-56,-48),
  ABISELECT(-232,-160),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-232,-160),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C139S19438C26__A1__8S19438C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C139S19438C26__A1__8S19438C1[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1400,-924),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19438C26D1Ev,_ZTv0_n32_N9S19438C26D1Ev)();
extern void ABISELECT(_ZThn1472_N9S19438C26D1Ev,_ZThn984_N9S19438C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19438C26D0Ev,_ZTv0_n32_N9S19438C26D0Ev)();
extern void ABISELECT(_ZThn1472_N9S19438C26D0Ev,_ZThn984_N9S19438C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__9S19438C26__8S19438C1[] = {
  ABISELECT(-1472,-984),
  0,
  ABISELECT(-1472,-984),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1472,-984),
  (VTBL_ENTRY)&(_ZTI9S19438C26[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C26D1Ev,_ZTv0_n32_N9S19438C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C26D0Ev,_ZTv0_n32_N9S19438C26D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C26__8S19438C1[] = {
  0,
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI9S19438C26[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C26D1Ev,_ZTv0_n28_N9S19438C26D1Ev)();
extern void ABISELECT(_ZThn232_N9S19438C26D1Ev,_ZThn160_N9S19438C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19438C26D0Ev,_ZTv0_n28_N9S19438C26D0Ev)();
extern void ABISELECT(_ZThn232_N9S19438C26D0Ev,_ZThn160_N9S19438C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C26__8S19438C1[] = {
  ABISELECT(-232,-160),
  ABISELECT(-56,-48),
  ABISELECT(-232,-160),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-232,-160),
  (VTBL_ENTRY)&(_ZTI9S19438C26[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C26D1Ev,_ZTv0_n28_N9S19438C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C26D0Ev,_ZTv0_n28_N9S19438C26D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C26D1Ev,_ZTvn760_n28_N9S19438C26D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C26D0Ev,_ZTvn760_n28_N9S19438C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C26__8S19438C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI9S19438C26[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C26D1Ev,_ZTvn760_n28_N9S19438C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C26D0Ev,_ZTvn760_n28_N9S19438C26D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C26D1Ev,_ZTvn764_n28_N9S19438C26D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C26D0Ev,_ZTvn764_n28_N9S19438C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C26__8S19438C1[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1400,-924),
  (VTBL_ENTRY)&(_ZTI9S19438C26[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C26D1Ev,_ZTvn764_n28_N9S19438C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C26D0Ev,_ZTvn764_n28_N9S19438C26D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C31D1Ev();
extern void _ZN9S19438C31D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C31__8S19438C1[] = {
  ABISELECT(-64,-56),
  ABISELECT(168,104),
  ABISELECT(112,56),
  ABISELECT(16,8),
  ABISELECT(1408,928),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C31[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C31D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C31D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19438C31D1Ev,_ZTv0_n32_N9S19438C31D1Ev)();
extern void ABISELECT(_ZThn1408_N9S19438C31D1Ev,_ZThn928_N9S19438C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19438C31D0Ev,_ZTv0_n32_N9S19438C31D0Ev)();
extern void ABISELECT(_ZThn1408_N9S19438C31D0Ev,_ZThn928_N9S19438C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__9S19438C31__8S19438C1[] = {
  ABISELECT(-1408,-928),
  0,
  ABISELECT(-1472,-984),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1408,-928),
  (VTBL_ENTRY)&(_ZTI9S19438C31[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C31D1Ev,_ZTv0_n32_N9S19438C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C31D0Ev,_ZTv0_n32_N9S19438C31D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C31__8S19438C1[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19438C31[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C31D1Ev,_ZTv0_n28_N9S19438C31D1Ev)();
extern void ABISELECT(_ZThn168_N9S19438C31D1Ev,_ZThn104_N9S19438C31D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19438C31D0Ev,_ZTv0_n28_N9S19438C31D0Ev)();
extern void ABISELECT(_ZThn168_N9S19438C31D0Ev,_ZThn104_N9S19438C31D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C31__8S19438C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-56,-48),
  ABISELECT(-232,-160),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI9S19438C31[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C31D1Ev,_ZTv0_n28_N9S19438C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C31D0Ev,_ZTv0_n28_N9S19438C31D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C31D1Ev,_ZTvn760_n28_N9S19438C31D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C31D0Ev,_ZTvn760_n28_N9S19438C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C31__8S19438C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI9S19438C31[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C31D1Ev,_ZTvn760_n28_N9S19438C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C31D0Ev,_ZTvn760_n28_N9S19438C31D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C31D1Ev,_ZTvn764_n28_N9S19438C31D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C31D0Ev,_ZTvn764_n28_N9S19438C31D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C31__8S19438C1[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1336,-868),
  (VTBL_ENTRY)&(_ZTI9S19438C31[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C31D1Ev,_ZTvn764_n28_N9S19438C31D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C31D0Ev,_ZTvn764_n28_N9S19438C31D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C2D1Ev();
extern void _ZN8S19438C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C2__8S19438C1[] = {
  ABISELECT(1664,1092),
  ABISELECT(1656,1088),
  ABISELECT(1656,1088),
  ABISELECT(-80,-64),
  ABISELECT(1520,1000),
  ABISELECT(1480,964),
  ABISELECT(1488,968),
  ABISELECT(1480,964),
  ABISELECT(1480,964),
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  ABISELECT(-80,-64),
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C2D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C3D1Ev();
extern void _ZN8S19438C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C38S19438C2__8S19438C1[] = {
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  ABISELECT(-80,-64),
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C3D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__8S19438C38S19438C2__8S19438C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S19438C3D1Ev,_ZTv0_n40_N8S19438C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S19438C3D1Ev,_ZThn88_N8S19438C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19438C3D0Ev,_ZTv0_n40_N8S19438C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S19438C3D0Ev,_ZThn88_N8S19438C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C8__8S19438C38S19438C2__8S19438C1[] = {
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-216,-152),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19438C3D1Ev,_ZTv0_n40_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19438C3D0Ev,_ZTv0_n40_N8S19438C3D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19438C3D1Ev,_ZTv0_n28_N8S19438C3D1Ev)();
extern void ABISELECT(_ZThn152_N8S19438C3D1Ev,_ZThn96_N8S19438C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19438C3D0Ev,_ZTv0_n28_N8S19438C3D0Ev)();
extern void ABISELECT(_ZThn152_N8S19438C3D0Ev,_ZThn96_N8S19438C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__8S19438C38S19438C2__8S19438C1[] = {
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(-232,-160),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C3D1Ev,_ZTv0_n28_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C3D0Ev,_ZTv0_n28_N8S19438C3D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C3D1Ev,_ZTvn760_n28_N8S19438C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C3D0Ev,_ZTvn760_n28_N8S19438C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__8S19438C38S19438C2__8S19438C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C3D1Ev,_ZTvn760_n28_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C3D0Ev,_ZTvn760_n28_N8S19438C3D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C3D1Ev,_ZTvn764_n28_N8S19438C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C3D0Ev,_ZTvn764_n28_N8S19438C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__8S19438C38S19438C2__8S19438C1[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C3D1Ev,_ZTvn764_n28_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C3D0Ev,_ZTvn764_n28_N8S19438C3D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S19438C3D1Ev,_ZTv0_n36_N8S19438C3D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19438C3D1Ev,_ZThn864_N8S19438C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19438C3D0Ev,_ZTv0_n36_N8S19438C3D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19438C3D0Ev,_ZThn864_N8S19438C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C13__8S19438C38S19438C2__8S19438C1[] = {
  ABISELECT(-1328,-864),
  0,
  ABISELECT(-1408,-928),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C3D1Ev,_ZTv0_n36_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C3D0Ev,_ZTv0_n36_N8S19438C3D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19438C3D1Ev,_ZTv0_n32_N8S19438C3D1Ev)();
extern void ABISELECT(_ZThn1392_N8S19438C3D1Ev,_ZThn920_N8S19438C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19438C3D0Ev,_ZTv0_n32_N8S19438C3D0Ev)();
extern void ABISELECT(_ZThn1392_N8S19438C3D0Ev,_ZThn920_N8S19438C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__8S19438C38S19438C2__8S19438C1[] = {
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-1472,-984),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI8S19438C3[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C3D1Ev,_ZTv0_n32_N8S19438C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C3D0Ev,_ZTv0_n32_N8S19438C3D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__8S19438C2__8S19438C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S19438C2D1Ev,_ZTv0_n40_N8S19438C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S19438C2D1Ev,_ZThn88_N8S19438C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19438C2D0Ev,_ZTv0_n40_N8S19438C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S19438C2D0Ev,_ZThn88_N8S19438C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C8__8S19438C2__8S19438C1[] = {
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-216,-152),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19438C2D1Ev,_ZTv0_n40_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19438C2D0Ev,_ZTv0_n40_N8S19438C2D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19438C2D1Ev,_ZTv0_n28_N8S19438C2D1Ev)();
extern void ABISELECT(_ZThn152_N8S19438C2D1Ev,_ZThn96_N8S19438C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19438C2D0Ev,_ZTv0_n28_N8S19438C2D0Ev)();
extern void ABISELECT(_ZThn152_N8S19438C2D0Ev,_ZThn96_N8S19438C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__8S19438C2__8S19438C1[] = {
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(-232,-160),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C2D1Ev,_ZTv0_n28_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C2D0Ev,_ZTv0_n28_N8S19438C2D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C2D1Ev,_ZTvn760_n28_N8S19438C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C2D0Ev,_ZTvn760_n28_N8S19438C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__8S19438C2__8S19438C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C2D1Ev,_ZTvn760_n28_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C2D0Ev,_ZTvn760_n28_N8S19438C2D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C2D1Ev,_ZTvn764_n28_N8S19438C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C2D0Ev,_ZTvn764_n28_N8S19438C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__8S19438C2__8S19438C1[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C2D1Ev,_ZTvn764_n28_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C2D0Ev,_ZTvn764_n28_N8S19438C2D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S19438C2D1Ev,_ZTv0_n36_N8S19438C2D1Ev)();
extern void ABISELECT(_ZThn1328_N8S19438C2D1Ev,_ZThn864_N8S19438C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19438C2D0Ev,_ZTv0_n36_N8S19438C2D0Ev)();
extern void ABISELECT(_ZThn1328_N8S19438C2D0Ev,_ZThn864_N8S19438C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C13__8S19438C2__8S19438C1[] = {
  ABISELECT(-1328,-864),
  0,
  ABISELECT(-1408,-928),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C2D1Ev,_ZTv0_n36_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C2D0Ev,_ZTv0_n36_N8S19438C2D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19438C2D1Ev,_ZTv0_n32_N8S19438C2D1Ev)();
extern void ABISELECT(_ZThn1392_N8S19438C2D1Ev,_ZThn920_N8S19438C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19438C2D0Ev,_ZTv0_n32_N8S19438C2D0Ev)();
extern void ABISELECT(_ZThn1392_N8S19438C2D0Ev,_ZThn920_N8S19438C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__8S19438C2__8S19438C1[] = {
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-1472,-984),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C2D1Ev,_ZTv0_n32_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C2D0Ev,_ZTv0_n32_N8S19438C2D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19438C2D1Ev,_ZTv0_n24_N8S19438C2D1Ev)();
extern void ABISELECT(_ZThn1480_N8S19438C2D1Ev,_ZThn964_N8S19438C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19438C2D0Ev,_ZTv0_n24_N8S19438C2D0Ev)();
extern void ABISELECT(_ZThn1480_N8S19438C2D0Ev,_ZThn964_N8S19438C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C17__8S19438C2__8S19438C1[] = {
  ABISELECT(-1560,-1028),
  ABISELECT(40,36),
  0,
  ABISELECT(-1472,-960),
  0,
  ABISELECT(8,4),
  ABISELECT(-1480,-964),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(-1480,-964),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C2D1Ev,_ZTv0_n24_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C2D0Ev,_ZTv0_n24_N8S19438C2D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C20__8S19438C2__8S19438C1[] = {
  0,
  ABISELECT(-1424,-952),
  ABISELECT(-1520,-1000),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C20__A2__8S19438C2__8S19438C1[] = {
  ABISELECT(-1472,-996),
  ABISELECT(-1568,-1044),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19438C2D1Ev,_ZTv0_n24_N8S19438C2D1Ev)();
extern void ABISELECT(_ZThn1656_N8S19438C2D1Ev,_ZThn1088_N8S19438C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19438C2D0Ev,_ZTv0_n24_N8S19438C2D0Ev)();
extern void ABISELECT(_ZThn1656_N8S19438C2D0Ev,_ZThn1088_N8S19438C2D0Ev)() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C24__8S19438C2__8S19438C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-176,-124),
  ABISELECT(-1736,-1152),
  ABISELECT(-1656,-1088),
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  ABISELECT(-1656,-1088),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C2D1Ev,_ZTv0_n24_N8S19438C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19438C2D0Ev,_ZTv0_n24_N8S19438C2D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C10__A1__8S19438C2__8S19438C1[] = {
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  (VTBL_ENTRY)&(_ZTI8S19438C2[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__8S19438C1[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C8D1Ev();
extern void _ZN8S19438C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C8__8S19438C1[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-216,-152),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C8D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19438C8D1Ev,_ZTv0_n28_N8S19438C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19438C8D1Ev,_ZThn8_N8S19438C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19438C8D0Ev,_ZTv0_n28_N8S19438C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19438C8D0Ev,_ZThn8_N8S19438C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19438C9__8S19438C8__8S19438C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(-232,-160),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C8D1Ev,_ZTv0_n28_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19438C8D0Ev,_ZTv0_n28_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__8S19438C8__8S19438C1[] = {
  0,
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C8D1Ev,_ZTvn760_n28_N8S19438C8D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19438C8D0Ev,_ZTvn760_n28_N8S19438C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__8S19438C8__8S19438C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C8D1Ev,_ZTvn760_n28_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19438C8D0Ev,_ZTvn760_n28_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C8D1Ev,_ZTvn764_n28_N8S19438C8D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19438C8D0Ev,_ZTvn764_n28_N8S19438C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__8S19438C8__8S19438C1[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C8D1Ev,_ZTvn764_n28_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19438C8D0Ev,_ZTvn764_n28_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S19438C8D1Ev,_ZTv0_n36_N8S19438C8D1Ev)();
extern void ABISELECT(_ZThn1192_N8S19438C8D1Ev,_ZThn776_N8S19438C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19438C8D0Ev,_ZTv0_n36_N8S19438C8D0Ev)();
extern void ABISELECT(_ZThn1192_N8S19438C8D0Ev,_ZThn776_N8S19438C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C13__8S19438C8__8S19438C1[] = {
  ABISELECT(-1192,-776),
  0,
  ABISELECT(-1408,-928),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C8D1Ev,_ZTv0_n36_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19438C8D0Ev,_ZTv0_n36_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S19438C8D1Ev,_ZTv0_n32_N8S19438C8D1Ev)();
extern void ABISELECT(_ZThn1256_N8S19438C8D1Ev,_ZThn832_N8S19438C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19438C8D0Ev,_ZTv0_n32_N8S19438C8D0Ev)();
extern void ABISELECT(_ZThn1256_N8S19438C8D0Ev,_ZThn832_N8S19438C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__8S19438C8__8S19438C1[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-1472,-984),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI8S19438C8[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C8D1Ev,_ZTv0_n32_N8S19438C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19438C8D0Ev,_ZTv0_n32_N8S19438C8D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN8S19438C9D1Ev();
extern void _ZN8S19438C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C9__8S19438C1[] = {
  ABISELECT(-56,-48),
  ABISELECT(-232,-160),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19438C9D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C108S19438C9__8S19438C1[] = {
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C108S19438C9__8S19438C1[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__8S19438C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C118S19438C9__8S19438C1[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C12D1Ev();
extern void _ZN9S19438C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__8S19438C1[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C12D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C119S19438C128S19438C9__A1__8S19438C1[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__8S19438C1[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C128S19438C9__8S19438C1[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S19438C12[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__8S19438C9__8S19438C1[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__8S19438C9__8S19438C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D1Ev,_ZThn760_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19438C9D0Ev,_ZThn760_N8S19438C9D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C12__8S19438C9__8S19438C1[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S19438C9[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D1Ev,_ZThn764_N8S19438C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19438C9D0Ev,_ZThn764_N8S19438C9D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C13D1Ev();
extern void _ZN9S19438C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C13__8S19438C1[] = {
  ABISELECT(-1408,-928),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C13D0Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S19438C13D1Ev,_ZThn56_N9S19438C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev)();
extern void ABISELECT(_ZThn64_N9S19438C13D0Ev,_ZThn56_N9S19438C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C14__9S19438C13__8S19438C1[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1472,-984),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C13__8S19438C1[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C13__8S19438C1[] = {
  ABISELECT(1176,768),
  ABISELECT(-56,-48),
  ABISELECT(-232,-160),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C13__8S19438C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D1Ev,_ZTvn760_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C13D0Ev,_ZTvn760_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C13__8S19438C1[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S19438C13[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D1Ev,_ZTvn764_n28_N9S19438C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C13D0Ev,_ZTvn764_n28_N9S19438C13D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C14D1Ev();
extern void _ZN9S19438C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C14__8S19438C1[] = {
  ABISELECT(-1472,-984),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C14D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C14__A1__8S19438C1[] = {
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C14__8S19438C1[] = {
  0,
  ABISELECT(1392,920),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19438C9__9S19438C14__8S19438C1[] = {
  ABISELECT(1240,824),
  ABISELECT(-56,-48),
  ABISELECT(-232,-160),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D1Ev,_ZTv0_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19438C14D0Ev,_ZTv0_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C118S19438C9__9S19438C14__8S19438C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D1Ev,_ZTvn760_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19438C14D0Ev,_ZTvn760_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C128S19438C9__9S19438C14__8S19438C1[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI9S19438C14[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D1Ev,_ZTvn764_n28_N9S19438C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19438C14D0Ev,_ZTvn764_n28_N9S19438C14D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C17D1Ev,_ZTv0_n24_N9S19438C17D1Ev)();
extern void _ZN9S19438C17D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C17D0Ev,_ZTv0_n24_N9S19438C17D0Ev)();
extern void _ZN9S19438C17D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C17__8S19438C1[] = {
  ABISELECT(-1560,-1028),
  ABISELECT(40,36),
  0,
  ABISELECT(-1472,-960),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C17D1Ev,_ZTv0_n24_N9S19438C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C17D0Ev,_ZTv0_n24_N9S19438C17D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C17__8S19438C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(1472,960),
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__A1__9S19438C17__8S19438C1[] = {
  0,
  ABISELECT(1480,964),
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C20__9S19438C17__8S19438C1[] = {
  0,
  ABISELECT(-1424,-952),
  ABISELECT(-40,-36),
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C20__A1__9S19438C17__8S19438C1[] = {
  ABISELECT(-1472,-996),
  ABISELECT(-88,-80),
  (VTBL_ENTRY)&(_ZTI9S19438C17[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C18D1Ev,_ZTv0_n24_N9S19438C18D1Ev)();
extern void _ZN9S19438C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C18D0Ev,_ZTv0_n24_N9S19438C18D0Ev)();
extern void _ZN9S19438C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19438C18__8S19438C1[] = {
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C18[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C18D1Ev,_ZTv0_n24_N9S19438C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C18D0Ev,_ZTv0_n24_N9S19438C18D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C18__8S19438C1[] = {
  0,
  ABISELECT(1480,964),
  (VTBL_ENTRY)&(_ZTI9S19438C18[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void _ZN9S19438C11D1Ev();
extern void _ZN9S19438C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C11__A2__8S19438C1[] = {
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19438C11D0Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C11__A2__8S19438C1[] = {
  0,
  ABISELECT(1480,964),
  (VTBL_ENTRY)&(_ZTI9S19438C11[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C20__8S19438C1[] = {
  ABISELECT(-1424,-952),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C20[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C49S19438C20__A2__8S19438C1[] = {
  ABISELECT(-1472,-996),
  0,
  (VTBL_ENTRY)&(_ZTI8S19438C4[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C20__8S19438C1[] = {
  ABISELECT(-1472,-996),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S19438C20[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev)();
extern void _ZN9S19438C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev)();
extern void _ZN9S19438C24D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C24__8S19438C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-176,-124),
  ABISELECT(-1736,-1152),
  0,
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C24__8S19438C1[] = {
  0,
  ABISELECT(1656,1088),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C24__8S19438C1[] = {
  ABISELECT(176,124),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(176,124),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C10__9S19438C24__8S19438C1[] = {
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev)();
extern void _ZN9S19438C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev)();
extern void _ZN9S19438C25D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C25__8S19438C1[] = {
  ABISELECT(-176,-124),
  ABISELECT(-1736,-1152),
  0,
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C25__8S19438C1[] = {
  ABISELECT(176,124),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(176,124),
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C25__8S19438C1[] = {
  0,
  ABISELECT(1656,1088),
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C10__A1__8S19438C1[] = {
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C10__A1__8S19438C1[] = {
  0,
  ABISELECT(1664,1092),
  (VTBL_ENTRY)&(_ZTI9S19438C10[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19438C27__8S19438C1[] = {
  0,
  ABISELECT(-2728,-1804),
  ABISELECT(-2816,-1848),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C27[0]),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C27__8S19438C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(2816,1848),
  (VTBL_ENTRY)&(_ZTI9S19438C27[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19438C28__8S19438C1[] = {
  ABISELECT(-2728,-1804),
  ABISELECT(-2816,-1848),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C28[0]),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C4__9S19438C28__8S19438C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(2816,1848),
  (VTBL_ENTRY)&(_ZTI9S19438C28[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev)();
extern void _ZN9S19438C29D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev)();
extern void _ZN9S19438C29D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
extern void _ZN9S19438C292v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C29__8S19438C1[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1176,-768),
  ABISELECT(-1344,-888),
  ABISELECT(-1176,-768),
  ABISELECT(-1352,-892),
  ABISELECT(-2912,-1920),
  0,
  ABISELECT(-2832,-1856),
  ABISELECT(-2736,-1808),
  ABISELECT(-2832,-1856),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C29[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
  (VTBL_ENTRY)&_ZN9S19438C292v4Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev)();
extern void _ZN9S19438C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev)();
extern void _ZN9S19438C24D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C249S19438C29__A1__8S19438C1[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1176,-768),
  ABISELECT(-1344,-888),
  ABISELECT(-1176,-768),
  ABISELECT(-1352,-892),
  ABISELECT(-2912,-1920),
  0,
  ABISELECT(-2832,-1856),
  ABISELECT(-2736,-1808),
  ABISELECT(-2832,-1856),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C249S19438C29__A1__8S19438C1[] = {
  0,
  ABISELECT(2832,1856),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C249S19438C29__A1__8S19438C1[] = {
  ABISELECT(1352,892),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(1352,892),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev),
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev)();
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C25__9S19438C249S19438C29__A1__8S19438C1[] = {
  0,
  ABISELECT(-176,-124),
  ABISELECT(-1736,-1152),
  ABISELECT(1176,768),
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C10__9S19438C249S19438C29__A1__8S19438C1[] = {
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19438C24[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev)();
extern void ABISELECT(_ZThn8_N9S19438C29D1Ev,_ZThn4_N9S19438C29D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev)();
extern void ABISELECT(_ZThn8_N9S19438C29D0Ev,_ZThn4_N9S19438C29D0Ev)() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C30__9S19438C29__8S19438C1[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-1360,-896),
  ABISELECT(-2920,-1924),
  ABISELECT(-8,-4),
  ABISELECT(-2840,-1860),
  ABISELECT(-2744,-1812),
  ABISELECT(-2840,-1860),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19438C29[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C29__8S19438C1[] = {
  ABISELECT(1352,892),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(1352,892),
  (VTBL_ENTRY)&(_ZTI9S19438C29[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C29__8S19438C1[] = {
  0,
  ABISELECT(2832,1856),
  (VTBL_ENTRY)&(_ZTI9S19438C29[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C59S19438C16__A1__9S19438C29__8S19438C1[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S19438C29[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev)();
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C25__A1__9S19438C29__8S19438C1[] = {
  0,
  ABISELECT(-176,-124),
  ABISELECT(-1736,-1152),
  ABISELECT(1176,768),
  ABISELECT(-1656,-1088),
  ABISELECT(-1560,-1040),
  ABISELECT(-1656,-1088),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S19438C29[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C10__9S19438C29__8S19438C1[] = {
  ABISELECT(-1664,-1092),
  ABISELECT(-1664,-1092),
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19438C29[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C30D1Ev,_ZTv0_n24_N9S19438C30D1Ev)();
extern void _ZN9S19438C30D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C30D0Ev,_ZTv0_n24_N9S19438C30D0Ev)();
extern void _ZN9S19438C30D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C30__8S19438C1[] = {
  ABISELECT(8,4),
  ABISELECT(-1360,-896),
  ABISELECT(-2920,-1924),
  0,
  ABISELECT(-2840,-1860),
  ABISELECT(-2744,-1812),
  ABISELECT(-2840,-1860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C30[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C30D1Ev,_ZTv0_n24_N9S19438C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C30D0Ev,_ZTv0_n24_N9S19438C30D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev)();
extern void _ZN9S19438C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev)();
extern void _ZN9S19438C25D0Ev() __attribute__((weak));
extern void _ZN9S19438C252v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19438C259S19438C30__A1__8S19438C1[] = {
  ABISELECT(-1360,-896),
  ABISELECT(-2920,-1924),
  0,
  ABISELECT(-2840,-1860),
  ABISELECT(-2744,-1812),
  ABISELECT(-2840,-1860),
  0,
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev),
  (VTBL_ENTRY)&_ZN9S19438C252v2Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C259S19438C30__A1__8S19438C1[] = {
  ABISELECT(1360,896),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(1360,896),
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C259S19438C30__A1__8S19438C1[] = {
  0,
  ABISELECT(2840,1860),
  (VTBL_ENTRY)&(_ZTI9S19438C25[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19438C30D1Ev,_ZTv0_n24_N9S19438C30D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19438C30D0Ev,_ZTv0_n24_N9S19438C30D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19438C11__9S19438C30__8S19438C1[] = {
  ABISELECT(1360,896),
  ABISELECT(-1480,-964),
  ABISELECT(-1384,-916),
  ABISELECT(-1480,-964),
  ABISELECT(1360,896),
  (VTBL_ENTRY)&(_ZTI9S19438C30[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C30D1Ev,_ZTv0_n24_N9S19438C30D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19438C30D0Ev,_ZTv0_n24_N9S19438C30D0Ev),
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C5__9S19438C30__8S19438C1[] = {
  0,
  ABISELECT(2840,1860),
  (VTBL_ENTRY)&(_ZTI9S19438C30[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
extern void _ZN8S19438C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19438C59S19438C16__A1__9S19438C30__8S19438C1[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19438C30[0]),
  (VTBL_ENTRY)&_ZN8S19438C52v1Ev,
};
static  VTT_ENTRY vtt_S19438C1[] = {
  {&(_ZTV8S19438C1[25]),  25,219},
  {&(_tg__ZTV9S19438C26__8S19438C1[7]),  7,11},
  {&(_tg__ZTV9S19438C139S19438C26__A1__8S19438C1[7]),  7,10},
  {&(_tg__ZTV9S19438C14__9S19438C139S19438C26__A1__8S19438C1[8]),  8,11},
  {&(_tg__ZTV8S19438C5__9S19438C139S19438C26__A1__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C139S19438C26__A1__8S19438C1[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C139S19438C26__A1__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C139S19438C26__A1__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C14__9S19438C26__8S19438C1[8]),  8,11},
  {&(_tg__ZTV8S19438C5__9S19438C26__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C26__8S19438C1[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C26__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C26__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C31__8S19438C1[8]),  8,11},
  {&(_tg__ZTV9S19438C14__9S19438C31__8S19438C1[8]),  8,11},
  {&(_tg__ZTV8S19438C5__9S19438C31__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C31__8S19438C1[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C31__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C31__8S19438C1[5]),  5,8},
  {&(_ZTV8S19438C1[61]),  61,219},
  {&(_ZTV8S19438C1[68]),  68,219},
  {&(_ZTV8S19438C1[79]),  79,219},
  {&(_ZTV8S19438C1[89]),  89,219},
  {&(_ZTV8S19438C1[61]),  61,219},
  {&(_ZTV8S19438C1[97]),  97,219},
  {&(_ZTV8S19438C1[105]),  105,219},
  {&(_ZTV8S19438C1[117]),  117,219},
  {&(_ZTV8S19438C1[128]),  128,219},
  {&(_ZTV8S19438C1[143]),  143,219},
  {&(_ZTV8S19438C1[143]),  143,219},
  {&(_ZTV8S19438C1[143]),  143,219},
  {&(_ZTV8S19438C1[150]),  150,219},
  {&(_ZTV8S19438C1[154]),  154,219},
  {&(_ZTV8S19438C1[167]),  167,219},
  {&(_ZTV8S19438C1[167]),  167,219},
  {&(_ZTV8S19438C1[175]),  175,219},
  {&(_ZTV8S19438C1[181]),  181,219},
  {&(_ZTV8S19438C1[181]),  181,219},
  {&(_ZTV8S19438C1[196]),  196,219},
  {&(_ZTV8S19438C1[211]),  211,219},
  {&(_ZTV8S19438C1[218]),  218,219},
  {&(_ZTV8S19438C1[37]),  37,219},
  {&(_tg__ZTV8S19438C2__8S19438C1[20]),  20,23},
  {&(_tg__ZTV8S19438C38S19438C2__8S19438C1[11]),  11,14},
  {&(_tg__ZTV8S19438C4__8S19438C38S19438C2__8S19438C1[4]),  4,5},
  {&(_tg__ZTV8S19438C8__8S19438C38S19438C2__8S19438C1[10]),  10,13},
  {&(_tg__ZTV8S19438C9__8S19438C38S19438C2__8S19438C1[7]),  7,10},
  {&(_tg__ZTV8S19438C38S19438C2__8S19438C1[11]),  11,14},
  {&(_tg__ZTV9S19438C118S19438C9__8S19438C38S19438C2__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__8S19438C38S19438C2__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C13__8S19438C38S19438C2__8S19438C1[9]),  9,12},
  {&(_tg__ZTV9S19438C14__8S19438C38S19438C2__8S19438C1[8]),  8,11},
  {&(_tg__ZTV8S19438C4__8S19438C2__8S19438C1[4]),  4,5},
  {&(_tg__ZTV8S19438C8__8S19438C2__8S19438C1[10]),  10,13},
  {&(_tg__ZTV8S19438C9__8S19438C2__8S19438C1[7]),  7,10},
  {&(_tg__ZTV8S19438C2__8S19438C1[20]),  20,23},
  {&(_tg__ZTV9S19438C118S19438C9__8S19438C2__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__8S19438C2__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C13__8S19438C2__8S19438C1[9]),  9,12},
  {&(_tg__ZTV9S19438C14__8S19438C2__8S19438C1[8]),  8,11},
  {&(_tg__ZTV9S19438C17__8S19438C2__8S19438C1[12]),  12,15},
  {&(_tg__ZTV9S19438C17__8S19438C2__8S19438C1[12]),  12,15},
  {&(_tg__ZTV9S19438C17__8S19438C2__8S19438C1[12]),  12,15},
  {&(_tg__ZTV9S19438C20__8S19438C2__8S19438C1[4]),  4,5},
  {&(_tg__ZTV8S19438C49S19438C20__A2__8S19438C2__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C24__8S19438C2__8S19438C1[12]),  12,16},
  {&(_tg__ZTV9S19438C24__8S19438C2__8S19438C1[12]),  12,16},
  {&(_tg__ZTV9S19438C10__A1__8S19438C2__8S19438C1[4]),  4,5},
  {&(_tg__ZTV8S19438C4__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C8__8S19438C1[9]),  9,12},
  {&(_tg__ZTV8S19438C9__8S19438C8__8S19438C1[7]),  7,10},
  {&(_tg__ZTV8S19438C5__8S19438C8__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C118S19438C9__8S19438C8__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__8S19438C8__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C13__8S19438C8__8S19438C1[9]),  9,12},
  {&(_tg__ZTV9S19438C14__8S19438C8__8S19438C1[8]),  8,11},
  {&(_tg__ZTV8S19438C9__8S19438C1[6]),  6,9},
  {&(_tg__ZTV9S19438C108S19438C9__8S19438C1[4]),  4,5},
  {&(_tg__ZTV8S19438C5__9S19438C108S19438C9__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C118S19438C9__8S19438C1[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C118S19438C9__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C128S19438C9__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C119S19438C128S19438C9__A1__8S19438C1[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C119S19438C128S19438C9__A1__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C128S19438C9__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C5__8S19438C9__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C11__8S19438C9__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C12__8S19438C9__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C13__8S19438C1[7]),  7,10},
  {&(_tg__ZTV9S19438C14__9S19438C13__8S19438C1[8]),  8,11},
  {&(_tg__ZTV8S19438C5__9S19438C13__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C13__8S19438C1[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C13__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C13__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C14__8S19438C1[6]),  6,9},
  {&(_tg__ZTV8S19438C49S19438C14__A1__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C5__9S19438C14__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C9__9S19438C14__8S19438C1[7]),  7,10},
  {&(_tg__ZTV9S19438C118S19438C9__9S19438C14__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C128S19438C9__9S19438C14__8S19438C1[5]),  5,8},
  {&(_tg__ZTV9S19438C17__8S19438C1[12]),  12,15},
  {&(_tg__ZTV8S19438C4__9S19438C17__8S19438C1[4]),  4,5},
  {&(_tg__ZTV9S19438C17__8S19438C1[12]),  12,15},
  {&(_tg__ZTV9S19438C17__8S19438C1[12]),  12,15},
  {&(_tg__ZTV8S19438C5__A1__9S19438C17__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C20__9S19438C17__8S19438C1[4]),  4,5},
  {&(_tg__ZTV8S19438C49S19438C20__A1__9S19438C17__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C18__8S19438C1[8]),  8,11},
  {&(_tg__ZTV9S19438C18__8S19438C1[8]),  8,11},
  {&(_tg__ZTV8S19438C5__9S19438C18__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C11__A2__8S19438C1[5]),  5,8},
  {&(_tg__ZTV8S19438C5__9S19438C11__A2__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C20__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C49S19438C20__A2__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C4__9S19438C20__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C24__8S19438C1[12]),  12,16},
  {&(_tg__ZTV8S19438C5__9S19438C24__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C11__9S19438C24__8S19438C1[6]),  6,9},
  {&(_tg__ZTV9S19438C24__8S19438C1[12]),  12,16},
  {&(_tg__ZTV9S19438C10__9S19438C24__8S19438C1[4]),  4,5},
  {&(_tg__ZTV9S19438C25__8S19438C1[8]),  8,12},
  {&(_tg__ZTV9S19438C11__9S19438C25__8S19438C1[6]),  6,9},
  {&(_tg__ZTV8S19438C5__9S19438C25__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C10__A1__8S19438C1[4]),  4,5},
  {&(_tg__ZTV8S19438C5__9S19438C10__A1__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C27__8S19438C1[5]),  5,5},
  {&(_tg__ZTV9S19438C27__8S19438C1[5]),  5,5},
  {&(_tg__ZTV8S19438C4__9S19438C27__8S19438C1[4]),  4,5},
  {&(_tg__ZTV9S19438C28__8S19438C1[4]),  4,4},
  {&(_tg__ZTV8S19438C4__9S19438C28__8S19438C1[4]),  4,5},
  {&(_tg__ZTV9S19438C29__8S19438C1[14]),  14,19},
  {&(_tg__ZTV9S19438C249S19438C29__A1__8S19438C1[12]),  12,16},
  {&(_tg__ZTV8S19438C5__9S19438C249S19438C29__A1__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C11__9S19438C249S19438C29__A1__8S19438C1[6]),  6,9},
  {&(_tg__ZTV9S19438C25__9S19438C249S19438C29__A1__8S19438C1[9]),  9,13},
  {&(_tg__ZTV9S19438C10__9S19438C249S19438C29__A1__8S19438C1[4]),  4,5},
  {&(_tg__ZTV9S19438C30__9S19438C29__8S19438C1[10]),  10,14},
  {&(_tg__ZTV9S19438C11__9S19438C29__8S19438C1[6]),  6,9},
  {&(_tg__ZTV8S19438C5__9S19438C29__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C59S19438C16__A1__9S19438C29__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C25__A1__9S19438C29__8S19438C1[9]),  9,13},
  {&(_tg__ZTV9S19438C10__9S19438C29__8S19438C1[4]),  4,5},
  {&(_tg__ZTV9S19438C30__8S19438C1[9]),  9,13},
  {&(_tg__ZTV9S19438C259S19438C30__A1__8S19438C1[8]),  8,12},
  {&(_tg__ZTV9S19438C11__9S19438C259S19438C30__A1__8S19438C1[6]),  6,9},
  {&(_tg__ZTV8S19438C5__9S19438C259S19438C30__A1__8S19438C1[3]),  3,4},
  {&(_tg__ZTV9S19438C11__9S19438C30__8S19438C1[6]),  6,9},
  {&(_tg__ZTV8S19438C5__9S19438C30__8S19438C1[3]),  3,4},
  {&(_tg__ZTV8S19438C59S19438C16__A1__9S19438C30__8S19438C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19438C1[];
extern  VTBL_ENTRY _ZTV8S19438C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19438C1[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C30D0Ev,_ZTv0_n24_N9S19438C30D0Ev), // 
  (VTBL_ENTRY)_ZN9S19438C30D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C30D1Ev,_ZTv0_n24_N9S19438C30D1Ev), // 
  (VTBL_ENTRY)_ZN9S19438C30D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C29D0Ev,_ZTv0_n24_N9S19438C29D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19438C29D0Ev,_ZThn4_N9S19438C29D0Ev),
  (VTBL_ENTRY)_ZN9S19438C29D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C29D1Ev,_ZTv0_n24_N9S19438C29D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S19438C29D1Ev,_ZThn4_N9S19438C29D1Ev),
  (VTBL_ENTRY)_ZN9S19438C29D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C25D0Ev,_ZTv0_n24_N9S19438C25D0Ev), // 
  (VTBL_ENTRY)_ZN9S19438C25D0Ev,
  (VTBL_ENTRY)_ZN9S19438C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C25D1Ev,_ZTv0_n24_N9S19438C25D1Ev), // 
  (VTBL_ENTRY)_ZN9S19438C25D1Ev,
  (VTBL_ENTRY)_ZN9S19438C25D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C24D0Ev,_ZTv0_n24_N9S19438C24D0Ev), // 
  (VTBL_ENTRY)_ZN9S19438C24D0Ev,
  (VTBL_ENTRY)_ZN9S19438C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C24D1Ev,_ZTv0_n24_N9S19438C24D1Ev), // 
  (VTBL_ENTRY)_ZN9S19438C24D1Ev,
  (VTBL_ENTRY)_ZN9S19438C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C18D0Ev,_ZTv0_n24_N9S19438C18D0Ev), // 
  (VTBL_ENTRY)_ZN9S19438C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C18D1Ev,_ZTv0_n24_N9S19438C18D1Ev), // 
  (VTBL_ENTRY)_ZN9S19438C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C17D0Ev,_ZTv0_n24_N9S19438C17D0Ev), // 
  (VTBL_ENTRY)_ZN9S19438C17D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19438C17D1Ev,_ZTv0_n24_N9S19438C17D1Ev), // 
  (VTBL_ENTRY)_ZN9S19438C17D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C8D0Ev,_ZTv0_n32_N8S19438C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N8S19438C8D0Ev,_ZThn832_N8S19438C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C8D1Ev,_ZTv0_n32_N8S19438C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N8S19438C8D1Ev,_ZThn832_N8S19438C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C8D0Ev,_ZTv0_n36_N8S19438C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S19438C8D0Ev,_ZThn776_N8S19438C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C8D1Ev,_ZTv0_n36_N8S19438C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S19438C8D1Ev,_ZThn776_N8S19438C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C8D0Ev,_ZTv0_n28_N8S19438C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19438C8D0Ev,_ZThn8_N8S19438C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C8D1Ev,_ZTv0_n28_N8S19438C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19438C8D1Ev,_ZThn8_N8S19438C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19438C2D0Ev,_ZTv0_n24_N8S19438C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N8S19438C2D0Ev,_ZThn1088_N8S19438C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1480_N8S19438C2D0Ev,_ZThn964_N8S19438C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19438C2D1Ev,_ZTv0_n24_N8S19438C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1656_N8S19438C2D1Ev,_ZThn1088_N8S19438C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1480_N8S19438C2D1Ev,_ZThn964_N8S19438C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C2D0Ev,_ZTv0_n32_N8S19438C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19438C2D0Ev,_ZThn920_N8S19438C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C2D1Ev,_ZTv0_n32_N8S19438C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19438C2D1Ev,_ZThn920_N8S19438C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C2D0Ev,_ZTv0_n36_N8S19438C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19438C2D0Ev,_ZThn864_N8S19438C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C2D1Ev,_ZTv0_n36_N8S19438C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19438C2D1Ev,_ZThn864_N8S19438C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C2D0Ev,_ZTv0_n28_N8S19438C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19438C2D0Ev,_ZThn96_N8S19438C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C2D1Ev,_ZTv0_n28_N8S19438C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19438C2D1Ev,_ZThn96_N8S19438C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19438C2D0Ev,_ZTv0_n40_N8S19438C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19438C2D0Ev,_ZThn88_N8S19438C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19438C2D1Ev,_ZTv0_n40_N8S19438C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19438C2D1Ev,_ZThn88_N8S19438C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C3D0Ev,_ZTv0_n32_N8S19438C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19438C3D0Ev,_ZThn920_N8S19438C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C3D1Ev,_ZTv0_n32_N8S19438C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S19438C3D1Ev,_ZThn920_N8S19438C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C3D0Ev,_ZTv0_n36_N8S19438C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19438C3D0Ev,_ZThn864_N8S19438C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C3D1Ev,_ZTv0_n36_N8S19438C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S19438C3D1Ev,_ZThn864_N8S19438C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C3D0Ev,_ZTv0_n28_N8S19438C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19438C3D0Ev,_ZThn96_N8S19438C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C3D1Ev,_ZTv0_n28_N8S19438C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S19438C3D1Ev,_ZThn96_N8S19438C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19438C3D0Ev,_ZTv0_n40_N8S19438C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19438C3D0Ev,_ZThn88_N8S19438C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19438C3D1Ev,_ZTv0_n40_N8S19438C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19438C3D1Ev,_ZThn88_N8S19438C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C31D0Ev,_ZTv0_n28_N9S19438C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19438C31D0Ev,_ZThn104_N9S19438C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C31D1Ev,_ZTv0_n28_N9S19438C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N9S19438C31D1Ev,_ZThn104_N9S19438C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C31D0Ev,_ZTv0_n32_N9S19438C31D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S19438C31D0Ev,_ZThn928_N9S19438C31D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C31D1Ev,_ZTv0_n32_N9S19438C31D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S19438C31D1Ev,_ZThn928_N9S19438C31D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C26D0Ev,_ZTv0_n28_N9S19438C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19438C26D0Ev,_ZThn160_N9S19438C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C26D1Ev,_ZTv0_n28_N9S19438C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19438C26D1Ev,_ZThn160_N9S19438C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C26D0Ev,_ZTv0_n32_N9S19438C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N9S19438C26D0Ev,_ZThn984_N9S19438C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C26D1Ev,_ZTv0_n32_N9S19438C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N9S19438C26D1Ev,_ZThn984_N9S19438C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C13D0Ev,_ZTv0_n28_N9S19438C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19438C13D0Ev,_ZThn160_N9S19438C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19438C13D1Ev,_ZTv0_n28_N9S19438C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19438C13D1Ev,_ZThn160_N9S19438C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C13D0Ev,_ZTv0_n32_N9S19438C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C13D0Ev,_ZThn56_N9S19438C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N9S19438C13D0Ev,_ZThn984_N9S19438C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19438C13D1Ev,_ZTv0_n32_N9S19438C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19438C13D1Ev,_ZThn56_N9S19438C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N9S19438C13D1Ev,_ZThn984_N9S19438C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19438C1D0Ev,_ZTv0_n24_N8S19438C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S19438C1D0Ev,_ZThn1924_N8S19438C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2912_N8S19438C1D0Ev,_ZThn1920_N8S19438C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1736_N8S19438C1D0Ev,_ZThn1152_N8S19438C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1560_N8S19438C1D0Ev,_ZThn1028_N8S19438C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19438C1D1Ev,_ZTv0_n24_N8S19438C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2920_N8S19438C1D1Ev,_ZThn1924_N8S19438C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2912_N8S19438C1D1Ev,_ZThn1920_N8S19438C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1736_N8S19438C1D1Ev,_ZThn1152_N8S19438C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1560_N8S19438C1D1Ev,_ZThn1028_N8S19438C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C1D0Ev,_ZTv0_n32_N8S19438C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19438C1D0Ev,_ZThn984_N8S19438C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19438C1D1Ev,_ZTv0_n32_N8S19438C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1472_N8S19438C1D1Ev,_ZThn984_N8S19438C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C1D0Ev,_ZTv0_n36_N8S19438C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19438C1D0Ev,_ZThn928_N8S19438C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19438C1D1Ev,_ZTv0_n36_N8S19438C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N8S19438C1D1Ev,_ZThn928_N8S19438C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C1D0Ev,_ZTv0_n28_N8S19438C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19438C1D0Ev,_ZThn160_N8S19438C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19438C1D1Ev,_ZTv0_n28_N8S19438C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N8S19438C1D1Ev,_ZThn160_N8S19438C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19438C1D0Ev,_ZTv0_n40_N8S19438C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19438C1D0Ev,_ZThn152_N8S19438C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19438C1D1Ev,_ZTv0_n40_N8S19438C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19438C1D1Ev,_ZThn152_N8S19438C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S19438C1D0Ev,_ZTv0_n84_N8S19438C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19438C1D0Ev,_ZThn64_N8S19438C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n168_N8S19438C1D1Ev,_ZTv0_n84_N8S19438C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19438C1D1Ev,_ZThn64_N8S19438C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19438C1 = {  "S19438C1", // class name
  bases_S19438C1, 60,
  &(vtc_S19438C1[0]), // expected_vtbl_contents
  &(vtt_S19438C1[0]), // expected_vtt_contents
  ABISELECT(2976,1972), // object size
  NSPAIRA(_ZTI8S19438C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19438C1),219, //virtual function table var
  25, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19438C1),149, //virtual table table var
  43, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4231C3  {
  void *s4231c3f0[2];
  int s4231c3f1;
  void *s4231c3f2;
  int s4231c3f3[3];
  ::S3214C13_nt s4231c3f4;
  unsigned int s4231c3f5:1;
  unsigned int s4231c3f6:1;
  unsigned int s4231c3f7:1;
  void *s4231c3f8[2];
  ::S9141C26 s4231c3f9;
  void *s4231c3f10;
  int s4231c3f11;
  ::S9141C26 s4231c3f12;
  int s4231c3f13[8];
  ::S3214C13_nt s4231c3f14;
  ::S9142C8_nt s4231c3f15;
  ::S9141C28_nt s4231c3f16;
  int s4231c3f17[2];
  void *s4231c3f18;
  int s4231c3f19;
  ::S3214C23 s4231c3f20;
  int s4231c3f21[2];
  void *s4231c3f22;
  int s4231c3f23;
  virtual  ~S4231C3(); // _ZN7S4231C3D1Ev
  virtual void  v11(); // _ZN7S4231C33v11Ev
  virtual void  v12(); // _ZN7S4231C33v12Ev
  virtual void  v13(); // _ZN7S4231C33v13Ev
  virtual void  v14(); // _ZN7S4231C33v14Ev
  virtual void  v15(); // _ZN7S4231C33v15Ev
  virtual void  v16(); // _ZN7S4231C33v16Ev
  virtual void  v17(); // _ZN7S4231C33v17Ev
  virtual void  v18(); // _ZN7S4231C33v18Ev
  virtual void  v19(); // _ZN7S4231C33v19Ev
  virtual void  v20(); // _ZN7S4231C33v20Ev
  virtual void  v21(); // _ZN7S4231C33v21Ev
  virtual void  v22(); // _ZN7S4231C33v22Ev
  virtual void  v23(); // _ZN7S4231C33v23Ev
  virtual void  v24(); // _ZN7S4231C33v24Ev
  virtual void  v25(); // _ZN7S4231C33v25Ev
  virtual void  v26(); // _ZN7S4231C33v26Ev
  virtual void  v27(); // _ZN7S4231C33v27Ev
  virtual void  v28(); // _ZN7S4231C33v28Ev
  virtual void  v29(); // _ZN7S4231C33v29Ev
  virtual void  v30(); // _ZN7S4231C33v30Ev
  virtual void  v31(); // _ZN7S4231C33v31Ev
  virtual void  v32(); // _ZN7S4231C33v32Ev
  virtual void  v33(); // _ZN7S4231C33v33Ev
  virtual void  v34(); // _ZN7S4231C33v34Ev
  virtual void  v35(); // _ZN7S4231C33v35Ev
  virtual void  v36(); // _ZN7S4231C33v36Ev
  virtual void  v37(); // _ZN7S4231C33v37Ev
  virtual void  v38(); // _ZN7S4231C33v38Ev
  virtual void  v39(); // _ZN7S4231C33v39Ev
  virtual void  v40(); // _ZN7S4231C33v40Ev
  virtual void  v41(); // _ZN7S4231C33v41Ev
  virtual void  v42(); // _ZN7S4231C33v42Ev
  virtual void  v43(); // _ZN7S4231C33v43Ev
  virtual void  v44(); // _ZN7S4231C33v44Ev
  virtual void  v45(); // _ZN7S4231C33v45Ev
  S4231C3(); // tgen
};
//SIG(-1 S4231C3) 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 Fp[2] Fi Fp Fi[3] FC2{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC3 Fi[8] FC2 FC7{ m FC2 FC2 Fc} FC5 Fi[2] Fp Fi FC8{ BC6} Fi[2] Fp Fi}


 S4231C3 ::~S4231C3(){ note_dtor("S4231C3", this);}
void  S4231C3 ::v11(){vfunc_called(this, "_ZN7S4231C33v11Ev");}
void  S4231C3 ::v12(){vfunc_called(this, "_ZN7S4231C33v12Ev");}
void  S4231C3 ::v13(){vfunc_called(this, "_ZN7S4231C33v13Ev");}
void  S4231C3 ::v14(){vfunc_called(this, "_ZN7S4231C33v14Ev");}
void  S4231C3 ::v15(){vfunc_called(this, "_ZN7S4231C33v15Ev");}
void  S4231C3 ::v16(){vfunc_called(this, "_ZN7S4231C33v16Ev");}
void  S4231C3 ::v17(){vfunc_called(this, "_ZN7S4231C33v17Ev");}
void  S4231C3 ::v18(){vfunc_called(this, "_ZN7S4231C33v18Ev");}
void  S4231C3 ::v19(){vfunc_called(this, "_ZN7S4231C33v19Ev");}
void  S4231C3 ::v20(){vfunc_called(this, "_ZN7S4231C33v20Ev");}
void  S4231C3 ::v21(){vfunc_called(this, "_ZN7S4231C33v21Ev");}
void  S4231C3 ::v22(){vfunc_called(this, "_ZN7S4231C33v22Ev");}
void  S4231C3 ::v23(){vfunc_called(this, "_ZN7S4231C33v23Ev");}
void  S4231C3 ::v24(){vfunc_called(this, "_ZN7S4231C33v24Ev");}
void  S4231C3 ::v25(){vfunc_called(this, "_ZN7S4231C33v25Ev");}
void  S4231C3 ::v26(){vfunc_called(this, "_ZN7S4231C33v26Ev");}
void  S4231C3 ::v27(){vfunc_called(this, "_ZN7S4231C33v27Ev");}
void  S4231C3 ::v28(){vfunc_called(this, "_ZN7S4231C33v28Ev");}
void  S4231C3 ::v29(){vfunc_called(this, "_ZN7S4231C33v29Ev");}
void  S4231C3 ::v30(){vfunc_called(this, "_ZN7S4231C33v30Ev");}
void  S4231C3 ::v31(){vfunc_called(this, "_ZN7S4231C33v31Ev");}
void  S4231C3 ::v32(){vfunc_called(this, "_ZN7S4231C33v32Ev");}
void  S4231C3 ::v33(){vfunc_called(this, "_ZN7S4231C33v33Ev");}
void  S4231C3 ::v34(){vfunc_called(this, "_ZN7S4231C33v34Ev");}
void  S4231C3 ::v35(){vfunc_called(this, "_ZN7S4231C33v35Ev");}
void  S4231C3 ::v36(){vfunc_called(this, "_ZN7S4231C33v36Ev");}
void  S4231C3 ::v37(){vfunc_called(this, "_ZN7S4231C33v37Ev");}
void  S4231C3 ::v38(){vfunc_called(this, "_ZN7S4231C33v38Ev");}
void  S4231C3 ::v39(){vfunc_called(this, "_ZN7S4231C33v39Ev");}
void  S4231C3 ::v40(){vfunc_called(this, "_ZN7S4231C33v40Ev");}
void  S4231C3 ::v41(){vfunc_called(this, "_ZN7S4231C33v41Ev");}
void  S4231C3 ::v42(){vfunc_called(this, "_ZN7S4231C33v42Ev");}
void  S4231C3 ::v43(){vfunc_called(this, "_ZN7S4231C33v43Ev");}
void  S4231C3 ::v44(){vfunc_called(this, "_ZN7S4231C33v44Ev");}
void  S4231C3 ::v45(){vfunc_called(this, "_ZN7S4231C33v45Ev");}
S4231C3 ::S4231C3(){ note_ctor("S4231C3", this);} // tgen

static void Test_S4231C3()
{
  extern Class_Descriptor cd_S4231C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,59)];
    init_test(&cd_S4231C3, buf);
    S4231C3 *dp, &lv = *(dp=new (buf) S4231C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,232), "sizeof(S4231C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4231C3)");
    check_field_offset(lv, s4231c3f0, ABISELECT(8,4), "S4231C3.s4231c3f0");
    check_field_offset(lv, s4231c3f1, ABISELECT(24,12), "S4231C3.s4231c3f1");
    check_field_offset(lv, s4231c3f2, ABISELECT(32,16), "S4231C3.s4231c3f2");
    check_field_offset(lv, s4231c3f3, ABISELECT(40,20), "S4231C3.s4231c3f3");
    check_field_offset(lv, s4231c3f4, ABISELECT(52,32), "S4231C3.s4231c3f4");
    set_bf_and_test(lv, s4231c3f5, ABISELECT(64,44), 0, 1, 1, "S4231C3");
    set_bf_and_test(lv, s4231c3f6, ABISELECT(64,44), 1, 1, 1, "S4231C3");
    set_bf_and_test(lv, s4231c3f7, ABISELECT(64,44), 2, 1, 1, "S4231C3");
    check_field_offset(lv, s4231c3f8, ABISELECT(72,48), "S4231C3.s4231c3f8");
    check_field_offset(lv, s4231c3f9, ABISELECT(88,56), "S4231C3.s4231c3f9");
    check_field_offset(lv, s4231c3f10, ABISELECT(120,76), "S4231C3.s4231c3f10");
    check_field_offset(lv, s4231c3f11, ABISELECT(128,80), "S4231C3.s4231c3f11");
    check_field_offset(lv, s4231c3f12, ABISELECT(136,84), "S4231C3.s4231c3f12");
    check_field_offset(lv, s4231c3f13, ABISELECT(168,104), "S4231C3.s4231c3f13");
    check_field_offset(lv, s4231c3f14, ABISELECT(200,136), "S4231C3.s4231c3f14");
    check_field_offset(lv, s4231c3f15, ABISELECT(212,148), "S4231C3.s4231c3f15");
    check_field_offset(lv, s4231c3f16, ABISELECT(240,176), "S4231C3.s4231c3f16");
    check_field_offset(lv, s4231c3f17, ABISELECT(256,188), "S4231C3.s4231c3f17");
    check_field_offset(lv, s4231c3f18, ABISELECT(264,196), "S4231C3.s4231c3f18");
    check_field_offset(lv, s4231c3f19, ABISELECT(272,200), "S4231C3.s4231c3f19");
    check_field_offset(lv, s4231c3f20, ABISELECT(280,204), "S4231C3.s4231c3f20");
    check_field_offset(lv, s4231c3f21, ABISELECT(296,216), "S4231C3.s4231c3f21");
    check_field_offset(lv, s4231c3f22, ABISELECT(304,224), "S4231C3.s4231c3f22");
    check_field_offset(lv, s4231c3f23, ABISELECT(312,228), "S4231C3.s4231c3f23");
    test_class_info(&lv, &cd_S4231C3);
    dp->~S4231C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4231C3(Test_S4231C3, "S4231C3", ABISELECT(320,232));

#else // __cplusplus

extern void _ZN7S4231C3C1Ev();
extern void _ZN7S4231C3D1Ev();
Name_Map name_map_S4231C3[] = {
  NSPAIR(_ZN7S4231C3C1Ev),
  NSPAIR(_ZN7S4231C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4231C3[];
extern void _ZN7S4231C3D1Ev();
extern void _ZN7S4231C3D0Ev();
extern void _ZN7S4231C33v11Ev();
extern void _ZN7S4231C33v12Ev();
extern void _ZN7S4231C33v13Ev();
extern void _ZN7S4231C33v14Ev();
extern void _ZN7S4231C33v15Ev();
extern void _ZN7S4231C33v16Ev();
extern void _ZN7S4231C33v17Ev();
extern void _ZN7S4231C33v18Ev();
extern void _ZN7S4231C33v19Ev();
extern void _ZN7S4231C33v20Ev();
extern void _ZN7S4231C33v21Ev();
extern void _ZN7S4231C33v22Ev();
extern void _ZN7S4231C33v23Ev();
extern void _ZN7S4231C33v24Ev();
extern void _ZN7S4231C33v25Ev();
extern void _ZN7S4231C33v26Ev();
extern void _ZN7S4231C33v27Ev();
extern void _ZN7S4231C33v28Ev();
extern void _ZN7S4231C33v29Ev();
extern void _ZN7S4231C33v30Ev();
extern void _ZN7S4231C33v31Ev();
extern void _ZN7S4231C33v32Ev();
extern void _ZN7S4231C33v33Ev();
extern void _ZN7S4231C33v34Ev();
extern void _ZN7S4231C33v35Ev();
extern void _ZN7S4231C33v36Ev();
extern void _ZN7S4231C33v37Ev();
extern void _ZN7S4231C33v38Ev();
extern void _ZN7S4231C33v39Ev();
extern void _ZN7S4231C33v40Ev();
extern void _ZN7S4231C33v41Ev();
extern void _ZN7S4231C33v42Ev();
extern void _ZN7S4231C33v43Ev();
extern void _ZN7S4231C33v44Ev();
extern void _ZN7S4231C33v45Ev();
static  VTBL_ENTRY vtc_S4231C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4231C3[0]),
  (VTBL_ENTRY)&_ZN7S4231C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4231C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v25Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v26Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v27Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v38Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v39Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v40Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v41Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v42Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v43Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v44Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v45Ev,
};
extern VTBL_ENTRY _ZTI7S4231C3[];
extern  VTBL_ENTRY _ZTV7S4231C3[];
Class_Descriptor cd_S4231C3 = {  "S4231C3", // class name
  0,0,//no base classes
  &(vtc_S4231C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,232), // object size
  NSPAIRA(_ZTI7S4231C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4231C3),39, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4231C2  : S4231C3 {
  virtual  ~S4231C2(); // _ZN7S4231C2D1Ev
  virtual void  v46(); // _ZN7S4231C23v46Ev
  virtual void  v47(); // _ZN7S4231C23v47Ev
  virtual void  v48(); // _ZN7S4231C23v48Ev
  virtual void  v49(); // _ZN7S4231C23v49Ev
  S4231C2(); // tgen
};
//SIG(-1 S4231C2) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 Fp[2] Fi Fp Fi[3] FC3{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC4 Fi[8] FC3 FC8{ m FC3 FC3 Fc} FC6 Fi[2] Fp Fi FC9{ BC7} Fi[2] Fp Fi} vd v1 v2 v3 v4}


 S4231C2 ::~S4231C2(){ note_dtor("S4231C2", this);}
void  S4231C2 ::v46(){vfunc_called(this, "_ZN7S4231C23v46Ev");}
void  S4231C2 ::v47(){vfunc_called(this, "_ZN7S4231C23v47Ev");}
void  S4231C2 ::v48(){vfunc_called(this, "_ZN7S4231C23v48Ev");}
void  S4231C2 ::v49(){vfunc_called(this, "_ZN7S4231C23v49Ev");}
S4231C2 ::S4231C2(){ note_ctor("S4231C2", this);} // tgen

static void Test_S4231C2()
{
  extern Class_Descriptor cd_S4231C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,59)];
    init_test(&cd_S4231C2, buf);
    S4231C2 *dp, &lv = *(dp=new (buf) S4231C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,232), "sizeof(S4231C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4231C2)");
    check_base_class_offset(lv, (S4231C3*), 0, "S4231C2");
    test_class_info(&lv, &cd_S4231C2);
    dp->~S4231C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4231C2(Test_S4231C2, "S4231C2", ABISELECT(320,232));

#else // __cplusplus

extern void _ZN7S4231C2C1Ev();
extern void _ZN7S4231C2D1Ev();
Name_Map name_map_S4231C2[] = {
  NSPAIR(_ZN7S4231C2C1Ev),
  NSPAIR(_ZN7S4231C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4231C3;
extern VTBL_ENTRY _ZTI7S4231C3[];
extern  VTBL_ENTRY _ZTV7S4231C3[];
static Base_Class bases_S4231C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4231C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4231C2[];
extern void _ZN7S4231C2D1Ev();
extern void _ZN7S4231C2D0Ev();
extern void _ZN7S4231C33v11Ev();
extern void _ZN7S4231C33v12Ev();
extern void _ZN7S4231C33v13Ev();
extern void _ZN7S4231C33v14Ev();
extern void _ZN7S4231C33v15Ev();
extern void _ZN7S4231C33v16Ev();
extern void _ZN7S4231C33v17Ev();
extern void _ZN7S4231C33v18Ev();
extern void _ZN7S4231C33v19Ev();
extern void _ZN7S4231C33v20Ev();
extern void _ZN7S4231C33v21Ev();
extern void _ZN7S4231C33v22Ev();
extern void _ZN7S4231C33v23Ev();
extern void _ZN7S4231C33v24Ev();
extern void _ZN7S4231C33v25Ev();
extern void _ZN7S4231C33v26Ev();
extern void _ZN7S4231C33v27Ev();
extern void _ZN7S4231C33v28Ev();
extern void _ZN7S4231C33v29Ev();
extern void _ZN7S4231C33v30Ev();
extern void _ZN7S4231C33v31Ev();
extern void _ZN7S4231C33v32Ev();
extern void _ZN7S4231C33v33Ev();
extern void _ZN7S4231C33v34Ev();
extern void _ZN7S4231C33v35Ev();
extern void _ZN7S4231C33v36Ev();
extern void _ZN7S4231C33v37Ev();
extern void _ZN7S4231C33v38Ev();
extern void _ZN7S4231C33v39Ev();
extern void _ZN7S4231C33v40Ev();
extern void _ZN7S4231C33v41Ev();
extern void _ZN7S4231C33v42Ev();
extern void _ZN7S4231C33v43Ev();
extern void _ZN7S4231C33v44Ev();
extern void _ZN7S4231C33v45Ev();
extern void _ZN7S4231C23v46Ev();
extern void _ZN7S4231C23v47Ev();
extern void _ZN7S4231C23v48Ev();
extern void _ZN7S4231C23v49Ev();
static  VTBL_ENTRY vtc_S4231C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4231C2[0]),
  (VTBL_ENTRY)&_ZN7S4231C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4231C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v25Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v26Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v27Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v38Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v39Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v40Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v41Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v42Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v43Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v44Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v45Ev,
  (VTBL_ENTRY)&_ZN7S4231C23v46Ev,
  (VTBL_ENTRY)&_ZN7S4231C23v47Ev,
  (VTBL_ENTRY)&_ZN7S4231C23v48Ev,
  (VTBL_ENTRY)&_ZN7S4231C23v49Ev,
};
extern VTBL_ENTRY _ZTI7S4231C2[];
extern  VTBL_ENTRY _ZTV7S4231C2[];
Class_Descriptor cd_S4231C2 = {  "S4231C2", // class name
  bases_S4231C2, 1,
  &(vtc_S4231C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,232), // object size
  NSPAIRA(_ZTI7S4231C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4231C2),43, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4231C1  : S4231C2 {
  void *s4231c1f0;
  ::S4208C13 s4231c1f1;
  virtual void  v1(); // _ZN7S4231C12v1Ev
  virtual void  v2(); // _ZN7S4231C12v2Ev
  virtual void  v3(); // _ZN7S4231C12v3Ev
  virtual void  v4(); // _ZN7S4231C12v4Ev
  virtual void  v5(); // _ZN7S4231C12v5Ev
  virtual void  v6(); // _ZN7S4231C12v6Ev
  virtual void  v7(); // _ZN7S4231C12v7Ev
  virtual void  v8(); // _ZN7S4231C12v8Ev
  virtual void  v9(); // _ZN7S4231C12v9Ev
  virtual void  v10(); // _ZN7S4231C13v10Ev
  ~S4231C1(); // tgen
  S4231C1(); // tgen
};
//SIG(1 S4231C1) C1{ BC2{ BC3{ vd v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 Fp[2] Fi Fp Fi[3] FC4{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC5{ BC6{ m FC7{ BC8{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC5 Fi[8] FC4 FC9{ m FC4 FC4 Fc} FC7 Fi[2] Fp Fi FC10{ BC8} Fi[2] Fp Fi} vd v46 v47 v48 v49} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Fp FC11{ vd m Fp[3] Fi[3]}}


void  S4231C1 ::v1(){vfunc_called(this, "_ZN7S4231C12v1Ev");}
void  S4231C1 ::v2(){vfunc_called(this, "_ZN7S4231C12v2Ev");}
void  S4231C1 ::v3(){vfunc_called(this, "_ZN7S4231C12v3Ev");}
void  S4231C1 ::v4(){vfunc_called(this, "_ZN7S4231C12v4Ev");}
void  S4231C1 ::v5(){vfunc_called(this, "_ZN7S4231C12v5Ev");}
void  S4231C1 ::v6(){vfunc_called(this, "_ZN7S4231C12v6Ev");}
void  S4231C1 ::v7(){vfunc_called(this, "_ZN7S4231C12v7Ev");}
void  S4231C1 ::v8(){vfunc_called(this, "_ZN7S4231C12v8Ev");}
void  S4231C1 ::v9(){vfunc_called(this, "_ZN7S4231C12v9Ev");}
void  S4231C1 ::v10(){vfunc_called(this, "_ZN7S4231C13v10Ev");}
S4231C1 ::~S4231C1(){ note_dtor("S4231C1", this);} // tgen
S4231C1 ::S4231C1(){ note_ctor("S4231C1", this);} // tgen

static void Test_S4231C1()
{
  extern Class_Descriptor cd_S4231C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(48,67)];
    init_test(&cd_S4231C1, buf);
    S4231C1 *dp, &lv = *(dp=new (buf) S4231C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(376,264), "sizeof(S4231C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4231C1)");
    check_base_class_offset(lv, (S4231C3*)(S4231C2*), 0, "S4231C1");
    check_base_class_offset(lv, (S4231C2*), 0, "S4231C1");
    check_field_offset(lv, s4231c1f0, ABISELECT(320,232), "S4231C1.s4231c1f0");
    check_field_offset(lv, s4231c1f1, ABISELECT(328,236), "S4231C1.s4231c1f1");
    test_class_info(&lv, &cd_S4231C1);
    dp->~S4231C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4231C1(Test_S4231C1, "S4231C1", ABISELECT(376,264));

#else // __cplusplus

extern void _ZN7S4231C1C1Ev();
extern void _ZN7S4231C1D1Ev();
Name_Map name_map_S4231C1[] = {
  NSPAIR(_ZN7S4231C1C1Ev),
  NSPAIR(_ZN7S4231C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4231C3;
extern VTBL_ENTRY _ZTI7S4231C3[];
extern  VTBL_ENTRY _ZTV7S4231C3[];
extern Class_Descriptor cd_S4231C2;
extern VTBL_ENTRY _ZTI7S4231C2[];
extern  VTBL_ENTRY _ZTV7S4231C2[];
static Base_Class bases_S4231C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4231C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4231C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4231C1[];
extern void _ZN7S4231C1D1Ev();
extern void _ZN7S4231C1D0Ev();
extern void _ZN7S4231C33v11Ev();
extern void _ZN7S4231C33v12Ev();
extern void _ZN7S4231C33v13Ev();
extern void _ZN7S4231C33v14Ev();
extern void _ZN7S4231C33v15Ev();
extern void _ZN7S4231C33v16Ev();
extern void _ZN7S4231C33v17Ev();
extern void _ZN7S4231C33v18Ev();
extern void _ZN7S4231C33v19Ev();
extern void _ZN7S4231C33v20Ev();
extern void _ZN7S4231C33v21Ev();
extern void _ZN7S4231C33v22Ev();
extern void _ZN7S4231C33v23Ev();
extern void _ZN7S4231C33v24Ev();
extern void _ZN7S4231C33v25Ev();
extern void _ZN7S4231C33v26Ev();
extern void _ZN7S4231C33v27Ev();
extern void _ZN7S4231C33v28Ev();
extern void _ZN7S4231C33v29Ev();
extern void _ZN7S4231C33v30Ev();
extern void _ZN7S4231C33v31Ev();
extern void _ZN7S4231C33v32Ev();
extern void _ZN7S4231C33v33Ev();
extern void _ZN7S4231C33v34Ev();
extern void _ZN7S4231C33v35Ev();
extern void _ZN7S4231C33v36Ev();
extern void _ZN7S4231C33v37Ev();
extern void _ZN7S4231C33v38Ev();
extern void _ZN7S4231C33v39Ev();
extern void _ZN7S4231C33v40Ev();
extern void _ZN7S4231C33v41Ev();
extern void _ZN7S4231C33v42Ev();
extern void _ZN7S4231C33v43Ev();
extern void _ZN7S4231C33v44Ev();
extern void _ZN7S4231C33v45Ev();
extern void _ZN7S4231C23v46Ev();
extern void _ZN7S4231C23v47Ev();
extern void _ZN7S4231C23v48Ev();
extern void _ZN7S4231C23v49Ev();
extern void _ZN7S4231C12v1Ev();
extern void _ZN7S4231C12v2Ev();
extern void _ZN7S4231C12v3Ev();
extern void _ZN7S4231C12v4Ev();
extern void _ZN7S4231C12v5Ev();
extern void _ZN7S4231C12v6Ev();
extern void _ZN7S4231C12v7Ev();
extern void _ZN7S4231C12v8Ev();
extern void _ZN7S4231C12v9Ev();
extern void _ZN7S4231C13v10Ev();
static  VTBL_ENTRY vtc_S4231C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4231C1[0]),
  (VTBL_ENTRY)&_ZN7S4231C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4231C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v11Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v12Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v13Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v14Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v16Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v17Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v18Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v19Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v20Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v21Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v22Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v23Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v24Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v25Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v26Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v27Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v28Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v29Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v30Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v31Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v32Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v33Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v34Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v35Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v36Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v37Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v38Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v39Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v40Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v41Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v42Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v43Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v44Ev,
  (VTBL_ENTRY)&_ZN7S4231C33v45Ev,
  (VTBL_ENTRY)&_ZN7S4231C23v46Ev,
  (VTBL_ENTRY)&_ZN7S4231C23v47Ev,
  (VTBL_ENTRY)&_ZN7S4231C23v48Ev,
  (VTBL_ENTRY)&_ZN7S4231C23v49Ev,
  (VTBL_ENTRY)&_ZN7S4231C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4231C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4231C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4231C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4231C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4231C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4231C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4231C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4231C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4231C13v10Ev,
};
extern VTBL_ENTRY _ZTI7S4231C1[];
extern  VTBL_ENTRY _ZTV7S4231C1[];
Class_Descriptor cd_S4231C1 = {  "S4231C1", // class name
  bases_S4231C1, 2,
  &(vtc_S4231C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(376,264), // object size
  NSPAIRA(_ZTI7S4231C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4231C1),53, //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  S1531C4  {
  int s1531c4f0;
  __tsi64 s1531c4f1;
  void *s1531c4f2[4];
  int s1531c4f3[2];
  void *s1531c4f4;
  ::S3214C4_nt s1531c4f5;
  void *s1531c4f6[2];
  virtual  ~S1531C4(); // _ZN7S1531C4D1Ev
  virtual void  v6(); // _ZN7S1531C42v6Ev
  virtual void  v7(); // _ZN7S1531C42v7Ev
  virtual void  v8(); // _ZN7S1531C42v8Ev
  virtual void  v9(); // _ZN7S1531C42v9Ev
  virtual void  v10(); // _ZN7S1531C43v10Ev
  virtual void  v11(); // _ZN7S1531C43v11Ev
  virtual void  v12(); // _ZN7S1531C43v12Ev
  virtual void  v13(); // _ZN7S1531C43v13Ev
  virtual void  v14(); // _ZN7S1531C43v14Ev
  virtual void  v15(); // _ZN7S1531C43v15Ev
  virtual void  v16(); // _ZN7S1531C43v16Ev
  virtual void  v17(); // _ZN7S1531C43v17Ev
  virtual void  v18(); // _ZN7S1531C43v18Ev
  virtual void  v19(); // _ZN7S1531C43v19Ev
  virtual void  v20(); // _ZN7S1531C43v20Ev
  virtual void  v21(); // _ZN7S1531C43v21Ev
  virtual void  v22(); // _ZN7S1531C43v22Ev
  virtual void  v23(); // _ZN7S1531C43v23Ev
  virtual void  v24(); // _ZN7S1531C43v24Ev
  virtual void  v25(); // _ZN7S1531C43v25Ev
  virtual void  v26(); // _ZN7S1531C43v26Ev
  virtual void  v27(); // _ZN7S1531C43v27Ev
  virtual void  v28(); // _ZN7S1531C43v28Ev
  virtual void  v29(); // _ZN7S1531C43v29Ev
  virtual void  v30(); // _ZN7S1531C43v30Ev
  virtual void  v31(); // _ZN7S1531C43v31Ev
  virtual void  v32(); // _ZN7S1531C43v32Ev
  virtual void  v33(); // _ZN7S1531C43v33Ev
  virtual void  v34(); // _ZN7S1531C43v34Ev
  virtual void  v35(); // _ZN7S1531C43v35Ev
  virtual void  v36(); // _ZN7S1531C43v36Ev
  virtual void  v37(); // _ZN7S1531C43v37Ev
  virtual void  v38(); // _ZN7S1531C43v38Ev
  virtual void  v39(); // _ZN7S1531C43v39Ev
  virtual void  v40(); // _ZN7S1531C43v40Ev
  virtual void  v41(); // _ZN7S1531C43v41Ev
  virtual void  v42(); // _ZN7S1531C43v42Ev
  virtual void  v43(); // _ZN7S1531C43v43Ev
  virtual void  v44(); // _ZN7S1531C43v44Ev
  virtual void  v45(); // _ZN7S1531C43v45Ev
  virtual void  v46(); // _ZN7S1531C43v46Ev
  virtual void  v47(); // _ZN7S1531C43v47Ev
  virtual void  v48(); // _ZN7S1531C43v48Ev
  virtual void  v49(); // _ZN7S1531C43v49Ev
  virtual void  v50(); // _ZN7S1531C43v50Ev
  virtual void  v51(); // _ZN7S1531C43v51Ev
  virtual void  v52(); // _ZN7S1531C43v52Ev
  virtual void  v53(); // _ZN7S1531C43v53Ev
  virtual void  v54(); // _ZN7S1531C43v54Ev
  virtual void  v55(); // _ZN7S1531C43v55Ev
  virtual void  v56(); // _ZN7S1531C43v56Ev
  virtual void  v57(); // _ZN7S1531C43v57Ev
  virtual void  v58(); // _ZN7S1531C43v58Ev
  virtual void  v59(); // _ZN7S1531C43v59Ev
  virtual void  v60(); // _ZN7S1531C43v60Ev
  virtual void  v61(); // _ZN7S1531C43v61Ev
  virtual void  v62(); // _ZN7S1531C43v62Ev
  virtual void  v63(); // _ZN7S1531C43v63Ev
  virtual void  v64(); // _ZN7S1531C43v64Ev
  virtual void  v65(); // _ZN7S1531C43v65Ev
  virtual void  v66(); // _ZN7S1531C43v66Ev
  virtual void  v67(); // _ZN7S1531C43v67Ev
  virtual void  v68(); // _ZN7S1531C43v68Ev
  virtual void  v69(); // _ZN7S1531C43v69Ev
  S1531C4(); // tgen
};
//SIG(-1 S1531C4) 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]}


 S1531C4 ::~S1531C4(){ note_dtor("S1531C4", this);}
void  S1531C4 ::v6(){vfunc_called(this, "_ZN7S1531C42v6Ev");}
void  S1531C4 ::v7(){vfunc_called(this, "_ZN7S1531C42v7Ev");}
void  S1531C4 ::v8(){vfunc_called(this, "_ZN7S1531C42v8Ev");}
void  S1531C4 ::v9(){vfunc_called(this, "_ZN7S1531C42v9Ev");}
void  S1531C4 ::v10(){vfunc_called(this, "_ZN7S1531C43v10Ev");}
void  S1531C4 ::v11(){vfunc_called(this, "_ZN7S1531C43v11Ev");}
void  S1531C4 ::v12(){vfunc_called(this, "_ZN7S1531C43v12Ev");}
void  S1531C4 ::v13(){vfunc_called(this, "_ZN7S1531C43v13Ev");}
void  S1531C4 ::v14(){vfunc_called(this, "_ZN7S1531C43v14Ev");}
void  S1531C4 ::v15(){vfunc_called(this, "_ZN7S1531C43v15Ev");}
void  S1531C4 ::v16(){vfunc_called(this, "_ZN7S1531C43v16Ev");}
void  S1531C4 ::v17(){vfunc_called(this, "_ZN7S1531C43v17Ev");}
void  S1531C4 ::v18(){vfunc_called(this, "_ZN7S1531C43v18Ev");}
void  S1531C4 ::v19(){vfunc_called(this, "_ZN7S1531C43v19Ev");}
void  S1531C4 ::v20(){vfunc_called(this, "_ZN7S1531C43v20Ev");}
void  S1531C4 ::v21(){vfunc_called(this, "_ZN7S1531C43v21Ev");}
void  S1531C4 ::v22(){vfunc_called(this, "_ZN7S1531C43v22Ev");}
void  S1531C4 ::v23(){vfunc_called(this, "_ZN7S1531C43v23Ev");}
void  S1531C4 ::v24(){vfunc_called(this, "_ZN7S1531C43v24Ev");}
void  S1531C4 ::v25(){vfunc_called(this, "_ZN7S1531C43v25Ev");}
void  S1531C4 ::v26(){vfunc_called(this, "_ZN7S1531C43v26Ev");}
void  S1531C4 ::v27(){vfunc_called(this, "_ZN7S1531C43v27Ev");}
void  S1531C4 ::v28(){vfunc_called(this, "_ZN7S1531C43v28Ev");}
void  S1531C4 ::v29(){vfunc_called(this, "_ZN7S1531C43v29Ev");}
void  S1531C4 ::v30(){vfunc_called(this, "_ZN7S1531C43v30Ev");}
void  S1531C4 ::v31(){vfunc_called(this, "_ZN7S1531C43v31Ev");}
void  S1531C4 ::v32(){vfunc_called(this, "_ZN7S1531C43v32Ev");}
void  S1531C4 ::v33(){vfunc_called(this, "_ZN7S1531C43v33Ev");}
void  S1531C4 ::v34(){vfunc_called(this, "_ZN7S1531C43v34Ev");}
void  S1531C4 ::v35(){vfunc_called(this, "_ZN7S1531C43v35Ev");}
void  S1531C4 ::v36(){vfunc_called(this, "_ZN7S1531C43v36Ev");}
void  S1531C4 ::v37(){vfunc_called(this, "_ZN7S1531C43v37Ev");}
void  S1531C4 ::v38(){vfunc_called(this, "_ZN7S1531C43v38Ev");}
void  S1531C4 ::v39(){vfunc_called(this, "_ZN7S1531C43v39Ev");}
void  S1531C4 ::v40(){vfunc_called(this, "_ZN7S1531C43v40Ev");}
void  S1531C4 ::v41(){vfunc_called(this, "_ZN7S1531C43v41Ev");}
void  S1531C4 ::v42(){vfunc_called(this, "_ZN7S1531C43v42Ev");}
void  S1531C4 ::v43(){vfunc_called(this, "_ZN7S1531C43v43Ev");}
void  S1531C4 ::v44(){vfunc_called(this, "_ZN7S1531C43v44Ev");}
void  S1531C4 ::v45(){vfunc_called(this, "_ZN7S1531C43v45Ev");}
void  S1531C4 ::v46(){vfunc_called(this, "_ZN7S1531C43v46Ev");}
void  S1531C4 ::v47(){vfunc_called(this, "_ZN7S1531C43v47Ev");}
void  S1531C4 ::v48(){vfunc_called(this, "_ZN7S1531C43v48Ev");}
void  S1531C4 ::v49(){vfunc_called(this, "_ZN7S1531C43v49Ev");}
void  S1531C4 ::v50(){vfunc_called(this, "_ZN7S1531C43v50Ev");}
void  S1531C4 ::v51(){vfunc_called(this, "_ZN7S1531C43v51Ev");}
void  S1531C4 ::v52(){vfunc_called(this, "_ZN7S1531C43v52Ev");}
void  S1531C4 ::v53(){vfunc_called(this, "_ZN7S1531C43v53Ev");}
void  S1531C4 ::v54(){vfunc_called(this, "_ZN7S1531C43v54Ev");}
void  S1531C4 ::v55(){vfunc_called(this, "_ZN7S1531C43v55Ev");}
void  S1531C4 ::v56(){vfunc_called(this, "_ZN7S1531C43v56Ev");}
void  S1531C4 ::v57(){vfunc_called(this, "_ZN7S1531C43v57Ev");}
void  S1531C4 ::v58(){vfunc_called(this, "_ZN7S1531C43v58Ev");}
void  S1531C4 ::v59(){vfunc_called(this, "_ZN7S1531C43v59Ev");}
void  S1531C4 ::v60(){vfunc_called(this, "_ZN7S1531C43v60Ev");}
void  S1531C4 ::v61(){vfunc_called(this, "_ZN7S1531C43v61Ev");}
void  S1531C4 ::v62(){vfunc_called(this, "_ZN7S1531C43v62Ev");}
void  S1531C4 ::v63(){vfunc_called(this, "_ZN7S1531C43v63Ev");}
void  S1531C4 ::v64(){vfunc_called(this, "_ZN7S1531C43v64Ev");}
void  S1531C4 ::v65(){vfunc_called(this, "_ZN7S1531C43v65Ev");}
void  S1531C4 ::v66(){vfunc_called(this, "_ZN7S1531C43v66Ev");}
void  S1531C4 ::v67(){vfunc_called(this, "_ZN7S1531C43v67Ev");}
void  S1531C4 ::v68(){vfunc_called(this, "_ZN7S1531C43v68Ev");}
void  S1531C4 ::v69(){vfunc_called(this, "_ZN7S1531C43v69Ev");}
S1531C4 ::S1531C4(){ note_ctor("S1531C4", this);} // tgen

static void Test_S1531C4()
{
  extern Class_Descriptor cd_S1531C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1531C4, buf);
    S1531C4 *dp, &lv = *(dp=new (buf) S1531C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1531C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1531C4)");
    check_field_offset(lv, s1531c4f0, ABISELECT(8,4), "S1531C4.s1531c4f0");
    check_field_offset(lv, s1531c4f1, ABISELECT(16,8), "S1531C4.s1531c4f1");
    check_field_offset(lv, s1531c4f2, ABISELECT(24,16), "S1531C4.s1531c4f2");
    check_field_offset(lv, s1531c4f3, ABISELECT(56,32), "S1531C4.s1531c4f3");
    check_field_offset(lv, s1531c4f4, ABISELECT(64,40), "S1531C4.s1531c4f4");
    check_field_offset(lv, s1531c4f5, ABISELECT(72,44), "S1531C4.s1531c4f5");
    check_field_offset(lv, s1531c4f6, ABISELECT(80,52), "S1531C4.s1531c4f6");
    test_class_info(&lv, &cd_S1531C4);
    dp->~S1531C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1531C4(Test_S1531C4, "S1531C4", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1531C4C1Ev();
extern void _ZN7S1531C4D1Ev();
Name_Map name_map_S1531C4[] = {
  NSPAIR(_ZN7S1531C4C1Ev),
  NSPAIR(_ZN7S1531C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S1531C4[];
extern void _ZN7S1531C4D1Ev();
extern void _ZN7S1531C4D0Ev();
extern void _ZN7S1531C42v6Ev();
extern void _ZN7S1531C42v7Ev();
extern void _ZN7S1531C42v8Ev();
extern void _ZN7S1531C42v9Ev();
extern void _ZN7S1531C43v10Ev();
extern void _ZN7S1531C43v11Ev();
extern void _ZN7S1531C43v12Ev();
extern void _ZN7S1531C43v13Ev();
extern void _ZN7S1531C43v14Ev();
extern void _ZN7S1531C43v15Ev();
extern void _ZN7S1531C43v16Ev();
extern void _ZN7S1531C43v17Ev();
extern void _ZN7S1531C43v18Ev();
extern void _ZN7S1531C43v19Ev();
extern void _ZN7S1531C43v20Ev();
extern void _ZN7S1531C43v21Ev();
extern void _ZN7S1531C43v22Ev();
extern void _ZN7S1531C43v23Ev();
extern void _ZN7S1531C43v24Ev();
extern void _ZN7S1531C43v25Ev();
extern void _ZN7S1531C43v26Ev();
extern void _ZN7S1531C43v27Ev();
extern void _ZN7S1531C43v28Ev();
extern void _ZN7S1531C43v29Ev();
extern void _ZN7S1531C43v30Ev();
extern void _ZN7S1531C43v31Ev();
extern void _ZN7S1531C43v32Ev();
extern void _ZN7S1531C43v33Ev();
extern void _ZN7S1531C43v34Ev();
extern void _ZN7S1531C43v35Ev();
extern void _ZN7S1531C43v36Ev();
extern void _ZN7S1531C43v37Ev();
extern void _ZN7S1531C43v38Ev();
extern void _ZN7S1531C43v39Ev();
extern void _ZN7S1531C43v40Ev();
extern void _ZN7S1531C43v41Ev();
extern void _ZN7S1531C43v42Ev();
extern void _ZN7S1531C43v43Ev();
extern void _ZN7S1531C43v44Ev();
extern void _ZN7S1531C43v45Ev();
extern void _ZN7S1531C43v46Ev();
extern void _ZN7S1531C43v47Ev();
extern void _ZN7S1531C43v48Ev();
extern void _ZN7S1531C43v49Ev();
extern void _ZN7S1531C43v50Ev();
extern void _ZN7S1531C43v51Ev();
extern void _ZN7S1531C43v52Ev();
extern void _ZN7S1531C43v53Ev();
extern void _ZN7S1531C43v54Ev();
extern void _ZN7S1531C43v55Ev();
extern void _ZN7S1531C43v56Ev();
extern void _ZN7S1531C43v57Ev();
extern void _ZN7S1531C43v58Ev();
extern void _ZN7S1531C43v59Ev();
extern void _ZN7S1531C43v60Ev();
extern void _ZN7S1531C43v61Ev();
extern void _ZN7S1531C43v62Ev();
extern void _ZN7S1531C43v63Ev();
extern void _ZN7S1531C43v64Ev();
extern void _ZN7S1531C43v65Ev();
extern void _ZN7S1531C43v66Ev();
extern void _ZN7S1531C43v67Ev();
extern void _ZN7S1531C43v68Ev();
extern void _ZN7S1531C43v69Ev();
static  VTBL_ENTRY vtc_S1531C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1531C4[0]),
  (VTBL_ENTRY)&_ZN7S1531C4D1Ev,
  (VTBL_ENTRY)&_ZN7S1531C4D0Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v69Ev,
};
extern VTBL_ENTRY _ZTI7S1531C4[];
extern  VTBL_ENTRY _ZTV7S1531C4[];
Class_Descriptor cd_S1531C4 = {  "S1531C4", // class name
  0,0,//no base classes
  &(vtc_S1531C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1531C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S1531C4),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  S1531C3  : S1531C4 {
  virtual  ~S1531C3(); // _ZN7S1531C3D1Ev
  virtual void  v70(); // _ZN7S1531C33v70Ev
  virtual void  v71(); // _ZN7S1531C33v71Ev
  S1531C3(); // tgen
};
//SIG(-1 S1531C3) 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}


 S1531C3 ::~S1531C3(){ note_dtor("S1531C3", this);}
void  S1531C3 ::v70(){vfunc_called(this, "_ZN7S1531C33v70Ev");}
void  S1531C3 ::v71(){vfunc_called(this, "_ZN7S1531C33v71Ev");}
S1531C3 ::S1531C3(){ note_ctor("S1531C3", this);} // tgen

static void Test_S1531C3()
{
  extern Class_Descriptor cd_S1531C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S1531C3, buf);
    S1531C3 *dp, &lv = *(dp=new (buf) S1531C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S1531C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1531C3)");
    check_base_class_offset(lv, (S1531C4*), 0, "S1531C3");
    test_class_info(&lv, &cd_S1531C3);
    dp->~S1531C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1531C3(Test_S1531C3, "S1531C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S1531C3C1Ev();
extern void _ZN7S1531C3D1Ev();
Name_Map name_map_S1531C3[] = {
  NSPAIR(_ZN7S1531C3C1Ev),
  NSPAIR(_ZN7S1531C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1531C4;
extern VTBL_ENTRY _ZTI7S1531C4[];
extern  VTBL_ENTRY _ZTV7S1531C4[];
static Base_Class bases_S1531C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1531C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1531C3[];
extern void _ZN7S1531C3D1Ev();
extern void _ZN7S1531C3D0Ev();
extern void _ZN7S1531C42v6Ev();
extern void _ZN7S1531C42v7Ev();
extern void _ZN7S1531C42v8Ev();
extern void _ZN7S1531C42v9Ev();
extern void _ZN7S1531C43v10Ev();
extern void _ZN7S1531C43v11Ev();
extern void _ZN7S1531C43v12Ev();
extern void _ZN7S1531C43v13Ev();
extern void _ZN7S1531C43v14Ev();
extern void _ZN7S1531C43v15Ev();
extern void _ZN7S1531C43v16Ev();
extern void _ZN7S1531C43v17Ev();
extern void _ZN7S1531C43v18Ev();
extern void _ZN7S1531C43v19Ev();
extern void _ZN7S1531C43v20Ev();
extern void _ZN7S1531C43v21Ev();
extern void _ZN7S1531C43v22Ev();
extern void _ZN7S1531C43v23Ev();
extern void _ZN7S1531C43v24Ev();
extern void _ZN7S1531C43v25Ev();
extern void _ZN7S1531C43v26Ev();
extern void _ZN7S1531C43v27Ev();
extern void _ZN7S1531C43v28Ev();
extern void _ZN7S1531C43v29Ev();
extern void _ZN7S1531C43v30Ev();
extern void _ZN7S1531C43v31Ev();
extern void _ZN7S1531C43v32Ev();
extern void _ZN7S1531C43v33Ev();
extern void _ZN7S1531C43v34Ev();
extern void _ZN7S1531C43v35Ev();
extern void _ZN7S1531C43v36Ev();
extern void _ZN7S1531C43v37Ev();
extern void _ZN7S1531C43v38Ev();
extern void _ZN7S1531C43v39Ev();
extern void _ZN7S1531C43v40Ev();
extern void _ZN7S1531C43v41Ev();
extern void _ZN7S1531C43v42Ev();
extern void _ZN7S1531C43v43Ev();
extern void _ZN7S1531C43v44Ev();
extern void _ZN7S1531C43v45Ev();
extern void _ZN7S1531C43v46Ev();
extern void _ZN7S1531C43v47Ev();
extern void _ZN7S1531C43v48Ev();
extern void _ZN7S1531C43v49Ev();
extern void _ZN7S1531C43v50Ev();
extern void _ZN7S1531C43v51Ev();
extern void _ZN7S1531C43v52Ev();
extern void _ZN7S1531C43v53Ev();
extern void _ZN7S1531C43v54Ev();
extern void _ZN7S1531C43v55Ev();
extern void _ZN7S1531C43v56Ev();
extern void _ZN7S1531C43v57Ev();
extern void _ZN7S1531C43v58Ev();
extern void _ZN7S1531C43v59Ev();
extern void _ZN7S1531C43v60Ev();
extern void _ZN7S1531C43v61Ev();
extern void _ZN7S1531C43v62Ev();
extern void _ZN7S1531C43v63Ev();
extern void _ZN7S1531C43v64Ev();
extern void _ZN7S1531C43v65Ev();
extern void _ZN7S1531C43v66Ev();
extern void _ZN7S1531C43v67Ev();
extern void _ZN7S1531C43v68Ev();
extern void _ZN7S1531C43v69Ev();
extern void _ZN7S1531C33v70Ev();
extern void _ZN7S1531C33v71Ev();
static  VTBL_ENTRY vtc_S1531C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1531C3[0]),
  (VTBL_ENTRY)&_ZN7S1531C3D1Ev,
  (VTBL_ENTRY)&_ZN7S1531C3D0Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1531C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1531C33v71Ev,
};
extern VTBL_ENTRY _ZTI7S1531C3[];
extern  VTBL_ENTRY _ZTV7S1531C3[];
Class_Descriptor cd_S1531C3 = {  "S1531C3", // class name
  bases_S1531C3, 1,
  &(vtc_S1531C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S1531C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1531C3),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  S1531C2  : S1531C3 {
  ::S23C10_nt s1531c2f0;
  ::S23C10_nt s1531c2f1;
  ::S23C10_nt s1531c2f2;
  ::S23C10_nt s1531c2f3;
  virtual  ~S1531C2(); // _ZN7S1531C2D1Ev
  virtual void  v72(); // _ZN7S1531C23v72Ev
  virtual void  v73(); // _ZN7S1531C23v73Ev
  virtual void  v74(); // _ZN7S1531C23v74Ev
  virtual void  v75(); // _ZN7S1531C23v75Ev
  virtual void  v76(); // _ZN7S1531C23v76Ev
  virtual void  v77(); // _ZN7S1531C23v77Ev
  virtual void  v78(); // _ZN7S1531C23v78Ev
  S1531C2(); // tgen
};
//SIG(-1 S1531C2) C1{ BC2{ BC3{ vd v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 v70 v71 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v72 v73} vd v1 v2 v3 v4 v5 v6 v7 FC5{ m Fp FC4} FC5 FC5 FC5}


 S1531C2 ::~S1531C2(){ note_dtor("S1531C2", this);}
void  S1531C2 ::v72(){vfunc_called(this, "_ZN7S1531C23v72Ev");}
void  S1531C2 ::v73(){vfunc_called(this, "_ZN7S1531C23v73Ev");}
void  S1531C2 ::v74(){vfunc_called(this, "_ZN7S1531C23v74Ev");}
void  S1531C2 ::v75(){vfunc_called(this, "_ZN7S1531C23v75Ev");}
void  S1531C2 ::v76(){vfunc_called(this, "_ZN7S1531C23v76Ev");}
void  S1531C2 ::v77(){vfunc_called(this, "_ZN7S1531C23v77Ev");}
void  S1531C2 ::v78(){vfunc_called(this, "_ZN7S1531C23v78Ev");}
S1531C2 ::S1531C2(){ note_ctor("S1531C2", this);} // tgen

static void Test_S1531C2()
{
  extern Class_Descriptor cd_S1531C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,28)];
    init_test(&cd_S1531C2, buf);
    S1531C2 *dp, &lv = *(dp=new (buf) S1531C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S1531C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1531C2)");
    check_base_class_offset(lv, (S1531C4*)(S1531C3*), 0, "S1531C2");
    check_base_class_offset(lv, (S1531C3*), 0, "S1531C2");
    check_field_offset(lv, s1531c2f0, ABISELECT(96,60), "S1531C2.s1531c2f0");
    check_field_offset(lv, s1531c2f1, ABISELECT(112,72), "S1531C2.s1531c2f1");
    check_field_offset(lv, s1531c2f2, ABISELECT(128,84), "S1531C2.s1531c2f2");
    check_field_offset(lv, s1531c2f3, ABISELECT(144,96), "S1531C2.s1531c2f3");
    test_class_info(&lv, &cd_S1531C2);
    dp->~S1531C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1531C2(Test_S1531C2, "S1531C2", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN7S1531C2C1Ev();
extern void _ZN7S1531C2D1Ev();
Name_Map name_map_S1531C2[] = {
  NSPAIR(_ZN7S1531C2C1Ev),
  NSPAIR(_ZN7S1531C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1531C4;
extern VTBL_ENTRY _ZTI7S1531C4[];
extern  VTBL_ENTRY _ZTV7S1531C4[];
extern Class_Descriptor cd_S1531C3;
extern VTBL_ENTRY _ZTI7S1531C3[];
extern  VTBL_ENTRY _ZTV7S1531C3[];
static Base_Class bases_S1531C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1531C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1531C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S1531C2[];
extern void _ZN7S1531C2D1Ev();
extern void _ZN7S1531C2D0Ev();
extern void _ZN7S1531C42v6Ev();
extern void _ZN7S1531C42v7Ev();
extern void _ZN7S1531C42v8Ev();
extern void _ZN7S1531C42v9Ev();
extern void _ZN7S1531C43v10Ev();
extern void _ZN7S1531C43v11Ev();
extern void _ZN7S1531C43v12Ev();
extern void _ZN7S1531C43v13Ev();
extern void _ZN7S1531C43v14Ev();
extern void _ZN7S1531C43v15Ev();
extern void _ZN7S1531C43v16Ev();
extern void _ZN7S1531C43v17Ev();
extern void _ZN7S1531C43v18Ev();
extern void _ZN7S1531C43v19Ev();
extern void _ZN7S1531C43v20Ev();
extern void _ZN7S1531C43v21Ev();
extern void _ZN7S1531C43v22Ev();
extern void _ZN7S1531C43v23Ev();
extern void _ZN7S1531C43v24Ev();
extern void _ZN7S1531C43v25Ev();
extern void _ZN7S1531C43v26Ev();
extern void _ZN7S1531C43v27Ev();
extern void _ZN7S1531C43v28Ev();
extern void _ZN7S1531C43v29Ev();
extern void _ZN7S1531C43v30Ev();
extern void _ZN7S1531C43v31Ev();
extern void _ZN7S1531C43v32Ev();
extern void _ZN7S1531C43v33Ev();
extern void _ZN7S1531C43v34Ev();
extern void _ZN7S1531C43v35Ev();
extern void _ZN7S1531C43v36Ev();
extern void _ZN7S1531C43v37Ev();
extern void _ZN7S1531C43v38Ev();
extern void _ZN7S1531C43v39Ev();
extern void _ZN7S1531C43v40Ev();
extern void _ZN7S1531C43v41Ev();
extern void _ZN7S1531C43v42Ev();
extern void _ZN7S1531C43v43Ev();
extern void _ZN7S1531C43v44Ev();
extern void _ZN7S1531C43v45Ev();
extern void _ZN7S1531C43v46Ev();
extern void _ZN7S1531C43v47Ev();
extern void _ZN7S1531C43v48Ev();
extern void _ZN7S1531C43v49Ev();
extern void _ZN7S1531C43v50Ev();
extern void _ZN7S1531C43v51Ev();
extern void _ZN7S1531C43v52Ev();
extern void _ZN7S1531C43v53Ev();
extern void _ZN7S1531C43v54Ev();
extern void _ZN7S1531C43v55Ev();
extern void _ZN7S1531C43v56Ev();
extern void _ZN7S1531C43v57Ev();
extern void _ZN7S1531C43v58Ev();
extern void _ZN7S1531C43v59Ev();
extern void _ZN7S1531C43v60Ev();
extern void _ZN7S1531C43v61Ev();
extern void _ZN7S1531C43v62Ev();
extern void _ZN7S1531C43v63Ev();
extern void _ZN7S1531C43v64Ev();
extern void _ZN7S1531C43v65Ev();
extern void _ZN7S1531C43v66Ev();
extern void _ZN7S1531C43v67Ev();
extern void _ZN7S1531C43v68Ev();
extern void _ZN7S1531C43v69Ev();
extern void _ZN7S1531C33v70Ev();
extern void _ZN7S1531C33v71Ev();
extern void _ZN7S1531C23v72Ev();
extern void _ZN7S1531C23v73Ev();
extern void _ZN7S1531C23v74Ev();
extern void _ZN7S1531C23v75Ev();
extern void _ZN7S1531C23v76Ev();
extern void _ZN7S1531C23v77Ev();
extern void _ZN7S1531C23v78Ev();
static  VTBL_ENTRY vtc_S1531C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1531C2[0]),
  (VTBL_ENTRY)&_ZN7S1531C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1531C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1531C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1531C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v72Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v73Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v74Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v78Ev,
};
extern VTBL_ENTRY _ZTI7S1531C2[];
extern  VTBL_ENTRY _ZTV7S1531C2[];
Class_Descriptor cd_S1531C2 = {  "S1531C2", // class name
  bases_S1531C2, 2,
  &(vtc_S1531C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI7S1531C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1531C2),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  S1531C1  : S1531C2 {
  virtual  ~S1531C1(); // _ZN7S1531C1D1Ev
  virtual void  v1(); // _ZN7S1531C12v1Ev
  virtual void  v2(); // _ZN7S1531C12v2Ev
  virtual void  v3(); // _ZN7S1531C12v3Ev
  virtual void  v4(); // _ZN7S1531C12v4Ev
  virtual void  v5(); // _ZN7S1531C12v5Ev
  S1531C1(); // tgen
};
//SIG(1 S1531C1) 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} vd v72 v73 v74 v75 v76 v77 v78 FC6{ m Fp FC5} FC6 FC6 FC6} vd v1 v2 v3 v4 v5}


 S1531C1 ::~S1531C1(){ note_dtor("S1531C1", this);}
void  S1531C1 ::v1(){vfunc_called(this, "_ZN7S1531C12v1Ev");}
void  S1531C1 ::v2(){vfunc_called(this, "_ZN7S1531C12v2Ev");}
void  S1531C1 ::v3(){vfunc_called(this, "_ZN7S1531C12v3Ev");}
void  S1531C1 ::v4(){vfunc_called(this, "_ZN7S1531C12v4Ev");}
void  S1531C1 ::v5(){vfunc_called(this, "_ZN7S1531C12v5Ev");}
S1531C1 ::S1531C1(){ note_ctor("S1531C1", this);} // tgen

static void Test_S1531C1()
{
  extern Class_Descriptor cd_S1531C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,28)];
    init_test(&cd_S1531C1, buf);
    S1531C1 *dp, &lv = *(dp=new (buf) S1531C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,108), "sizeof(S1531C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1531C1)");
    check_base_class_offset(lv, (S1531C4*)(S1531C3*)(S1531C2*), 0, "S1531C1");
    check_base_class_offset(lv, (S1531C3*)(S1531C2*), 0, "S1531C1");
    check_base_class_offset(lv, (S1531C2*), 0, "S1531C1");
    test_class_info(&lv, &cd_S1531C1);
    dp->~S1531C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1531C1(Test_S1531C1, "S1531C1", ABISELECT(160,108));

#else // __cplusplus

extern void _ZN7S1531C1C1Ev();
extern void _ZN7S1531C1D1Ev();
Name_Map name_map_S1531C1[] = {
  NSPAIR(_ZN7S1531C1C1Ev),
  NSPAIR(_ZN7S1531C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1531C4;
extern VTBL_ENTRY _ZTI7S1531C4[];
extern  VTBL_ENTRY _ZTV7S1531C4[];
extern Class_Descriptor cd_S1531C3;
extern VTBL_ENTRY _ZTI7S1531C3[];
extern  VTBL_ENTRY _ZTV7S1531C3[];
extern Class_Descriptor cd_S1531C2;
extern VTBL_ENTRY _ZTI7S1531C2[];
extern  VTBL_ENTRY _ZTV7S1531C2[];
static Base_Class bases_S1531C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1531C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1531C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1531C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1531C1[];
extern void _ZN7S1531C1D1Ev();
extern void _ZN7S1531C1D0Ev();
extern void _ZN7S1531C42v6Ev();
extern void _ZN7S1531C42v7Ev();
extern void _ZN7S1531C42v8Ev();
extern void _ZN7S1531C42v9Ev();
extern void _ZN7S1531C43v10Ev();
extern void _ZN7S1531C43v11Ev();
extern void _ZN7S1531C43v12Ev();
extern void _ZN7S1531C43v13Ev();
extern void _ZN7S1531C43v14Ev();
extern void _ZN7S1531C43v15Ev();
extern void _ZN7S1531C43v16Ev();
extern void _ZN7S1531C43v17Ev();
extern void _ZN7S1531C43v18Ev();
extern void _ZN7S1531C43v19Ev();
extern void _ZN7S1531C43v20Ev();
extern void _ZN7S1531C43v21Ev();
extern void _ZN7S1531C43v22Ev();
extern void _ZN7S1531C43v23Ev();
extern void _ZN7S1531C43v24Ev();
extern void _ZN7S1531C43v25Ev();
extern void _ZN7S1531C43v26Ev();
extern void _ZN7S1531C43v27Ev();
extern void _ZN7S1531C43v28Ev();
extern void _ZN7S1531C43v29Ev();
extern void _ZN7S1531C43v30Ev();
extern void _ZN7S1531C43v31Ev();
extern void _ZN7S1531C43v32Ev();
extern void _ZN7S1531C43v33Ev();
extern void _ZN7S1531C43v34Ev();
extern void _ZN7S1531C43v35Ev();
extern void _ZN7S1531C43v36Ev();
extern void _ZN7S1531C43v37Ev();
extern void _ZN7S1531C43v38Ev();
extern void _ZN7S1531C43v39Ev();
extern void _ZN7S1531C43v40Ev();
extern void _ZN7S1531C43v41Ev();
extern void _ZN7S1531C43v42Ev();
extern void _ZN7S1531C43v43Ev();
extern void _ZN7S1531C43v44Ev();
extern void _ZN7S1531C43v45Ev();
extern void _ZN7S1531C43v46Ev();
extern void _ZN7S1531C43v47Ev();
extern void _ZN7S1531C43v48Ev();
extern void _ZN7S1531C43v49Ev();
extern void _ZN7S1531C43v50Ev();
extern void _ZN7S1531C43v51Ev();
extern void _ZN7S1531C43v52Ev();
extern void _ZN7S1531C43v53Ev();
extern void _ZN7S1531C43v54Ev();
extern void _ZN7S1531C43v55Ev();
extern void _ZN7S1531C43v56Ev();
extern void _ZN7S1531C43v57Ev();
extern void _ZN7S1531C43v58Ev();
extern void _ZN7S1531C43v59Ev();
extern void _ZN7S1531C43v60Ev();
extern void _ZN7S1531C43v61Ev();
extern void _ZN7S1531C43v62Ev();
extern void _ZN7S1531C43v63Ev();
extern void _ZN7S1531C43v64Ev();
extern void _ZN7S1531C43v65Ev();
extern void _ZN7S1531C43v66Ev();
extern void _ZN7S1531C43v67Ev();
extern void _ZN7S1531C43v68Ev();
extern void _ZN7S1531C43v69Ev();
extern void _ZN7S1531C33v70Ev();
extern void _ZN7S1531C33v71Ev();
extern void _ZN7S1531C23v72Ev();
extern void _ZN7S1531C23v73Ev();
extern void _ZN7S1531C23v74Ev();
extern void _ZN7S1531C23v75Ev();
extern void _ZN7S1531C23v76Ev();
extern void _ZN7S1531C23v77Ev();
extern void _ZN7S1531C23v78Ev();
extern void _ZN7S1531C12v1Ev();
extern void _ZN7S1531C12v2Ev();
extern void _ZN7S1531C12v3Ev();
extern void _ZN7S1531C12v4Ev();
extern void _ZN7S1531C12v5Ev();
static  VTBL_ENTRY vtc_S1531C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1531C1[0]),
  (VTBL_ENTRY)&_ZN7S1531C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1531C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v6Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v7Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v8Ev,
  (VTBL_ENTRY)&_ZN7S1531C42v9Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v10Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v11Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v12Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v13Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v14Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v15Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v16Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v17Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v18Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v19Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v20Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v21Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v22Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v23Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v24Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v25Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v26Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v27Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v28Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v29Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v30Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v31Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v32Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v33Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v34Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v35Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v36Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v37Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v38Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v39Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v40Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v41Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v42Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v43Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v44Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v45Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v46Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v47Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v48Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v49Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v50Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v51Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v52Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v53Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v54Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v55Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v56Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v57Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v58Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v59Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v60Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v61Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v62Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v63Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v64Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v65Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v66Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v67Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v68Ev,
  (VTBL_ENTRY)&_ZN7S1531C43v69Ev,
  (VTBL_ENTRY)&_ZN7S1531C33v70Ev,
  (VTBL_ENTRY)&_ZN7S1531C33v71Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v72Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v73Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v74Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v75Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v76Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v77Ev,
  (VTBL_ENTRY)&_ZN7S1531C23v78Ev,
  (VTBL_ENTRY)&_ZN7S1531C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1531C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1531C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1531C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1531C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S1531C1[];
extern  VTBL_ENTRY _ZTV7S1531C1[];
Class_Descriptor cd_S1531C1 = {  "S1531C1", // class name
  bases_S1531C1, 3,
  &(vtc_S1531C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,108), // object size
  NSPAIRA(_ZTI7S1531C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1531C1),82, //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  S5168C3  {
  ::S9141C28_nt s5168c3f0;
  ::S9141C26 s5168c3f1;
  int s5168c3f2;
  ::S9141C8_nt s5168c3f3;
  ::S3444C17_nt s5168c3f4;
  ::S3214C23 s5168c3f5;
  ::S3214C23 s5168c3f6;
  ::S3214C23 s5168c3f7;
  ::S3214C23 s5168c3f8;
  ::S3214C18 s5168c3f9;
  int s5168c3f10[6];
  virtual  ~S5168C3(); // _ZN7S5168C3D1Ev
  virtual void  v4(); // _ZN7S5168C32v4Ev
  virtual void  v5(); // _ZN7S5168C32v5Ev
  virtual void  v6(); // _ZN7S5168C32v6Ev
  virtual void  v7(); // _ZN7S5168C32v7Ev
  virtual void  v8(); // _ZN7S5168C32v8Ev
  virtual void  v9(); // _ZN7S5168C32v9Ev
  virtual void  v10(); // _ZN7S5168C33v10Ev
  virtual void  v11(); // _ZN7S5168C33v11Ev
  virtual void  v12(); // _ZN7S5168C33v12Ev
  virtual void  v13(); // _ZN7S5168C33v13Ev
  virtual void  v14(); // _ZN7S5168C33v14Ev
  virtual void  v15(); // _ZN7S5168C33v15Ev
  virtual void  v16(); // _ZN7S5168C33v16Ev
  virtual void  v17(); // _ZN7S5168C33v17Ev
  virtual void  v18(); // _ZN7S5168C33v18Ev
  virtual void  v19(); // _ZN7S5168C33v19Ev
  virtual void  v20(); // _ZN7S5168C33v20Ev
  virtual void  v21(); // _ZN7S5168C33v21Ev
  virtual void  v22(); // _ZN7S5168C33v22Ev
  virtual void  v23(); // _ZN7S5168C33v23Ev
  virtual void  v24(); // _ZN7S5168C33v24Ev
  virtual void  v25(); // _ZN7S5168C33v25Ev
  virtual void  v26(); // _ZN7S5168C33v26Ev
  virtual void  v27(); // _ZN7S5168C33v27Ev
  virtual void  v28(); // _ZN7S5168C33v28Ev
  virtual void  v29(); // _ZN7S5168C33v29Ev
  virtual void  v30(); // _ZN7S5168C33v30Ev
  virtual void  v31(); // _ZN7S5168C33v31Ev
  virtual void  v32(); // _ZN7S5168C33v32Ev
  virtual void  v33(); // _ZN7S5168C33v33Ev
  virtual void  v34(); // _ZN7S5168C33v34Ev
  virtual void  v35(); // _ZN7S5168C33v35Ev
  S5168C3(); // tgen
};
//SIG(-1 S5168C3) 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 FC2{ BC3{ m Fp Fi[2]}} FC4{ BC5{ m FC2 Fp Fi}} Fi FC6{ m Fp} FC7{ m Fi[4]} FC8{ BC3} FC8 FC8 FC8 FC9{ BC3} Fi[6]}


 S5168C3 ::~S5168C3(){ note_dtor("S5168C3", this);}
void  S5168C3 ::v4(){vfunc_called(this, "_ZN7S5168C32v4Ev");}
void  S5168C3 ::v5(){vfunc_called(this, "_ZN7S5168C32v5Ev");}
void  S5168C3 ::v6(){vfunc_called(this, "_ZN7S5168C32v6Ev");}
void  S5168C3 ::v7(){vfunc_called(this, "_ZN7S5168C32v7Ev");}
void  S5168C3 ::v8(){vfunc_called(this, "_ZN7S5168C32v8Ev");}
void  S5168C3 ::v9(){vfunc_called(this, "_ZN7S5168C32v9Ev");}
void  S5168C3 ::v10(){vfunc_called(this, "_ZN7S5168C33v10Ev");}
void  S5168C3 ::v11(){vfunc_called(this, "_ZN7S5168C33v11Ev");}
void  S5168C3 ::v12(){vfunc_called(this, "_ZN7S5168C33v12Ev");}
void  S5168C3 ::v13(){vfunc_called(this, "_ZN7S5168C33v13Ev");}
void  S5168C3 ::v14(){vfunc_called(this, "_ZN7S5168C33v14Ev");}
void  S5168C3 ::v15(){vfunc_called(this, "_ZN7S5168C33v15Ev");}
void  S5168C3 ::v16(){vfunc_called(this, "_ZN7S5168C33v16Ev");}
void  S5168C3 ::v17(){vfunc_called(this, "_ZN7S5168C33v17Ev");}
void  S5168C3 ::v18(){vfunc_called(this, "_ZN7S5168C33v18Ev");}
void  S5168C3 ::v19(){vfunc_called(this, "_ZN7S5168C33v19Ev");}
void  S5168C3 ::v20(){vfunc_called(this, "_ZN7S5168C33v20Ev");}
void  S5168C3 ::v21(){vfunc_called(this, "_ZN7S5168C33v21Ev");}
void  S5168C3 ::v22(){vfunc_called(this, "_ZN7S5168C33v22Ev");}
void  S5168C3 ::v23(){vfunc_called(this, "_ZN7S5168C33v23Ev");}
void  S5168C3 ::v24(){vfunc_called(this, "_ZN7S5168C33v24Ev");}
void  S5168C3 ::v25(){vfunc_called(this, "_ZN7S5168C33v25Ev");}
void  S5168C3 ::v26(){vfunc_called(this, "_ZN7S5168C33v26Ev");}
void  S5168C3 ::v27(){vfunc_called(this, "_ZN7S5168C33v27Ev");}
void  S5168C3 ::v28(){vfunc_called(this, "_ZN7S5168C33v28Ev");}
void  S5168C3 ::v29(){vfunc_called(this, "_ZN7S5168C33v29Ev");}
void  S5168C3 ::v30(){vfunc_called(this, "_ZN7S5168C33v30Ev");}
void  S5168C3 ::v31(){vfunc_called(this, "_ZN7S5168C33v31Ev");}
void  S5168C3 ::v32(){vfunc_called(this, "_ZN7S5168C33v32Ev");}
void  S5168C3 ::v33(){vfunc_called(this, "_ZN7S5168C33v33Ev");}
void  S5168C3 ::v34(){vfunc_called(this, "_ZN7S5168C33v34Ev");}
void  S5168C3 ::v35(){vfunc_called(this, "_ZN7S5168C33v35Ev");}
S5168C3 ::S5168C3(){ note_ctor("S5168C3", this);} // tgen

static void Test_S5168C3()
{
  extern Class_Descriptor cd_S5168C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,37)];
    init_test(&cd_S5168C3, buf);
    S5168C3 *dp, &lv = *(dp=new (buf) S5168C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,144), "sizeof(S5168C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5168C3)");
    check_field_offset(lv, s5168c3f0, ABISELECT(8,4), "S5168C3.s5168c3f0");
    check_field_offset(lv, s5168c3f1, ABISELECT(24,16), "S5168C3.s5168c3f1");
    check_field_offset(lv, s5168c3f2, ABISELECT(56,36), "S5168C3.s5168c3f2");
    check_field_offset(lv, s5168c3f3, ABISELECT(64,40), "S5168C3.s5168c3f3");
    check_field_offset(lv, s5168c3f4, ABISELECT(72,44), "S5168C3.s5168c3f4");
    check_field_offset(lv, s5168c3f5, ABISELECT(88,60), "S5168C3.s5168c3f5");
    check_field_offset(lv, s5168c3f6, ABISELECT(104,72), "S5168C3.s5168c3f6");
    check_field_offset(lv, s5168c3f7, ABISELECT(120,84), "S5168C3.s5168c3f7");
    check_field_offset(lv, s5168c3f8, ABISELECT(136,96), "S5168C3.s5168c3f8");
    check_field_offset(lv, s5168c3f9, ABISELECT(152,108), "S5168C3.s5168c3f9");
    check_field_offset(lv, s5168c3f10, ABISELECT(168,120), "S5168C3.s5168c3f10");
    test_class_info(&lv, &cd_S5168C3);
    dp->~S5168C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5168C3(Test_S5168C3, "S5168C3", ABISELECT(192,144));

#else // __cplusplus

extern void _ZN7S5168C3C1Ev();
extern void _ZN7S5168C3D1Ev();
Name_Map name_map_S5168C3[] = {
  NSPAIR(_ZN7S5168C3C1Ev),
  NSPAIR(_ZN7S5168C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5168C3[];
extern void _ZN7S5168C3D1Ev();
extern void _ZN7S5168C3D0Ev();
extern void _ZN7S5168C32v4Ev();
extern void _ZN7S5168C32v5Ev();
extern void _ZN7S5168C32v6Ev();
extern void _ZN7S5168C32v7Ev();
extern void _ZN7S5168C32v8Ev();
extern void _ZN7S5168C32v9Ev();
extern void _ZN7S5168C33v10Ev();
extern void _ZN7S5168C33v11Ev();
extern void _ZN7S5168C33v12Ev();
extern void _ZN7S5168C33v13Ev();
extern void _ZN7S5168C33v14Ev();
extern void _ZN7S5168C33v15Ev();
extern void _ZN7S5168C33v16Ev();
extern void _ZN7S5168C33v17Ev();
extern void _ZN7S5168C33v18Ev();
extern void _ZN7S5168C33v19Ev();
extern void _ZN7S5168C33v20Ev();
extern void _ZN7S5168C33v21Ev();
extern void _ZN7S5168C33v22Ev();
extern void _ZN7S5168C33v23Ev();
extern void _ZN7S5168C33v24Ev();
extern void _ZN7S5168C33v25Ev();
extern void _ZN7S5168C33v26Ev();
extern void _ZN7S5168C33v27Ev();
extern void _ZN7S5168C33v28Ev();
extern void _ZN7S5168C33v29Ev();
extern void _ZN7S5168C33v30Ev();
extern void _ZN7S5168C33v31Ev();
extern void _ZN7S5168C33v32Ev();
extern void _ZN7S5168C33v33Ev();
extern void _ZN7S5168C33v34Ev();
extern void _ZN7S5168C33v35Ev();
static  VTBL_ENTRY vtc_S5168C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5168C3[0]),
  (VTBL_ENTRY)&_ZN7S5168C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5168C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v24Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v25Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v26Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v27Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v28Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v29Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v30Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v31Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v32Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v33Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v34Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v35Ev,
};
extern VTBL_ENTRY _ZTI7S5168C3[];
extern  VTBL_ENTRY _ZTV7S5168C3[];
Class_Descriptor cd_S5168C3 = {  "S5168C3", // class name
  0,0,//no base classes
  &(vtc_S5168C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,144), // object size
  NSPAIRA(_ZTI7S5168C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5168C3),36, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5168C2  : S5168C3 {
  ::S3214C8_nt s5168c2f0;
  void *s5168c2f1;
  virtual  ~S5168C2(); // _ZN7S5168C2D1Ev
  virtual void  v36(); // _ZN7S5168C23v36Ev
  virtual void  v37(); // _ZN7S5168C23v37Ev
  virtual void  v38(); // _ZN7S5168C23v38Ev
  virtual void  v39(); // _ZN7S5168C23v39Ev
  virtual void  v40(); // _ZN7S5168C23v40Ev
  virtual void  v41(); // _ZN7S5168C23v41Ev
  virtual void  v42(); // _ZN7S5168C23v42Ev
  virtual void  v43(); // _ZN7S5168C23v43Ev
  virtual void  v44(); // _ZN7S5168C23v44Ev
  virtual void  v45(); // _ZN7S5168C23v45Ev
  virtual void  v46(); // _ZN7S5168C23v46Ev
  virtual void  v47(); // _ZN7S5168C23v47Ev
  virtual void  v48(); // _ZN7S5168C23v48Ev
  virtual void  v49(); // _ZN7S5168C23v49Ev
  virtual void  v50(); // _ZN7S5168C23v50Ev
  virtual void  v51(); // _ZN7S5168C23v51Ev
  virtual void  v52(); // _ZN7S5168C23v52Ev
  virtual void  v53(); // _ZN7S5168C23v53Ev
  virtual void  v54(); // _ZN7S5168C23v54Ev
  virtual void  v55(); // _ZN7S5168C23v55Ev
  virtual void  v56(); // _ZN7S5168C23v56Ev
  virtual void  v57(); // _ZN7S5168C23v57Ev
  virtual void  v58(); // _ZN7S5168C23v58Ev
  virtual void  v59(); // _ZN7S5168C23v59Ev
  virtual void  v60(); // _ZN7S5168C23v60Ev
  virtual void  v61(); // _ZN7S5168C23v61Ev
  virtual void  v62(); // _ZN7S5168C23v62Ev
  virtual void  v63(); // _ZN7S5168C23v63Ev
  S5168C2(); // tgen
};
//SIG(-1 S5168C2) C1{ BC2{ vd 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 FC3{ BC4{ m Fp Fi[2]}} FC5{ BC6{ m FC3 Fp Fi}} Fi FC7{ m Fp} FC8{ m Fi[4]} FC9{ BC4} FC9 FC9 FC9 FC10{ BC4} Fi[6]} 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 FC11{ m Fi} Fp}


 S5168C2 ::~S5168C2(){ note_dtor("S5168C2", this);}
void  S5168C2 ::v36(){vfunc_called(this, "_ZN7S5168C23v36Ev");}
void  S5168C2 ::v37(){vfunc_called(this, "_ZN7S5168C23v37Ev");}
void  S5168C2 ::v38(){vfunc_called(this, "_ZN7S5168C23v38Ev");}
void  S5168C2 ::v39(){vfunc_called(this, "_ZN7S5168C23v39Ev");}
void  S5168C2 ::v40(){vfunc_called(this, "_ZN7S5168C23v40Ev");}
void  S5168C2 ::v41(){vfunc_called(this, "_ZN7S5168C23v41Ev");}
void  S5168C2 ::v42(){vfunc_called(this, "_ZN7S5168C23v42Ev");}
void  S5168C2 ::v43(){vfunc_called(this, "_ZN7S5168C23v43Ev");}
void  S5168C2 ::v44(){vfunc_called(this, "_ZN7S5168C23v44Ev");}
void  S5168C2 ::v45(){vfunc_called(this, "_ZN7S5168C23v45Ev");}
void  S5168C2 ::v46(){vfunc_called(this, "_ZN7S5168C23v46Ev");}
void  S5168C2 ::v47(){vfunc_called(this, "_ZN7S5168C23v47Ev");}
void  S5168C2 ::v48(){vfunc_called(this, "_ZN7S5168C23v48Ev");}
void  S5168C2 ::v49(){vfunc_called(this, "_ZN7S5168C23v49Ev");}
void  S5168C2 ::v50(){vfunc_called(this, "_ZN7S5168C23v50Ev");}
void  S5168C2 ::v51(){vfunc_called(this, "_ZN7S5168C23v51Ev");}
void  S5168C2 ::v52(){vfunc_called(this, "_ZN7S5168C23v52Ev");}
void  S5168C2 ::v53(){vfunc_called(this, "_ZN7S5168C23v53Ev");}
void  S5168C2 ::v54(){vfunc_called(this, "_ZN7S5168C23v54Ev");}
void  S5168C2 ::v55(){vfunc_called(this, "_ZN7S5168C23v55Ev");}
void  S5168C2 ::v56(){vfunc_called(this, "_ZN7S5168C23v56Ev");}
void  S5168C2 ::v57(){vfunc_called(this, "_ZN7S5168C23v57Ev");}
void  S5168C2 ::v58(){vfunc_called(this, "_ZN7S5168C23v58Ev");}
void  S5168C2 ::v59(){vfunc_called(this, "_ZN7S5168C23v59Ev");}
void  S5168C2 ::v60(){vfunc_called(this, "_ZN7S5168C23v60Ev");}
void  S5168C2 ::v61(){vfunc_called(this, "_ZN7S5168C23v61Ev");}
void  S5168C2 ::v62(){vfunc_called(this, "_ZN7S5168C23v62Ev");}
void  S5168C2 ::v63(){vfunc_called(this, "_ZN7S5168C23v63Ev");}
S5168C2 ::S5168C2(){ note_ctor("S5168C2", this);} // tgen

static void Test_S5168C2()
{
  extern Class_Descriptor cd_S5168C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,39)];
    init_test(&cd_S5168C2, buf);
    S5168C2 *dp, &lv = *(dp=new (buf) S5168C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,152), "sizeof(S5168C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5168C2)");
    check_base_class_offset(lv, (S5168C3*), 0, "S5168C2");
    check_field_offset(lv, s5168c2f0, ABISELECT(192,144), "S5168C2.s5168c2f0");
    check_field_offset(lv, s5168c2f1, ABISELECT(200,148), "S5168C2.s5168c2f1");
    test_class_info(&lv, &cd_S5168C2);
    dp->~S5168C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5168C2(Test_S5168C2, "S5168C2", ABISELECT(208,152));

#else // __cplusplus

extern void _ZN7S5168C2C1Ev();
extern void _ZN7S5168C2D1Ev();
Name_Map name_map_S5168C2[] = {
  NSPAIR(_ZN7S5168C2C1Ev),
  NSPAIR(_ZN7S5168C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5168C3;
extern VTBL_ENTRY _ZTI7S5168C3[];
extern  VTBL_ENTRY _ZTV7S5168C3[];
static Base_Class bases_S5168C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5168C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5168C2[];
extern void _ZN7S5168C2D1Ev();
extern void _ZN7S5168C2D0Ev();
extern void _ZN7S5168C32v4Ev();
extern void _ZN7S5168C32v5Ev();
extern void _ZN7S5168C32v6Ev();
extern void _ZN7S5168C32v7Ev();
extern void _ZN7S5168C32v8Ev();
extern void _ZN7S5168C32v9Ev();
extern void _ZN7S5168C33v10Ev();
extern void _ZN7S5168C33v11Ev();
extern void _ZN7S5168C33v12Ev();
extern void _ZN7S5168C33v13Ev();
extern void _ZN7S5168C33v14Ev();
extern void _ZN7S5168C33v15Ev();
extern void _ZN7S5168C33v16Ev();
extern void _ZN7S5168C33v17Ev();
extern void _ZN7S5168C33v18Ev();
extern void _ZN7S5168C33v19Ev();
extern void _ZN7S5168C33v20Ev();
extern void _ZN7S5168C33v21Ev();
extern void _ZN7S5168C33v22Ev();
extern void _ZN7S5168C33v23Ev();
extern void _ZN7S5168C33v24Ev();
extern void _ZN7S5168C33v25Ev();
extern void _ZN7S5168C33v26Ev();
extern void _ZN7S5168C33v27Ev();
extern void _ZN7S5168C33v28Ev();
extern void _ZN7S5168C33v29Ev();
extern void _ZN7S5168C33v30Ev();
extern void _ZN7S5168C33v31Ev();
extern void _ZN7S5168C33v32Ev();
extern void _ZN7S5168C33v33Ev();
extern void _ZN7S5168C33v34Ev();
extern void _ZN7S5168C33v35Ev();
extern void _ZN7S5168C23v36Ev();
extern void _ZN7S5168C23v37Ev();
extern void _ZN7S5168C23v38Ev();
extern void _ZN7S5168C23v39Ev();
extern void _ZN7S5168C23v40Ev();
extern void _ZN7S5168C23v41Ev();
extern void _ZN7S5168C23v42Ev();
extern void _ZN7S5168C23v43Ev();
extern void _ZN7S5168C23v44Ev();
extern void _ZN7S5168C23v45Ev();
extern void _ZN7S5168C23v46Ev();
extern void _ZN7S5168C23v47Ev();
extern void _ZN7S5168C23v48Ev();
extern void _ZN7S5168C23v49Ev();
extern void _ZN7S5168C23v50Ev();
extern void _ZN7S5168C23v51Ev();
extern void _ZN7S5168C23v52Ev();
extern void _ZN7S5168C23v53Ev();
extern void _ZN7S5168C23v54Ev();
extern void _ZN7S5168C23v55Ev();
extern void _ZN7S5168C23v56Ev();
extern void _ZN7S5168C23v57Ev();
extern void _ZN7S5168C23v58Ev();
extern void _ZN7S5168C23v59Ev();
extern void _ZN7S5168C23v60Ev();
extern void _ZN7S5168C23v61Ev();
extern void _ZN7S5168C23v62Ev();
extern void _ZN7S5168C23v63Ev();
static  VTBL_ENTRY vtc_S5168C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5168C2[0]),
  (VTBL_ENTRY)&_ZN7S5168C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5168C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v24Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v25Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v26Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v27Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v28Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v29Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v30Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v31Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v32Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v33Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v34Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v35Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v36Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v37Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v38Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v39Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v40Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v41Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v42Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v43Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v44Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v45Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v46Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v47Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v48Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v49Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v50Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v51Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v52Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v53Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v54Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v55Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v56Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v57Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v58Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v59Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v60Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v61Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v62Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v63Ev,
};
extern VTBL_ENTRY _ZTI7S5168C2[];
extern  VTBL_ENTRY _ZTV7S5168C2[];
Class_Descriptor cd_S5168C2 = {  "S5168C2", // class name
  bases_S5168C2, 1,
  &(vtc_S5168C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,152), // object size
  NSPAIRA(_ZTI7S5168C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5168C2),64, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5168C1  : S5168C2 {
  virtual void  v1(); // _ZN7S5168C12v1Ev
  virtual void  v2(); // _ZN7S5168C12v2Ev
  virtual void  v3(); // _ZN7S5168C12v3Ev
  ~S5168C1(); // tgen
  S5168C1(); // tgen
};
//SIG(1 S5168C1) 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 FC4{ BC5{ m Fp Fi[2]}} FC6{ BC7{ m FC4 Fp Fi}} Fi FC8{ m Fp} FC9{ m Fi[4]} FC10{ BC5} FC10 FC10 FC10 FC11{ BC5} Fi[6]} vd 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 FC12{ m Fi} Fp} v1 v2 v3}


void  S5168C1 ::v1(){vfunc_called(this, "_ZN7S5168C12v1Ev");}
void  S5168C1 ::v2(){vfunc_called(this, "_ZN7S5168C12v2Ev");}
void  S5168C1 ::v3(){vfunc_called(this, "_ZN7S5168C12v3Ev");}
S5168C1 ::~S5168C1(){ note_dtor("S5168C1", this);} // tgen
S5168C1 ::S5168C1(){ note_ctor("S5168C1", this);} // tgen

static void Test_S5168C1()
{
  extern Class_Descriptor cd_S5168C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,39)];
    init_test(&cd_S5168C1, buf);
    S5168C1 *dp, &lv = *(dp=new (buf) S5168C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,152), "sizeof(S5168C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5168C1)");
    check_base_class_offset(lv, (S5168C3*)(S5168C2*), 0, "S5168C1");
    check_base_class_offset(lv, (S5168C2*), 0, "S5168C1");
    test_class_info(&lv, &cd_S5168C1);
    dp->~S5168C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5168C1(Test_S5168C1, "S5168C1", ABISELECT(208,152));

#else // __cplusplus

extern void _ZN7S5168C1C1Ev();
extern void _ZN7S5168C1D1Ev();
Name_Map name_map_S5168C1[] = {
  NSPAIR(_ZN7S5168C1C1Ev),
  NSPAIR(_ZN7S5168C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5168C3;
extern VTBL_ENTRY _ZTI7S5168C3[];
extern  VTBL_ENTRY _ZTV7S5168C3[];
extern Class_Descriptor cd_S5168C2;
extern VTBL_ENTRY _ZTI7S5168C2[];
extern  VTBL_ENTRY _ZTV7S5168C2[];
static Base_Class bases_S5168C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5168C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5168C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5168C1[];
extern void _ZN7S5168C1D1Ev();
extern void _ZN7S5168C1D0Ev();
extern void _ZN7S5168C32v4Ev();
extern void _ZN7S5168C32v5Ev();
extern void _ZN7S5168C32v6Ev();
extern void _ZN7S5168C32v7Ev();
extern void _ZN7S5168C32v8Ev();
extern void _ZN7S5168C32v9Ev();
extern void _ZN7S5168C33v10Ev();
extern void _ZN7S5168C33v11Ev();
extern void _ZN7S5168C33v12Ev();
extern void _ZN7S5168C33v13Ev();
extern void _ZN7S5168C33v14Ev();
extern void _ZN7S5168C33v15Ev();
extern void _ZN7S5168C33v16Ev();
extern void _ZN7S5168C33v17Ev();
extern void _ZN7S5168C33v18Ev();
extern void _ZN7S5168C33v19Ev();
extern void _ZN7S5168C33v20Ev();
extern void _ZN7S5168C33v21Ev();
extern void _ZN7S5168C33v22Ev();
extern void _ZN7S5168C33v23Ev();
extern void _ZN7S5168C33v24Ev();
extern void _ZN7S5168C33v25Ev();
extern void _ZN7S5168C33v26Ev();
extern void _ZN7S5168C33v27Ev();
extern void _ZN7S5168C33v28Ev();
extern void _ZN7S5168C33v29Ev();
extern void _ZN7S5168C33v30Ev();
extern void _ZN7S5168C33v31Ev();
extern void _ZN7S5168C33v32Ev();
extern void _ZN7S5168C33v33Ev();
extern void _ZN7S5168C33v34Ev();
extern void _ZN7S5168C33v35Ev();
extern void _ZN7S5168C23v36Ev();
extern void _ZN7S5168C23v37Ev();
extern void _ZN7S5168C23v38Ev();
extern void _ZN7S5168C23v39Ev();
extern void _ZN7S5168C23v40Ev();
extern void _ZN7S5168C23v41Ev();
extern void _ZN7S5168C23v42Ev();
extern void _ZN7S5168C23v43Ev();
extern void _ZN7S5168C23v44Ev();
extern void _ZN7S5168C23v45Ev();
extern void _ZN7S5168C23v46Ev();
extern void _ZN7S5168C23v47Ev();
extern void _ZN7S5168C23v48Ev();
extern void _ZN7S5168C23v49Ev();
extern void _ZN7S5168C23v50Ev();
extern void _ZN7S5168C23v51Ev();
extern void _ZN7S5168C23v52Ev();
extern void _ZN7S5168C23v53Ev();
extern void _ZN7S5168C23v54Ev();
extern void _ZN7S5168C23v55Ev();
extern void _ZN7S5168C23v56Ev();
extern void _ZN7S5168C23v57Ev();
extern void _ZN7S5168C23v58Ev();
extern void _ZN7S5168C23v59Ev();
extern void _ZN7S5168C23v60Ev();
extern void _ZN7S5168C23v61Ev();
extern void _ZN7S5168C23v62Ev();
extern void _ZN7S5168C23v63Ev();
extern void _ZN7S5168C12v1Ev();
extern void _ZN7S5168C12v2Ev();
extern void _ZN7S5168C12v3Ev();
static  VTBL_ENTRY vtc_S5168C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5168C1[0]),
  (VTBL_ENTRY)&_ZN7S5168C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5168C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5168C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v24Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v25Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v26Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v27Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v28Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v29Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v30Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v31Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v32Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v33Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v34Ev,
  (VTBL_ENTRY)&_ZN7S5168C33v35Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v36Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v37Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v38Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v39Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v40Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v41Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v42Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v43Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v44Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v45Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v46Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v47Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v48Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v49Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v50Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v51Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v52Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v53Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v54Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v55Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v56Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v57Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v58Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v59Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v60Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v61Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v62Ev,
  (VTBL_ENTRY)&_ZN7S5168C23v63Ev,
  (VTBL_ENTRY)&_ZN7S5168C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5168C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5168C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S5168C1[];
extern  VTBL_ENTRY _ZTV7S5168C1[];
Class_Descriptor cd_S5168C1 = {  "S5168C1", // class name
  bases_S5168C1, 2,
  &(vtc_S5168C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,152), // object size
  NSPAIRA(_ZTI7S5168C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5168C1),67, //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  S20748C6  {
  virtual void  v1(); // _ZN8S20748C62v1Ev
  ~S20748C6(); // tgen
  S20748C6(); // tgen
};
//SIG(-1 S20748C6) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20748C6C1Ev();
extern void _ZN8S20748C6D1Ev();
Name_Map name_map_S20748C6[] = {
  NSPAIR(_ZN8S20748C6C1Ev),
  NSPAIR(_ZN8S20748C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20748C6[];
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C6[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
Class_Descriptor cd_S20748C6 = {  "S20748C6", // class name
  0,0,//no base classes
  &(vtc_S20748C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20748C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20748C6),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  S20748C4  : virtual S20997C6 , virtual S20748C6 , S4227C37 {
  virtual  ~S20748C4(); // _ZN8S20748C4D2Ev
  S20748C4(); // tgen
};
//SIG(-1 S20748C4) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S20748C4()
{
  extern Class_Descriptor cd_S20748C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20748C4, buf);
    S20748C4 *dp, &lv = *(dp=new (buf) S20748C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20748C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C4)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20748C4");
    check_base_class_offset(lv, (S20748C6*), 0, "S20748C4");
    check_base_class_offset(lv, (S4227C37*), 0, "S20748C4");
    test_class_info(&lv, &cd_S20748C4);
    dp->~S20748C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C4(Test_S20748C4, "S20748C4", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S20748C4C1Ev();
extern void _ZN8S20748C4D2Ev();
Name_Map name_map_S20748C4[] = {
  NSPAIR(_ZN8S20748C4C1Ev),
  NSPAIR(_ZN8S20748C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S20748C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20748C6,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20748C4[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY vtc_S20748C4[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern VTBL_ENTRY _ZTV8S20748C4[];
static  VTT_ENTRY vtt_S20748C4[] = {
  {&(_ZTV8S20748C4[5]),  5,8},
  {&(_ZTV8S20748C4[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
Class_Descriptor cd_S20748C4 = {  "S20748C4", // class name
  bases_S20748C4, 3,
  &(vtc_S20748C4[0]), // expected_vtbl_contents
  &(vtt_S20748C4[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S20748C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20748C4),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20748C4),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  S20748C2  : virtual S4227C37 , virtual S20748C4 {
  virtual void  v2(); // _ZN8S20748C22v2Ev
  ~S20748C2(); // tgen
  S20748C2(); // tgen
};
//SIG(-1 S20748C2) C1{ VBC2{ m} VBC3{ VBC4{ m FL[5]} VBC5{ v2} BC2 vd} v1}


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

static void Test_S20748C2()
{
  extern Class_Descriptor cd_S20748C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20748C2, buf);
    S20748C2 *dp, &lv = *(dp=new (buf) S20748C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20748C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C2)");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), ABISELECT(8,4), "S20748C2");
    check_base_class_offset(lv, (S20997C6*)(S20748C4*), ABISELECT(8,4), "S20748C2");
    check_base_class_offset(lv, (S20748C6*)(S20748C4*), 0, "S20748C2");
    check_base_class_offset(lv, (S4227C37*)(S20748C4*), 0, "S20748C2");
    check_base_class_offset(lv, (S20748C4*), 0, "S20748C2");
    test_class_info(&lv, &cd_S20748C2);
    dp->~S20748C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C2(Test_S20748C2, "S20748C2", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S20748C2C1Ev();
extern void _ZN8S20748C2D1Ev();
Name_Map name_map_S20748C2[] = {
  NSPAIR(_ZN8S20748C2C1Ev),
  NSPAIR(_ZN8S20748C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
static Base_Class bases_S20748C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20748C6,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20748C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20748C2[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C2D1Ev();
extern void _ZN8S20748C2D0Ev();
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY vtc_S20748C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern VTBL_ENTRY _ZTV8S20748C2[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C4__8S20748C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
static  VTT_ENTRY vtt_S20748C2[] = {
  {&(_ZTV8S20748C2[8]),  8,12},
  {&(_ZTV8S20748C2[8]),  8,12},
  {&(_ZTV8S20748C2[8]),  8,12},
  {&(_tg__ZTV8S20748C4__8S20748C2[5]),  5,8},
  {&(_tg__ZTV8S20748C4__8S20748C2[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
Class_Descriptor cd_S20748C2 = {  "S20748C2", // class name
  bases_S20748C2, 5,
  &(vtc_S20748C2[0]), // expected_vtbl_contents
  &(vtt_S20748C2[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S20748C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20748C2),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20748C2),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C9  : S20748C6 , virtual S20997C6 , S4227C37 {
  void *s20748c9f0[10];
  ~S20748C9(); // tgen
  S20748C9(); // tgen
};
//SIG(-1 S20748C9) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S20748C9()
{
  extern Class_Descriptor cd_S20748C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S20748C9, buf);
    S20748C9 *dp, &lv = *(dp=new (buf) S20748C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S20748C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C9)");
    check_base_class_offset(lv, (S20748C6*), 0, "S20748C9");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S20748C9");
    check_base_class_offset(lv, (S4227C37*), 0, "S20748C9");
    check_field_offset(lv, s20748c9f0, ABISELECT(8,4), "S20748C9.s20748c9f0");
    test_class_info(&lv, &cd_S20748C9);
    dp->~S20748C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C9(Test_S20748C9, "S20748C9", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN8S20748C9C1Ev();
extern void _ZN8S20748C9D1Ev();
Name_Map name_map_S20748C9[] = {
  NSPAIR(_ZN8S20748C9C1Ev),
  NSPAIR(_ZN8S20748C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S20748C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20748C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20748C9[];
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C9[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S20748C9[];
static  VTT_ENTRY vtt_S20748C9[] = {
  {&(_ZTV8S20748C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
Class_Descriptor cd_S20748C9 = {  "S20748C9", // class name
  bases_S20748C9, 3,
  &(vtc_S20748C9[0]), // expected_vtbl_contents
  &(vtt_S20748C9[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI8S20748C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20748C9),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20748C9),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  S20748C8  : virtual S20748C9 {
  ~S20748C8(); // tgen
  S20748C8(); // tgen
};
//SIG(-1 S20748C8) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]}}


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

static void Test_S20748C8()
{
  extern Class_Descriptor cd_S20748C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S20748C8, buf);
    S20748C8 *dp, &lv = *(dp=new (buf) S20748C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S20748C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C8)");
    check_base_class_offset(lv, (S20748C6*)(S20748C9*), ABISELECT(8,4), "S20748C8");
    check_base_class_offset(lv, (S20997C6*)(S20748C9*), ABISELECT(96,48), "S20748C8");
    check_base_class_offset(lv, (S4227C37*)(S20748C9*), ABISELECT(8,4), "S20748C8");
    check_base_class_offset(lv, (S20748C9*), ABISELECT(8,4), "S20748C8");
    test_class_info(&lv, &cd_S20748C8);
    dp->~S20748C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C8(Test_S20748C8, "S20748C8", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN8S20748C8C1Ev();
extern void _ZN8S20748C8D1Ev();
Name_Map name_map_S20748C8[] = {
  NSPAIR(_ZN8S20748C8C1Ev),
  NSPAIR(_ZN8S20748C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
static Base_Class bases_S20748C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20748C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C9,    ABISELECT(8,4), //bcp->offset
    4, //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 _ZTI8S20748C8[];
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C8[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C8[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20748C8[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S20748C8[];
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__8S20748C8[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
static  VTT_ENTRY vtt_S20748C8[] = {
  {&(_ZTV8S20748C8[4]),  4,9},
  {&(_ZTV8S20748C8[8]),  8,9},
  {&(_tg__ZTV8S20748C9__8S20748C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20748C8[];
extern  VTBL_ENTRY _ZTV8S20748C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C8[];
Class_Descriptor cd_S20748C8 = {  "S20748C8", // class name
  bases_S20748C8, 4,
  &(vtc_S20748C8[0]), // expected_vtbl_contents
  &(vtt_S20748C8[0]), // expected_vtt_contents
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI8S20748C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20748C8),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20748C8),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C12  : virtual S20748C6 {
  ::S20748C9 s20748c12f0[9];
  ~S20748C12(); // tgen
  S20748C12(); // tgen
};
//SIG(-1 S20748C12) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S20748C12()
{
  extern Class_Descriptor cd_S20748C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S20748C12, buf);
    S20748C12 *dp, &lv = *(dp=new (buf) S20748C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S20748C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C12)");
    check_base_class_offset(lv, (S20748C6*), 0, "S20748C12");
    check_field_offset(lv, s20748c12f0, ABISELECT(8,4), "S20748C12.s20748c12f0");
    test_class_info(&lv, &cd_S20748C12);
    dp->~S20748C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C12(Test_S20748C12, "S20748C12", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN9S20748C12C1Ev();
extern void _ZN9S20748C12D1Ev();
Name_Map name_map_S20748C12[] = {
  NSPAIR(_ZN9S20748C12C1Ev),
  NSPAIR(_ZN9S20748C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
static Base_Class bases_S20748C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20748C6,    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 _ZTI9S20748C12[];
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20748C12[];
static  VTT_ENTRY vtt_S20748C12[] = {
  {&(_ZTV9S20748C12[4]),  4,5},
  {&(_ZTV9S20748C12[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
Class_Descriptor cd_S20748C12 = {  "S20748C12", // class name
  bases_S20748C12, 1,
  &(vtc_S20748C12[0]), // expected_vtbl_contents
  &(vtt_S20748C12[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI9S20748C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20748C12),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C12),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  S20748C11  : virtual S20748C6 , virtual S20748C4 , virtual S10258C6_nt , virtual S20748C2 , virtual S20748C12 {
  virtual  ~S20748C11(); // _ZN9S20748C11D2Ev
  S20748C11(); // tgen
};
//SIG(-1 S20748C11) C1{ VBC2{ v1} VBC3{ VBC4{ m FL[5]} VBC2 BC5{ m} vd} VBC6{ m FL[4]} VBC7{ VBC5 VBC3 v2} VBC8{ VBC2 FC9{ BC2 VBC4 BC5 Fp[10]}[9]} vd}


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

static void Test_S20748C11()
{
  extern Class_Descriptor cd_S20748C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(156,210)];
    init_test(&cd_S20748C11, buf);
    S20748C11 *dp, &lv = *(dp=new (buf) S20748C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1240,836), "sizeof(S20748C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C11)");
    check_base_class_offset(lv, (S20748C6*), 0, "S20748C11");
    check_base_class_offset(lv, (S20748C6*)(S20748C4*), 0, "S20748C11");
    check_base_class_offset(lv, (S20748C6*)(S20748C12*), 0, "S20748C11");
    check_base_class_offset(lv, (S20997C6*)(S20748C4*), ABISELECT(8,4), "S20748C11");
    check_base_class_offset(lv, (S4227C37*)(S20748C4*), 0, "S20748C11");
    check_base_class_offset(lv, (S20748C4*), 0, "S20748C11");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*), 0, "S20748C11");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(48,44), "S20748C11");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*), ABISELECT(80,76), "S20748C11");
    check_base_class_offset(lv, (S20748C2*), 0, "S20748C11");
    check_base_class_offset(lv, (S20748C12*), ABISELECT(80,76), "S20748C11");
    test_class_info(&lv, &cd_S20748C11);
    dp->~S20748C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C11(Test_S20748C11, "S20748C11", ABISELECT(1240,836));

#else // __cplusplus

extern void _ZN9S20748C11C1Ev();
extern void _ZN9S20748C11D2Ev();
Name_Map name_map_S20748C11[] = {
  NSPAIR(_ZN9S20748C11C1Ev),
  NSPAIR(_ZN9S20748C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
static Base_Class bases_S20748C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20748C6,    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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(80,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20748C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20748C12,    ABISELECT(80,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C11[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C11D1Ev();
extern void _ZN9S20748C11D0Ev();
extern void _ZN8S20748C22v2Ev();
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C11[] = {
  ABISELECT(80,76),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C11D0Ev,
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20748C11[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C11[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__9S20748C11[] = {
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__9S20748C11[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C12__9S20748C11[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
static  VTT_ENTRY vtt_S20748C11[] = {
  {&(_ZTV9S20748C11[12]),  12,21},
  {&(_ZTV9S20748C11[12]),  12,21},
  {&(_ZTV9S20748C11[12]),  12,21},
  {&(_ZTV9S20748C11[12]),  12,21},
  {&(_ZTV9S20748C11[20]),  20,21},
  {&(_tg__ZTV8S20748C4__9S20748C11[5]),  5,8},
  {&(_tg__ZTV8S20748C4__9S20748C11[5]),  5,8},
  {&(_tg__ZTV8S20748C2__9S20748C11[8]),  8,12},
  {&(_tg__ZTV8S20748C2__9S20748C11[8]),  8,12},
  {&(_tg__ZTV8S20748C2__9S20748C11[8]),  8,12},
  {&(_tg__ZTV9S20748C12__9S20748C11[4]),  4,5},
  {&(_tg__ZTV8S20748C6__9S20748C12__9S20748C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20748C11[];
extern  VTBL_ENTRY _ZTV9S20748C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C11[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20748C11 = {  "S20748C11", // class name
  bases_S20748C11, 8,
  &(vtc_S20748C11[0]), // expected_vtbl_contents
  &(vtt_S20748C11[0]), // expected_vtt_contents
  ABISELECT(1240,836), // object size
  NSPAIRA(_ZTI9S20748C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20748C11),21, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C11),12, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C14  : S20997C6 , S20748C6 {
  ~S20748C14(); // tgen
  S20748C14(); // tgen
};
//SIG(-1 S20748C14) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S20748C14()
{
  extern Class_Descriptor cd_S20748C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20748C14, buf);
    S20748C14 *dp, &lv = *(dp=new (buf) S20748C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20748C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C14)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20748C14");
    check_base_class_offset(lv, (S20748C6*), 0, "S20748C14");
    test_class_info(&lv, &cd_S20748C14);
    dp->~S20748C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C14(Test_S20748C14, "S20748C14", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S20748C14C1Ev();
extern void _ZN9S20748C14D1Ev();
Name_Map name_map_S20748C14[] = {
  NSPAIR(_ZN9S20748C14C1Ev),
  NSPAIR(_ZN9S20748C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
static Base_Class bases_S20748C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20748C6,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C14[];
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C14[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
Class_Descriptor cd_S20748C14 = {  "S20748C14", // class name
  bases_S20748C14, 2,
  &(vtc_S20748C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S20748C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20748C14),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C13  : S20748C14 , S20748C9 {
  ~S20748C13(); // tgen
  S20748C13(); // tgen
};
//SIG(-1 S20748C13) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} BC5{ BC4 VBC3 BC6{ m} Fp[10]}}


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

static void Test_S20748C13()
{
  extern Class_Descriptor cd_S20748C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S20748C13, buf);
    S20748C13 *dp, &lv = *(dp=new (buf) S20748C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S20748C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C13)");
    check_base_class_offset(lv, (S20997C6*)(S20748C14*), ABISELECT(8,4), "S20748C13");
    check_base_class_offset(lv, (S20748C6*)(S20748C14*), 0, "S20748C13");
    check_base_class_offset(lv, (S20748C14*), 0, "S20748C13");
    check_base_class_offset(lv, (S20748C6*)(S20748C9*), ABISELECT(48,44), "S20748C13");
    check_base_class_offset(lv, (S20997C6*)(S20748C9*), ABISELECT(136,88), "S20748C13");
    check_base_class_offset(lv, (S4227C37*)(S20748C9*), ABISELECT(48,44), "S20748C13");
    check_base_class_offset(lv, (S20748C9*), ABISELECT(48,44), "S20748C13");
    test_class_info(&lv, &cd_S20748C13);
    dp->~S20748C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C13(Test_S20748C13, "S20748C13", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN9S20748C13C1Ev();
extern void _ZN9S20748C13D1Ev();
Name_Map name_map_S20748C13[] = {
  NSPAIR(_ZN9S20748C13C1Ev),
  NSPAIR(_ZN9S20748C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
static Base_Class bases_S20748C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20748C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20748C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20748C6,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    6, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20748C9,    ABISELECT(48,44), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C13[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C13[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C13[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  ABISELECT(88,44),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20748C13[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20748C13[];
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__9S20748C13[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
static  VTT_ENTRY vtt_S20748C13[] = {
  {&(_ZTV9S20748C13[3]),  3,8},
  {&(_tg__ZTV8S20748C9__9S20748C13[3]),  3,4},
  {&(_ZTV9S20748C13[7]),  7,8},
};
extern VTBL_ENTRY _ZTI9S20748C13[];
extern  VTBL_ENTRY _ZTV9S20748C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C13[];
Class_Descriptor cd_S20748C13 = {  "S20748C13", // class name
  bases_S20748C13, 7,
  &(vtc_S20748C13[0]), // expected_vtbl_contents
  &(vtt_S20748C13[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI9S20748C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20748C13),8, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C13),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  S20748C7  : virtual S20748C8 , S20748C6 , virtual S10258C6_nt , virtual S20748C11 , S20748C13 {
  ~S20748C7(); // tgen
  S20748C7(); // tgen
};
//SIG(-1 S20748C7) C1{ VBC2{ VBC3{ BC4{ v1} VBC5{ m FL[5]} BC6{ m} Fp[10]}} BC4 VBC7{ m FL[4]} VBC8{ VBC4 VBC9{ VBC5 VBC4 BC6 vd} VBC7 VBC10{ VBC6 VBC9 v2} VBC11{ VBC4 FC3[9]} vd} BC12{ BC13{ BC5 BC4} BC3}}


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

static void Test_S20748C7()
{
  extern Class_Descriptor cd_S20748C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(186,245)];
    init_test(&cd_S20748C7, buf);
    S20748C7 *dp, &lv = *(dp=new (buf) S20748C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1480,976), "sizeof(S20748C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C7)");
    /*is_ambiguous_... S20748C7::S20748C9 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C9*), ABISELECT(152,96), "S20748C7");
    /*is_ambiguous_... S20748C7::S20748C9 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C9*), ABISELECT(240,140), "S20748C7");
    check_base_class_offset(lv, (S20997C6*)(S20748C4*), ABISELECT(240,140), "S20748C7");
    check_base_class_offset(lv, (S20997C6*)(S20748C9*)(S20748C13*), ABISELECT(240,140), "S20748C7");
    /*is_ambiguous_... S20748C7::S20748C9 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C9*), ABISELECT(152,96), "S20748C7");
    check_base_class_offset(lv, (S20748C9*)(S20748C8*), ABISELECT(152,96), "S20748C7");
    check_base_class_offset(lv, (S20748C8*), ABISELECT(144,92), "S20748C7");
    /*is_ambiguous_... S20748C7::S20748C6 */ AMB_check_base_class_offset(lv, (S20748C6*), 0, "S20748C7");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(280,180), "S20748C7");
    check_base_class_offset(lv, (S10258C6_nt*)(S20748C11*), ABISELECT(280,180), "S20748C7");
    check_base_class_offset(lv, (S20748C6*)(S20748C11*), ABISELECT(312,212), "S20748C7");
    check_base_class_offset(lv, (S20748C6*)(S20748C4*), ABISELECT(312,212), "S20748C7");
    check_base_class_offset(lv, (S20748C6*)(S20748C12*), ABISELECT(312,212), "S20748C7");
    check_base_class_offset(lv, (S4227C37*)(S20748C4*), ABISELECT(312,212), "S20748C7");
    check_base_class_offset(lv, (S20748C4*)(S20748C11*), ABISELECT(312,212), "S20748C7");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*), ABISELECT(312,212), "S20748C7");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*), 0, "S20748C7");
    check_base_class_offset(lv, (S20748C2*)(S20748C11*), ABISELECT(312,212), "S20748C7");
    check_base_class_offset(lv, (S20748C12*)(S20748C11*), ABISELECT(320,216), "S20748C7");
    check_base_class_offset(lv, (S20748C11*), ABISELECT(312,212), "S20748C7");
    check_base_class_offset(lv, (S20997C6*)(S20748C14*)(S20748C13*), ABISELECT(16,8), "S20748C7");
    check_base_class_offset(lv, (S20748C6*)(S20748C14*)(S20748C13*), ABISELECT(8,4), "S20748C7");
    check_base_class_offset(lv, (S20748C14*)(S20748C13*), ABISELECT(8,4), "S20748C7");
    check_base_class_offset(lv, (S20748C6*)(S20748C9*)(S20748C13*), ABISELECT(56,48), "S20748C7");
    check_base_class_offset(lv, (S4227C37*)(S20748C9*)(S20748C13*), ABISELECT(56,48), "S20748C7");
    check_base_class_offset(lv, (S20748C9*)(S20748C13*), ABISELECT(56,48), "S20748C7");
    check_base_class_offset(lv, (S20748C13*), ABISELECT(8,4), "S20748C7");
    test_class_info(&lv, &cd_S20748C7);
    dp->~S20748C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C7(Test_S20748C7, "S20748C7", ABISELECT(1480,976));

#else // __cplusplus

extern void _ZN8S20748C7C1Ev();
extern void _ZN8S20748C7D1Ev();
Name_Map name_map_S20748C7[] = {
  NSPAIR(_ZN8S20748C7C1Ev),
  NSPAIR(_ZN8S20748C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
extern Class_Descriptor cd_S20748C8;
extern VTBL_ENTRY _ZTI8S20748C8[];
extern  VTBL_ENTRY _ZTV8S20748C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C8[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S20748C11;
extern VTBL_ENTRY _ZTI9S20748C11[];
extern  VTBL_ENTRY _ZTV9S20748C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C11[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
extern Class_Descriptor cd_S20748C13;
extern VTBL_ENTRY _ZTI9S20748C13[];
extern  VTBL_ENTRY _ZTV9S20748C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C13[];
static Base_Class bases_S20748C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20748C6,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20748C9,    ABISELECT(152,96), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20748C8,    ABISELECT(144,92), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20748C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10258C6_nt,    ABISELECT(280,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20748C6,    ABISELECT(312,212), //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
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(312,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
    9, //immediately_derived
  0, 0},
  {&cd_S20748C4,    ABISELECT(312,212), //bcp->offset
    -1, //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
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C2,    ABISELECT(312,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20748C12,    ABISELECT(320,216), //bcp->offset
    48, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20748C11,    ABISELECT(312,212), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20748C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20748C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20748C6,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20748C9,    ABISELECT(56,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20748C13,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //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 _ZTI8S20748C7[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C7D1Ev();
extern void _ZN8S20748C7D0Ev();
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C7D1Ev,_ZTv0_n24_N8S20748C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S20748C7D1Ev,_ZThn212_N8S20748C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C7D0Ev,_ZTv0_n24_N8S20748C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S20748C7D0Ev,_ZThn212_N8S20748C7D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C7[] = {
  ABISELECT(320,216),
  0,
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(280,180),
  ABISELECT(240,140),
  ABISELECT(152,96),
  ABISELECT(144,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C7D0Ev,
  ABISELECT(232,136),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  ABISELECT(184,92),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  ABISELECT(96,48),
  ABISELECT(8,4),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-312,-212),
  ABISELECT(-312,-212),
  0,
  -72,
  0,
  ABISELECT(-312,-212),
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C7D1Ev,_ZTv0_n24_N8S20748C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C7D0Ev,_ZTv0_n24_N8S20748C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S20748C7[];
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C13__8S20748C7[] = {
  ABISELECT(232,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C13[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C99S20748C13__A1__8S20748C7[] = {
  ABISELECT(184,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__9S20748C13__8S20748C7[] = {
  ABISELECT(184,92),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20748C13[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20748C8__8S20748C7[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C8[0]),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__8S20748C8__8S20748C7[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20748C8[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__8S20748C7[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev)();
extern void _ZN9S20748C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev)();
extern void _ZN9S20748C11D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C11__8S20748C7[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-312,-212),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__9S20748C11__8S20748C7[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C4__8S20748C7[] = {
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__8S20748C7[] = {
  0,
  ABISELECT(-312,-212),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__8S20748C7[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C12__8S20748C7[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
static  VTT_ENTRY vtt_S20748C7[] = {
  {&(_ZTV8S20748C7[12]),  12,53},
  {&(_tg__ZTV9S20748C13__8S20748C7[3]),  3,4},
  {&(_tg__ZTV8S20748C99S20748C13__A1__8S20748C7[3]),  3,4},
  {&(_tg__ZTV8S20748C9__9S20748C13__8S20748C7[3]),  3,4},
  {&(_ZTV8S20748C7[27]),  27,53},
  {&(_ZTV8S20748C7[31]),  31,53},
  {&(_ZTV8S20748C7[44]),  44,53},
  {&(_ZTV8S20748C7[44]),  44,53},
  {&(_ZTV8S20748C7[44]),  44,53},
  {&(_ZTV8S20748C7[44]),  44,53},
  {&(_ZTV8S20748C7[52]),  52,53},
  {&(_ZTV8S20748C7[18]),  18,53},
  {&(_ZTV8S20748C7[22]),  22,53},
  {&(_tg__ZTV8S20748C8__8S20748C7[4]),  4,4},
  {&(_tg__ZTV8S20748C9__8S20748C8__8S20748C7[4]),  4,5},
  {&(_tg__ZTV8S20748C9__8S20748C7[3]),  3,4},
  {&(_tg__ZTV9S20748C11__8S20748C7[12]),  12,16},
  {&(_tg__ZTV9S20748C11__8S20748C7[12]),  12,16},
  {&(_tg__ZTV9S20748C11__8S20748C7[12]),  12,16},
  {&(_tg__ZTV9S20748C11__8S20748C7[12]),  12,16},
  {&(_tg__ZTV9S20748C12__9S20748C11__8S20748C7[4]),  4,5},
  {&(_tg__ZTV8S20748C4__8S20748C7[5]),  5,8},
  {&(_tg__ZTV8S20748C4__8S20748C7[5]),  5,8},
  {&(_tg__ZTV8S20748C2__8S20748C7[8]),  8,12},
  {&(_tg__ZTV8S20748C2__8S20748C7[8]),  8,12},
  {&(_tg__ZTV8S20748C2__8S20748C7[8]),  8,12},
  {&(_tg__ZTV9S20748C12__8S20748C7[4]),  4,5},
  {&(_tg__ZTV8S20748C6__9S20748C12__8S20748C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20748C7[];
extern  VTBL_ENTRY _ZTV8S20748C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C7[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev), // 
  (VTBL_ENTRY)_ZN9S20748C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev), // 
  (VTBL_ENTRY)_ZN9S20748C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C7D0Ev,_ZTv0_n24_N8S20748C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20748C7D0Ev,_ZThn212_N8S20748C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C7D1Ev,_ZTv0_n24_N8S20748C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20748C7D1Ev,_ZThn212_N8S20748C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20748C7 = {  "S20748C7", // class name
  bases_S20748C7, 21,
  &(vtc_S20748C7[0]), // expected_vtbl_contents
  &(vtt_S20748C7[0]), // expected_vtt_contents
  ABISELECT(1480,976), // object size
  NSPAIRA(_ZTI8S20748C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20748C7),53, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20748C7),28, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C19  : S20748C4 {
  virtual  ~S20748C19(); // _ZN9S20748C19D2Ev
  S20748C19(); // tgen
};
//SIG(-1 S20748C19) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S20748C19()
{
  extern Class_Descriptor cd_S20748C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20748C19, buf);
    S20748C19 *dp, &lv = *(dp=new (buf) S20748C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20748C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C19)");
    check_base_class_offset(lv, (S20997C6*)(S20748C4*), ABISELECT(8,4), "S20748C19");
    check_base_class_offset(lv, (S20748C6*)(S20748C4*), 0, "S20748C19");
    check_base_class_offset(lv, (S4227C37*)(S20748C4*), 0, "S20748C19");
    check_base_class_offset(lv, (S20748C4*), 0, "S20748C19");
    test_class_info(&lv, &cd_S20748C19);
    dp->~S20748C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C19(Test_S20748C19, "S20748C19", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S20748C19C1Ev();
extern void _ZN9S20748C19D2Ev();
Name_Map name_map_S20748C19[] = {
  NSPAIR(_ZN9S20748C19C1Ev),
  NSPAIR(_ZN9S20748C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
static Base_Class bases_S20748C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C19[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C19D1Ev();
extern void _ZN9S20748C19D0Ev();
static  VTBL_ENTRY vtc_S20748C19[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D0Ev,
};
extern VTBL_ENTRY _ZTV9S20748C19[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C19[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
static  VTT_ENTRY vtt_S20748C19[] = {
  {&(_ZTV9S20748C19[5]),  5,8},
  {&(_tg__ZTV8S20748C4__9S20748C19[5]),  5,8},
  {&(_tg__ZTV8S20748C4__9S20748C19[5]),  5,8},
  {&(_ZTV9S20748C19[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20748C19[];
extern  VTBL_ENTRY _ZTV9S20748C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C19[];
Class_Descriptor cd_S20748C19 = {  "S20748C19", // class name
  bases_S20748C19, 4,
  &(vtc_S20748C19[0]), // expected_vtbl_contents
  &(vtt_S20748C19[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S20748C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20748C19),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C19),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  S20748C18  : virtual S4227C37 , S20748C12 , S20748C4 , S20748C19 {
  ~S20748C18(); // tgen
  S20748C18(); // tgen
};
//SIG(-1 S20748C18) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S20748C18()
{
  extern Class_Descriptor cd_S20748C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S20748C18, buf);
    S20748C18 *dp, &lv = *(dp=new (buf) S20748C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S20748C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C18)");
    /*is_ambiguous_... S20748C18::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S20748C18");
    check_base_class_offset(lv, (S20748C6*)(S20748C12*), 0, "S20748C18");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*), 0, "S20748C18");
    check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C19*), 0, "S20748C18");
    check_base_class_offset(lv, (S20748C12*), 0, "S20748C18");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*), ABISELECT(1176,768), "S20748C18");
    check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C19*), ABISELECT(1176,768), "S20748C18");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*), ABISELECT(1160,760), "S20748C18");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C4*), ABISELECT(1160,760), "S20748C18");
    check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C19*), ABISELECT(1168,764), "S20748C18");
    check_base_class_offset(lv, (S20748C4*)(S20748C19*), ABISELECT(1168,764), "S20748C18");
    check_base_class_offset(lv, (S20748C19*), ABISELECT(1168,764), "S20748C18");
    test_class_info(&lv, &cd_S20748C18);
    dp->~S20748C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C18(Test_S20748C18, "S20748C18", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN9S20748C18C1Ev();
extern void _ZN9S20748C18D1Ev();
Name_Map name_map_S20748C18[] = {
  NSPAIR(_ZN9S20748C18C1Ev),
  NSPAIR(_ZN9S20748C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C19;
extern VTBL_ENTRY _ZTI9S20748C19[];
extern  VTBL_ENTRY _ZTV9S20748C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C19[];
static Base_Class bases_S20748C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20748C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20748C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20748C19,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C18[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C18D1Ev();
extern void _ZN9S20748C18D0Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev)();
static  VTBL_ENTRY vtc_S20748C18[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20748C18[];
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__9S20748C18[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C18[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C4__9S20748C18[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C19D1Ev();
extern void _ZN9S20748C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C19__9S20748C18[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C19__A1__9S20748C18[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C19__A1__9S20748C18[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C19__9S20748C18[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
static  VTT_ENTRY vtt_S20748C18[] = {
  {&(_ZTV9S20748C18[6]),  6,25},
  {&(_tg__ZTV9S20748C12__9S20748C18[4]),  4,5},
  {&(_tg__ZTV9S20748C12__9S20748C18[4]),  4,5},
  {&(_tg__ZTV8S20748C4__9S20748C18[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C4__9S20748C18[3]),  3,4},
  {&(_tg__ZTV9S20748C19__9S20748C18[5]),  5,8},
  {&(_tg__ZTV8S20748C49S20748C19__A1__9S20748C18[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C19__A1__9S20748C18[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C19__9S20748C18[3]),  3,4},
  {&(_ZTV9S20748C18[6]),  6,25},
  {&(_ZTV9S20748C18[14]),  14,25},
  {&(_ZTV9S20748C18[22]),  22,25},
};
extern VTBL_ENTRY _ZTI9S20748C18[];
extern  VTBL_ENTRY _ZTV9S20748C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C18[];
Class_Descriptor cd_S20748C18 = {  "S20748C18", // class name
  bases_S20748C18, 9,
  &(vtc_S20748C18[0]), // expected_vtbl_contents
  &(vtt_S20748C18[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI9S20748C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20748C18),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C18),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  S20748C17  : virtual S20748C6 , S20748C9 , virtual S20748C18 {
  virtual  ~S20748C17(); // _ZN9S20748C17D2Ev
  S20748C17(); // tgen
};
//SIG(-1 S20748C17) C1{ VBC2{ v1} BC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC5 BC7{ VBC2 FC3[9]} BC8{ VBC4 VBC2 BC5 vd} BC9{ BC8 vd}} vd}


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

static void Test_S20748C17()
{
  extern Class_Descriptor cd_S20748C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(165,215)];
    init_test(&cd_S20748C17, buf);
    S20748C17 *dp, &lv = *(dp=new (buf) S20748C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1312,856), "sizeof(S20748C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C17)");
    /*is_ambiguous_... S20748C17::S20748C6 */ AMB_check_base_class_offset(lv, (S20748C6*), ABISELECT(128,84), "S20748C17");
    check_base_class_offset(lv, (S20748C6*)(S20748C12*)(S20748C18*), ABISELECT(128,84), "S20748C17");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C18*), ABISELECT(128,84), "S20748C17");
    check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(128,84), "S20748C17");
    check_base_class_offset(lv, (S20748C6*)(S20748C9*), 0, "S20748C17");
    check_base_class_offset(lv, (S20997C6*)(S20748C9*), ABISELECT(88,44), "S20748C17");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C18*), ABISELECT(88,44), "S20748C17");
    check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(88,44), "S20748C17");
    check_base_class_offset(lv, (S4227C37*)(S20748C9*), 0, "S20748C17");
    check_base_class_offset(lv, (S20748C9*), 0, "S20748C17");
    /*is_ambiguous_... S20748C18::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C18*), ABISELECT(1304,852), "S20748C17");
    check_base_class_offset(lv, (S20748C12*)(S20748C18*), ABISELECT(128,84), "S20748C17");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C18*), ABISELECT(1288,844), "S20748C17");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C18*), ABISELECT(1288,844), "S20748C17");
    check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(1296,848), "S20748C17");
    check_base_class_offset(lv, (S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(1296,848), "S20748C17");
    check_base_class_offset(lv, (S20748C19*)(S20748C18*), ABISELECT(1296,848), "S20748C17");
    check_base_class_offset(lv, (S20748C18*), ABISELECT(128,84), "S20748C17");
    test_class_info(&lv, &cd_S20748C17);
    dp->~S20748C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C17(Test_S20748C17, "S20748C17", ABISELECT(1312,856));

#else // __cplusplus

extern void _ZN9S20748C17C1Ev();
extern void _ZN9S20748C17D2Ev();
Name_Map name_map_S20748C17[] = {
  NSPAIR(_ZN9S20748C17C1Ev),
  NSPAIR(_ZN9S20748C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C19;
extern VTBL_ENTRY _ZTI9S20748C19[];
extern  VTBL_ENTRY _ZTV9S20748C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C19[];
extern Class_Descriptor cd_S20748C18;
extern VTBL_ENTRY _ZTI9S20748C18[];
extern  VTBL_ENTRY _ZTV9S20748C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C18[];
static Base_Class bases_S20748C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20748C6,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20748C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20748C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C12,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1288,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(1288,844), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(1296,848), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20748C19,    ABISELECT(1296,848), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S20748C18,    ABISELECT(128,84), //bcp->offset
    9, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C17[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C17D1Ev();
extern void _ZN9S20748C17D0Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S20748C17D1Ev,_ZThn84_N9S20748C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S20748C17D0Ev,_ZThn84_N9S20748C17D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C17D1Ev,_ZTvn760_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C17D0Ev,_ZTvn760_n28_N9S20748C17D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C17D1Ev,_ZTvn764_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C17D0Ev,_ZTvn764_n28_N9S20748C17D0Ev)();
static  VTBL_ENTRY vtc_S20748C17[] = {
  ABISELECT(1304,852),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C17D0Ev,
  ABISELECT(-128,-84),
  -40,
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C17D1Ev,_ZTvn760_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C17D0Ev,_ZTvn760_n28_N9S20748C17D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C17D1Ev,_ZTvn764_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C17D0Ev,_ZTvn764_n28_N9S20748C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S20748C17[];
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__9S20748C17[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C18D1Ev();
extern void _ZN9S20748C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C17[] = {
  -40,
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C129S20748C18__9S20748C17[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C17[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C18__9S20748C17[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C19D1Ev();
extern void _ZN9S20748C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C17[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C199S20748C18__A1__9S20748C17[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A1__9S20748C17[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C199S20748C18__9S20748C17[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C18__9S20748C17[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C19__9S20748C18__9S20748C17[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev),
};
static  VTT_ENTRY vtt_S20748C17[] = {
  {&(_ZTV9S20748C17[6]),  6,35},
  {&(_tg__ZTV8S20748C9__9S20748C17[3]),  3,4},
  {&(_ZTV9S20748C17[16]),  16,35},
  {&(_ZTV9S20748C17[16]),  16,35},
  {&(_ZTV9S20748C17[24]),  24,35},
  {&(_ZTV9S20748C17[32]),  32,35},
  {&(_tg__ZTV9S20748C18__9S20748C17[6]),  6,9},
  {&(_tg__ZTV9S20748C129S20748C18__9S20748C17[4]),  4,5},
  {&(_tg__ZTV9S20748C129S20748C18__9S20748C17[4]),  4,5},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C17[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C18__9S20748C17[3]),  3,4},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C17[5]),  5,8},
  {&(_tg__ZTV8S20748C49S20748C199S20748C18__A1__9S20748C17[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A1__9S20748C17[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C199S20748C18__9S20748C17[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C17[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C18__9S20748C17[5]),  5,8},
  {&(_tg__ZTV9S20748C19__9S20748C18__9S20748C17[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20748C17[];
extern  VTBL_ENTRY _ZTV9S20748C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C17[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20748C17D0Ev,_ZThn84_N9S20748C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20748C17D1Ev,_ZThn84_N9S20748C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20748C17 = {  "S20748C17", // class name
  bases_S20748C17, 13,
  &(vtc_S20748C17[0]), // expected_vtbl_contents
  &(vtt_S20748C17[0]), // expected_vtt_contents
  ABISELECT(1312,856), // object size
  NSPAIRA(_ZTI9S20748C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20748C17),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C17),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C20  : S20748C14 {
  long double s20748c20f0;
  ~S20748C20(); // tgen
  S20748C20(); // tgen
};
//SIG(-1 S20748C20) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} FD}


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

static void Test_S20748C20()
{
  extern Class_Descriptor cd_S20748C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,15)];
    init_test(&cd_S20748C20, buf);
    S20748C20 *dp, &lv = *(dp=new (buf) S20748C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S20748C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20748C20)");
    check_base_class_offset(lv, (S20997C6*)(S20748C14*), ABISELECT(8,4), "S20748C20");
    check_base_class_offset(lv, (S20748C6*)(S20748C14*), 0, "S20748C20");
    check_base_class_offset(lv, (S20748C14*), 0, "S20748C20");
    check_field_offset(lv, s20748c20f0, ABISELECT(48,44), "S20748C20.s20748c20f0");
    test_class_info(&lv, &cd_S20748C20);
    dp->~S20748C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C20(Test_S20748C20, "S20748C20", ABISELECT(64,56));

#else // __cplusplus

extern void _ZN9S20748C20C1Ev();
extern void _ZN9S20748C20D1Ev();
Name_Map name_map_S20748C20[] = {
  NSPAIR(_ZN9S20748C20C1Ev),
  NSPAIR(_ZN9S20748C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
static Base_Class bases_S20748C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20748C6,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20748C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20748C20[];
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C20[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C20[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTI9S20748C20[];
extern  VTBL_ENTRY _ZTV9S20748C20[];
Class_Descriptor cd_S20748C20 = {  "S20748C20", // class name
  bases_S20748C20, 3,
  &(vtc_S20748C20[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,56), // object size
  NSPAIRA(_ZTI9S20748C20),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20748C20),3, //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  S20748C16  : virtual S20748C17 , S20748C20 {
  ~S20748C16(); // tgen
  S20748C16(); // tgen
};
//SIG(-1 S20748C16) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} BC11{ BC12{ BC5 BC3} FD}}


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

static void Test_S20748C16()
{
  extern Class_Descriptor cd_S20748C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S20748C16, buf);
    S20748C16 *dp, &lv = *(dp=new (buf) S20748C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S20748C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20748C16)");
    /*is_ambiguous_... S20748C17::S20748C6 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C17*), ABISELECT(192,140), "S20748C16");
    check_base_class_offset(lv, (S20748C6*)(S20748C12*)(S20748C18*), ABISELECT(192,140), "S20748C16");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C18*), ABISELECT(192,140), "S20748C16");
    check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(192,140), "S20748C16");
    check_base_class_offset(lv, (S20748C6*)(S20748C9*)(S20748C17*), ABISELECT(64,56), "S20748C16");
    check_base_class_offset(lv, (S20997C6*)(S20748C9*)(S20748C17*), ABISELECT(152,100), "S20748C16");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C18*), ABISELECT(152,100), "S20748C16");
    check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(152,100), "S20748C16");
    check_base_class_offset(lv, (S4227C37*)(S20748C9*)(S20748C17*), ABISELECT(64,56), "S20748C16");
    check_base_class_offset(lv, (S20748C9*)(S20748C17*), ABISELECT(64,56), "S20748C16");
    /*is_ambiguous_... S20748C18::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C18*), 0, "S20748C16");
    check_base_class_offset(lv, (S20748C12*)(S20748C18*), ABISELECT(192,140), "S20748C16");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C18*), ABISELECT(1352,900), "S20748C16");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C18*), ABISELECT(1352,900), "S20748C16");
    check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(1360,904), "S20748C16");
    check_base_class_offset(lv, (S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(1360,904), "S20748C16");
    check_base_class_offset(lv, (S20748C19*)(S20748C18*), ABISELECT(1360,904), "S20748C16");
    check_base_class_offset(lv, (S20748C18*)(S20748C17*), ABISELECT(192,140), "S20748C16");
    check_base_class_offset(lv, (S20748C17*), ABISELECT(64,56), "S20748C16");
    check_base_class_offset(lv, (S20997C6*)(S20748C14*)(S20748C20*), ABISELECT(8,4), "S20748C16");
    check_base_class_offset(lv, (S20748C6*)(S20748C14*)(S20748C20*), 0, "S20748C16");
    check_base_class_offset(lv, (S20748C14*)(S20748C20*), 0, "S20748C16");
    check_base_class_offset(lv, (S20748C20*), 0, "S20748C16");
    test_class_info(&lv, &cd_S20748C16);
    dp->~S20748C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C16(Test_S20748C16, "S20748C16", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN9S20748C16C1Ev();
extern void _ZN9S20748C16D1Ev();
Name_Map name_map_S20748C16[] = {
  NSPAIR(_ZN9S20748C16C1Ev),
  NSPAIR(_ZN9S20748C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C19;
extern VTBL_ENTRY _ZTI9S20748C19[];
extern  VTBL_ENTRY _ZTV9S20748C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C19[];
extern Class_Descriptor cd_S20748C18;
extern VTBL_ENTRY _ZTI9S20748C18[];
extern  VTBL_ENTRY _ZTV9S20748C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C18[];
extern Class_Descriptor cd_S20748C17;
extern VTBL_ENTRY _ZTI9S20748C17[];
extern  VTBL_ENTRY _ZTV9S20748C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C17[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
extern Class_Descriptor cd_S20748C20;
extern VTBL_ENTRY _ZTI9S20748C20[];
extern  VTBL_ENTRY _ZTV9S20748C20[];
static Base_Class bases_S20748C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20748C6,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20748C6,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S20748C9,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C12,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20748C4,    ABISELECT(1352,900), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20748C19,    ABISELECT(1360,904), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20748C18,    ABISELECT(192,140), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20748C17,    ABISELECT(64,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20748C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20748C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C16[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C16D1Ev();
extern void _ZN9S20748C16D0Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20748C16D1Ev,_ZThn56_N9S20748C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20748C16D0Ev,_ZThn56_N9S20748C16D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZThn192_N9S20748C16D1Ev,_ZThn140_N9S20748C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev)();
extern void ABISELECT(_ZThn192_N9S20748C16D0Ev,_ZThn140_N9S20748C16D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C16D1Ev,_ZTvn760_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C16D0Ev,_ZTvn760_n28_N9S20748C16D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C16D1Ev,_ZTvn764_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C16D0Ev,_ZTvn764_n28_N9S20748C16D0Ev)();
static  VTBL_ENTRY vtc_S20748C16[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C16D0Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C16D1Ev,_ZTvn760_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C16D0Ev,_ZTvn760_n28_N9S20748C16D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C16D1Ev,_ZTvn764_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C16D0Ev,_ZTvn764_n28_N9S20748C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S20748C16[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C17D1Ev();
extern void _ZN9S20748C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C16[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C17D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C99S20748C17__9S20748C16[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S20748C17D1Ev,_ZThn84_N9S20748C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S20748C17D0Ev,_ZThn84_N9S20748C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C17__9S20748C16[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C17D1Ev,_ZTvn760_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C17D0Ev,_ZTvn760_n28_N9S20748C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C17__9S20748C16[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C17D1Ev,_ZTvn760_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C17D0Ev,_ZTvn760_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C17D1Ev,_ZTvn764_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C17D0Ev,_ZTvn764_n28_N9S20748C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C17__9S20748C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C17D1Ev,_ZTvn764_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C17D0Ev,_ZTvn764_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C18D1Ev();
extern void _ZN9S20748C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C16[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C129S20748C18__9S20748C16[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C16[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C18__9S20748C16[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C19D1Ev();
extern void _ZN9S20748C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C199S20748C18__A1__9S20748C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A1__9S20748C16[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C199S20748C18__9S20748C16[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C18__9S20748C16[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C19__9S20748C18__9S20748C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev),
};
static  VTT_ENTRY vtt_S20748C16[] = {
  {&(_ZTV9S20748C16[7]),  7,47},
  {&(_ZTV9S20748C16[18]),  18,47},
  {&(_ZTV9S20748C16[28]),  28,47},
  {&(_ZTV9S20748C16[28]),  28,47},
  {&(_ZTV9S20748C16[36]),  36,47},
  {&(_ZTV9S20748C16[44]),  44,47},
  {&(_tg__ZTV9S20748C17__9S20748C16[6]),  6,9},
  {&(_tg__ZTV8S20748C99S20748C17__9S20748C16[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C17__9S20748C16[7]),  7,10},
  {&(_tg__ZTV9S20748C18__9S20748C17__9S20748C16[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C17__9S20748C16[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C17__9S20748C16[5]),  5,8},
  {&(_tg__ZTV9S20748C18__9S20748C16[6]),  6,9},
  {&(_tg__ZTV9S20748C129S20748C18__9S20748C16[4]),  4,5},
  {&(_tg__ZTV9S20748C129S20748C18__9S20748C16[4]),  4,5},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C16[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C18__9S20748C16[3]),  3,4},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C16[5]),  5,8},
  {&(_tg__ZTV8S20748C49S20748C199S20748C18__A1__9S20748C16[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A1__9S20748C16[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C199S20748C18__9S20748C16[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C16[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C18__9S20748C16[5]),  5,8},
  {&(_tg__ZTV9S20748C19__9S20748C18__9S20748C16[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20748C16[];
extern  VTBL_ENTRY _ZTV9S20748C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C16[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20748C17D0Ev,_ZThn84_N9S20748C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20748C17D1Ev,_ZThn84_N9S20748C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20748C16D0Ev,_ZThn140_N9S20748C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20748C16D1Ev,_ZThn140_N9S20748C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C16D0Ev,_ZThn56_N9S20748C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C16D1Ev,_ZThn56_N9S20748C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20748C16 = {  "S20748C16", // class name
  bases_S20748C16, 18,
  &(vtc_S20748C16[0]), // expected_vtbl_contents
  &(vtt_S20748C16[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI9S20748C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20748C16),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C16),24, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C15  : S20748C16 {
  virtual  ~S20748C15(); // _ZN9S20748C15D2Ev
  virtual void  v4(); // _ZN9S20748C152v4Ev
  S20748C15(); // tgen
};
//SIG(-1 S20748C15) C1{ BC2{ VBC3{ VBC4{ v2} BC5{ BC4 VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC7 BC9{ VBC4 FC5[9]} BC10{ VBC6 VBC4 BC7 vd} BC11{ BC10 vd}} vd} BC12{ BC13{ BC6 BC4} FD}} vd v1}


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

static void Test_S20748C15()
{
  extern Class_Descriptor cd_S20748C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S20748C15, buf);
    S20748C15 *dp, &lv = *(dp=new (buf) S20748C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S20748C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20748C15)");
    /*is_ambiguous_... S20748C17::S20748C6 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C17*), ABISELECT(192,140), "S20748C15");
    check_base_class_offset(lv, (S20748C6*)(S20748C12*)(S20748C18*), ABISELECT(192,140), "S20748C15");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C18*), ABISELECT(192,140), "S20748C15");
    check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(192,140), "S20748C15");
    check_base_class_offset(lv, (S20748C6*)(S20748C9*)(S20748C17*), ABISELECT(64,56), "S20748C15");
    check_base_class_offset(lv, (S20997C6*)(S20748C9*)(S20748C17*), ABISELECT(152,100), "S20748C15");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C18*), ABISELECT(152,100), "S20748C15");
    check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(152,100), "S20748C15");
    check_base_class_offset(lv, (S4227C37*)(S20748C9*)(S20748C17*), ABISELECT(64,56), "S20748C15");
    check_base_class_offset(lv, (S20748C9*)(S20748C17*), ABISELECT(64,56), "S20748C15");
    /*is_ambiguous_... S20748C18::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C18*), 0, "S20748C15");
    check_base_class_offset(lv, (S20748C12*)(S20748C18*), ABISELECT(192,140), "S20748C15");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C18*), ABISELECT(1352,900), "S20748C15");
    /*is_ambiguous_... S20748C18::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C18*), ABISELECT(1352,900), "S20748C15");
    check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(1360,904), "S20748C15");
    check_base_class_offset(lv, (S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(1360,904), "S20748C15");
    check_base_class_offset(lv, (S20748C19*)(S20748C18*), ABISELECT(1360,904), "S20748C15");
    check_base_class_offset(lv, (S20748C18*)(S20748C17*), ABISELECT(192,140), "S20748C15");
    check_base_class_offset(lv, (S20748C17*)(S20748C16*), ABISELECT(64,56), "S20748C15");
    check_base_class_offset(lv, (S20997C6*)(S20748C14*)(S20748C20*)(S20748C16*), ABISELECT(8,4), "S20748C15");
    check_base_class_offset(lv, (S20748C6*)(S20748C14*)(S20748C20*)(S20748C16*), 0, "S20748C15");
    check_base_class_offset(lv, (S20748C14*)(S20748C20*)(S20748C16*), 0, "S20748C15");
    check_base_class_offset(lv, (S20748C20*)(S20748C16*), 0, "S20748C15");
    check_base_class_offset(lv, (S20748C16*), 0, "S20748C15");
    test_class_info(&lv, &cd_S20748C15);
    dp->~S20748C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C15(Test_S20748C15, "S20748C15", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN9S20748C15C1Ev();
extern void _ZN9S20748C15D2Ev();
Name_Map name_map_S20748C15[] = {
  NSPAIR(_ZN9S20748C15C1Ev),
  NSPAIR(_ZN9S20748C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C19;
extern VTBL_ENTRY _ZTI9S20748C19[];
extern  VTBL_ENTRY _ZTV9S20748C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C19[];
extern Class_Descriptor cd_S20748C18;
extern VTBL_ENTRY _ZTI9S20748C18[];
extern  VTBL_ENTRY _ZTV9S20748C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C18[];
extern Class_Descriptor cd_S20748C17;
extern VTBL_ENTRY _ZTI9S20748C17[];
extern  VTBL_ENTRY _ZTV9S20748C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C17[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
extern Class_Descriptor cd_S20748C20;
extern VTBL_ENTRY _ZTI9S20748C20[];
extern  VTBL_ENTRY _ZTV9S20748C20[];
extern Class_Descriptor cd_S20748C16;
extern VTBL_ENTRY _ZTI9S20748C16[];
extern  VTBL_ENTRY _ZTV9S20748C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C16[];
static Base_Class bases_S20748C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20748C6,    ABISELECT(192,140), //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
    6, //immediately_derived
  0, 1},
  {&cd_S20748C6,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S20748C9,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C12,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20748C4,    ABISELECT(1352,900), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20748C19,    ABISELECT(1360,904), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20748C18,    ABISELECT(192,140), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20748C17,    ABISELECT(64,56), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20748C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20748C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20748C16,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C15[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C15D1Ev();
extern void _ZN9S20748C15D0Ev();
extern void _ZN9S20748C152v4Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C15D1Ev,_ZTv0_n32_N9S20748C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S20748C15D1Ev,_ZThn56_N9S20748C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20748C15D0Ev,_ZTv0_n32_N9S20748C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S20748C15D0Ev,_ZThn56_N9S20748C15D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C15D1Ev,_ZTv0_n28_N9S20748C15D1Ev)();
extern void ABISELECT(_ZThn192_N9S20748C15D1Ev,_ZThn140_N9S20748C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C15D0Ev,_ZTv0_n28_N9S20748C15D0Ev)();
extern void ABISELECT(_ZThn192_N9S20748C15D0Ev,_ZThn140_N9S20748C15D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C15D1Ev,_ZTvn760_n28_N9S20748C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C15D0Ev,_ZTvn760_n28_N9S20748C15D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C15D1Ev,_ZTvn764_n28_N9S20748C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C15D0Ev,_ZTvn764_n28_N9S20748C15D0Ev)();
static  VTBL_ENTRY vtc_S20748C15[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20748C152v4Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C15D1Ev,_ZTv0_n32_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C15D0Ev,_ZTv0_n32_N9S20748C15D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C15D1Ev,_ZTv0_n28_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C15D0Ev,_ZTv0_n28_N9S20748C15D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C15D1Ev,_ZTvn760_n28_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C15D0Ev,_ZTvn760_n28_N9S20748C15D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C15D1Ev,_ZTvn764_n28_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C15D0Ev,_ZTvn764_n28_N9S20748C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20748C15[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C16D1Ev();
extern void _ZN9S20748C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C16__9S20748C15[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C16D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20748C16D1Ev,_ZThn56_N9S20748C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20748C16D0Ev,_ZThn56_N9S20748C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C16__9S20748C15[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZThn192_N9S20748C16D1Ev,_ZThn140_N9S20748C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev)();
extern void ABISELECT(_ZThn192_N9S20748C16D0Ev,_ZThn140_N9S20748C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C16__9S20748C15[] = {
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C16D1Ev,_ZTvn760_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C16D0Ev,_ZTvn760_n28_N9S20748C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C16__9S20748C15[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C16D1Ev,_ZTvn760_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C16D0Ev,_ZTvn760_n28_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C16D1Ev,_ZTvn764_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C16D0Ev,_ZTvn764_n28_N9S20748C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C16__9S20748C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C16D1Ev,_ZTvn764_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C16D0Ev,_ZTvn764_n28_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C17D1Ev();
extern void _ZN9S20748C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C15[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C17D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C99S20748C17__9S20748C15[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S20748C17D1Ev,_ZThn84_N9S20748C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S20748C17D0Ev,_ZThn84_N9S20748C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C17__9S20748C15[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C17D1Ev,_ZTvn760_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C17D0Ev,_ZTvn760_n28_N9S20748C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C17__9S20748C15[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C17D1Ev,_ZTvn760_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C17D0Ev,_ZTvn760_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C17D1Ev,_ZTvn764_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C17D0Ev,_ZTvn764_n28_N9S20748C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C17__9S20748C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C17D1Ev,_ZTvn764_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C17D0Ev,_ZTvn764_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C18D1Ev();
extern void _ZN9S20748C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C15[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C129S20748C18__9S20748C15[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C15[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C18__9S20748C15[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C19D1Ev();
extern void _ZN9S20748C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C199S20748C18__A1__9S20748C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A1__9S20748C15[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C199S20748C18__9S20748C15[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C18__9S20748C15[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C19__9S20748C18__9S20748C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev),
};
static  VTT_ENTRY vtt_S20748C15[] = {
  {&(_ZTV9S20748C15[7]),  7,48},
  {&(_tg__ZTV9S20748C16__9S20748C15[7]),  7,10},
  {&(_tg__ZTV9S20748C17__9S20748C16__9S20748C15[8]),  8,11},
  {&(_tg__ZTV9S20748C18__9S20748C16__9S20748C15[7]),  7,10},
  {&(_tg__ZTV9S20748C18__9S20748C16__9S20748C15[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C16__9S20748C15[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C16__9S20748C15[5]),  5,8},
  {&(_ZTV9S20748C15[19]),  19,48},
  {&(_ZTV9S20748C15[29]),  29,48},
  {&(_ZTV9S20748C15[29]),  29,48},
  {&(_ZTV9S20748C15[37]),  37,48},
  {&(_ZTV9S20748C15[45]),  45,48},
  {&(_tg__ZTV9S20748C17__9S20748C15[6]),  6,9},
  {&(_tg__ZTV8S20748C99S20748C17__9S20748C15[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C17__9S20748C15[7]),  7,10},
  {&(_tg__ZTV9S20748C18__9S20748C17__9S20748C15[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C17__9S20748C15[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C17__9S20748C15[5]),  5,8},
  {&(_tg__ZTV9S20748C18__9S20748C15[6]),  6,9},
  {&(_tg__ZTV9S20748C129S20748C18__9S20748C15[4]),  4,5},
  {&(_tg__ZTV9S20748C129S20748C18__9S20748C15[4]),  4,5},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C15[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C18__9S20748C15[3]),  3,4},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C15[5]),  5,8},
  {&(_tg__ZTV8S20748C49S20748C199S20748C18__A1__9S20748C15[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A1__9S20748C15[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C199S20748C18__9S20748C15[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C15[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C18__9S20748C15[5]),  5,8},
  {&(_tg__ZTV9S20748C19__9S20748C18__9S20748C15[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20748C15[];
extern  VTBL_ENTRY _ZTV9S20748C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C15[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20748C17D0Ev,_ZThn84_N9S20748C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20748C17D1Ev,_ZThn84_N9S20748C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20748C16D0Ev,_ZThn140_N9S20748C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20748C16D1Ev,_ZThn140_N9S20748C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C16D0Ev,_ZThn56_N9S20748C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C16D1Ev,_ZThn56_N9S20748C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C15D0Ev,_ZTv0_n28_N9S20748C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20748C15D0Ev,_ZThn140_N9S20748C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C15D1Ev,_ZTv0_n28_N9S20748C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20748C15D1Ev,_ZThn140_N9S20748C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C15D0Ev,_ZTv0_n32_N9S20748C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C15D0Ev,_ZThn56_N9S20748C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C15D1Ev,_ZTv0_n32_N9S20748C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C15D1Ev,_ZThn56_N9S20748C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20748C15 = {  "S20748C15", // class name
  bases_S20748C15, 19,
  &(vtc_S20748C15[0]), // expected_vtbl_contents
  &(vtt_S20748C15[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI9S20748C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20748C15),48, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C15),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C23  : S20748C2 {
  virtual  ~S20748C23(); // _ZN9S20748C23D2Ev
  S20748C23(); // tgen
};
//SIG(-1 S20748C23) C1{ BC2{ VBC3{ m} VBC4{ VBC5{ m FL[5]} VBC6{ v1} BC3 vd} v2} vd}


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

static void Test_S20748C23()
{
  extern Class_Descriptor cd_S20748C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20748C23, buf);
    S20748C23 *dp, &lv = *(dp=new (buf) S20748C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20748C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C23)");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*), ABISELECT(8,4), "S20748C23");
    check_base_class_offset(lv, (S20997C6*)(S20748C4*), ABISELECT(8,4), "S20748C23");
    check_base_class_offset(lv, (S20748C6*)(S20748C4*), 0, "S20748C23");
    check_base_class_offset(lv, (S4227C37*)(S20748C4*), 0, "S20748C23");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*), 0, "S20748C23");
    check_base_class_offset(lv, (S20748C2*), 0, "S20748C23");
    test_class_info(&lv, &cd_S20748C23);
    dp->~S20748C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C23(Test_S20748C23, "S20748C23", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S20748C23C1Ev();
extern void _ZN9S20748C23D2Ev();
Name_Map name_map_S20748C23[] = {
  NSPAIR(_ZN9S20748C23C1Ev),
  NSPAIR(_ZN9S20748C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
static Base_Class bases_S20748C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20748C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20748C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20748C2,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C23[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C23D1Ev();
extern void _ZN9S20748C23D0Ev();
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY vtc_S20748C23[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C23[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C23D0Ev,
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern VTBL_ENTRY _ZTV9S20748C23[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C2D1Ev();
extern void _ZN8S20748C2D0Ev();
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__9S20748C23[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C23[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
static  VTT_ENTRY vtt_S20748C23[] = {
  {&(_ZTV9S20748C23[8]),  8,12},
  {&(_tg__ZTV8S20748C2__9S20748C23[8]),  8,12},
  {&(_tg__ZTV8S20748C2__9S20748C23[8]),  8,12},
  {&(_tg__ZTV8S20748C2__9S20748C23[8]),  8,12},
  {&(_ZTV9S20748C23[8]),  8,12},
  {&(_ZTV9S20748C23[8]),  8,12},
  {&(_tg__ZTV8S20748C4__9S20748C23[5]),  5,8},
  {&(_tg__ZTV8S20748C4__9S20748C23[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20748C23[];
extern  VTBL_ENTRY _ZTV9S20748C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C23[];
Class_Descriptor cd_S20748C23 = {  "S20748C23", // class name
  bases_S20748C23, 6,
  &(vtc_S20748C23[0]), // expected_vtbl_contents
  &(vtt_S20748C23[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S20748C23),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20748C23),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C23),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C22  : S20748C23 {
  char s20748c22f0;
  virtual  ~S20748C22(); // _ZN9S20748C22D2Ev
  S20748C22(); // tgen
};
//SIG(-1 S20748C22) C1{ BC2{ BC3{ VBC4{ m} VBC5{ VBC6{ m FL[5]} VBC7{ v1} BC4 vd} v2} vd} vd Fc}


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

static void Test_S20748C22()
{
  extern Class_Descriptor cd_S20748C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S20748C22, buf);
    S20748C22 *dp, &lv = *(dp=new (buf) S20748C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S20748C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C22)");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*)(S20748C23*), ABISELECT(9,5), "S20748C22");
    check_base_class_offset(lv, (S20997C6*)(S20748C4*), ABISELECT(16,8), "S20748C22");
    check_base_class_offset(lv, (S20748C6*)(S20748C4*), 0, "S20748C22");
    check_base_class_offset(lv, (S4227C37*)(S20748C4*), 0, "S20748C22");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*)(S20748C23*), 0, "S20748C22");
    check_base_class_offset(lv, (S20748C2*)(S20748C23*), 0, "S20748C22");
    check_base_class_offset(lv, (S20748C23*), 0, "S20748C22");
    check_field_offset(lv, s20748c22f0, ABISELECT(8,4), "S20748C22.s20748c22f0");
    test_class_info(&lv, &cd_S20748C22);
    dp->~S20748C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C22(Test_S20748C22, "S20748C22", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN9S20748C22C1Ev();
extern void _ZN9S20748C22D2Ev();
Name_Map name_map_S20748C22[] = {
  NSPAIR(_ZN9S20748C22C1Ev),
  NSPAIR(_ZN9S20748C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20748C23;
extern VTBL_ENTRY _ZTI9S20748C23[];
extern  VTBL_ENTRY _ZTV9S20748C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C23[];
static Base_Class bases_S20748C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20748C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20748C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20748C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20748C23,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C22[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C22D1Ev();
extern void _ZN9S20748C22D0Ev();
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY vtc_S20748C22[] = {
  0,
  ABISELECT(9,5),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C22[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C22D0Ev,
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern VTBL_ENTRY _ZTV9S20748C22[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C23D1Ev();
extern void _ZN9S20748C23D0Ev();
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C23__9S20748C22[] = {
  0,
  ABISELECT(9,5),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C23[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C23D0Ev,
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C29S20748C23__9S20748C22[] = {
  0,
  ABISELECT(9,5),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C22[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
static  VTT_ENTRY vtt_S20748C22[] = {
  {&(_ZTV9S20748C22[8]),  8,12},
  {&(_tg__ZTV9S20748C23__9S20748C22[8]),  8,12},
  {&(_tg__ZTV8S20748C29S20748C23__9S20748C22[8]),  8,12},
  {&(_tg__ZTV8S20748C29S20748C23__9S20748C22[8]),  8,12},
  {&(_tg__ZTV8S20748C29S20748C23__9S20748C22[8]),  8,12},
  {&(_tg__ZTV9S20748C23__9S20748C22[8]),  8,12},
  {&(_tg__ZTV9S20748C23__9S20748C22[8]),  8,12},
  {&(_ZTV9S20748C22[8]),  8,12},
  {&(_ZTV9S20748C22[8]),  8,12},
  {&(_tg__ZTV8S20748C4__9S20748C22[5]),  5,8},
  {&(_tg__ZTV8S20748C4__9S20748C22[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20748C22[];
extern  VTBL_ENTRY _ZTV9S20748C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C22[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20748C22 = {  "S20748C22", // class name
  bases_S20748C22, 7,
  &(vtc_S20748C22[0]), // expected_vtbl_contents
  &(vtt_S20748C22[0]), // expected_vtt_contents
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI9S20748C22),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20748C22),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C22),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C25  : virtual S20997C6 , S20748C2 , virtual S20748C14 {
  ~S20748C25(); // tgen
  S20748C25(); // tgen
};
//SIG(-1 S20748C25) C1{ VBC2{ m FL[5]} BC3{ VBC4{ m} VBC5{ VBC2 VBC6{ v1} BC4 vd} v2} VBC7{ BC2 BC6}}


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

static void Test_S20748C25()
{
  extern Class_Descriptor cd_S20748C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,23)];
    init_test(&cd_S20748C25, buf);
    S20748C25 *dp, &lv = *(dp=new (buf) S20748C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,88), "sizeof(S20748C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C25)");
    /*is_ambiguous_... S20748C25::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20748C25");
    check_base_class_offset(lv, (S20997C6*)(S20748C4*), ABISELECT(8,4), "S20748C25");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*), ABISELECT(48,44), "S20748C25");
    check_base_class_offset(lv, (S20748C6*)(S20748C4*), 0, "S20748C25");
    check_base_class_offset(lv, (S4227C37*)(S20748C4*), 0, "S20748C25");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*), 0, "S20748C25");
    check_base_class_offset(lv, (S20748C2*), 0, "S20748C25");
    check_base_class_offset(lv, (S20997C6*)(S20748C14*), ABISELECT(56,48), "S20748C25");
    check_base_class_offset(lv, (S20748C6*)(S20748C14*), ABISELECT(48,44), "S20748C25");
    check_base_class_offset(lv, (S20748C14*), ABISELECT(48,44), "S20748C25");
    test_class_info(&lv, &cd_S20748C25);
    dp->~S20748C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C25(Test_S20748C25, "S20748C25", ABISELECT(96,88));

#else // __cplusplus

extern void _ZN9S20748C25C1Ev();
extern void _ZN9S20748C25D1Ev();
Name_Map name_map_S20748C25[] = {
  NSPAIR(_ZN9S20748C25C1Ev),
  NSPAIR(_ZN9S20748C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
static Base_Class bases_S20748C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20748C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20748C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20748C2,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20748C6,    ABISELECT(48,44), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20748C14,    ABISELECT(48,44), //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C25[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C25D1Ev();
extern void _ZN9S20748C25D0Ev();
extern void _ZN8S20748C22v2Ev();
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C25[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C25[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C25D0Ev,
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20748C25[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20748C25[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C2D1Ev();
extern void _ZN8S20748C2D0Ev();
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__9S20748C25[] = {
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C25[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
static  VTT_ENTRY vtt_S20748C25[] = {
  {&(_ZTV9S20748C25[9]),  9,17},
  {&(_tg__ZTV8S20748C2__9S20748C25[8]),  8,12},
  {&(_tg__ZTV8S20748C2__9S20748C25[8]),  8,12},
  {&(_tg__ZTV8S20748C2__9S20748C25[8]),  8,12},
  {&(_ZTV9S20748C25[9]),  9,17},
  {&(_ZTV9S20748C25[9]),  9,17},
  {&(_ZTV9S20748C25[16]),  16,17},
  {&(_tg__ZTV8S20748C4__9S20748C25[5]),  5,8},
  {&(_tg__ZTV8S20748C4__9S20748C25[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20748C25[];
extern  VTBL_ENTRY _ZTV9S20748C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C25[];
Class_Descriptor cd_S20748C25 = {  "S20748C25", // class name
  bases_S20748C25, 9,
  &(vtc_S20748C25[0]), // expected_vtbl_contents
  &(vtt_S20748C25[0]), // expected_vtt_contents
  ABISELECT(96,88), // object size
  NSPAIRA(_ZTI9S20748C25),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20748C25),17, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C25),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C24  : virtual S20748C25 , S20748C11 {
  virtual void  v3(); // _ZN9S20748C242v3Ev
  ~S20748C24(); // tgen
  S20748C24(); // tgen
};
//SIG(-1 S20748C24) C1{ VBC2{ VBC3{ m FL[5]} BC4{ VBC5{ m} VBC6{ VBC3 VBC7{ v2} BC5 vd} v3} VBC8{ BC3 BC7}} BC9{ VBC7 VBC6 VBC10{ m FL[4]} VBC4 VBC11{ VBC7 FC12{ BC7 VBC3 BC5 Fp[10]}[9]} vd} v1}


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

static void Test_S20748C24()
{
  extern Class_Descriptor cd_S20748C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(163,222)];
    init_test(&cd_S20748C24, buf);
    S20748C24 *dp, &lv = *(dp=new (buf) S20748C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1296,884), "sizeof(S20748C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20748C24)");
    /*is_ambiguous_... S20748C25::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C25*), ABISELECT(16,8), "S20748C24");
    check_base_class_offset(lv, (S20997C6*)(S20748C4*), ABISELECT(16,8), "S20748C24");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*)(S20748C25*), 0, "S20748C24");
    /*is_ambiguous_... S20748C24::S20748C2 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*), 0, "S20748C24");
    check_base_class_offset(lv, (S20748C6*)(S20748C4*), ABISELECT(8,4), "S20748C24");
    check_base_class_offset(lv, (S20748C6*)(S20748C11*), ABISELECT(8,4), "S20748C24");
    check_base_class_offset(lv, (S20748C6*)(S20748C12*), ABISELECT(8,4), "S20748C24");
    check_base_class_offset(lv, (S4227C37*)(S20748C4*), ABISELECT(8,4), "S20748C24");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*)(S20748C25*), ABISELECT(8,4), "S20748C24");
    check_base_class_offset(lv, (S20748C4*)(S20748C11*), ABISELECT(8,4), "S20748C24");
    /*is_ambiguous_... S20748C24::S20748C2 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C2*), ABISELECT(8,4), "S20748C24");
    check_base_class_offset(lv, (S20748C2*)(S20748C25*), ABISELECT(8,4), "S20748C24");
    check_base_class_offset(lv, (S20997C6*)(S20748C14*), ABISELECT(64,52), "S20748C24");
    check_base_class_offset(lv, (S20748C6*)(S20748C14*), ABISELECT(56,48), "S20748C24");
    check_base_class_offset(lv, (S20748C14*)(S20748C25*), ABISELECT(56,48), "S20748C24");
    check_base_class_offset(lv, (S20748C25*), ABISELECT(8,4), "S20748C24");
    check_base_class_offset(lv, (S10258C6_nt*)(S20748C11*), ABISELECT(104,92), "S20748C24");
    check_base_class_offset(lv, (S20748C2*)(S20748C11*), 0, "S20748C24");
    check_base_class_offset(lv, (S20748C12*)(S20748C11*), ABISELECT(136,124), "S20748C24");
    check_base_class_offset(lv, (S20748C11*), 0, "S20748C24");
    test_class_info(&lv, &cd_S20748C24);
    dp->~S20748C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C24(Test_S20748C24, "S20748C24", ABISELECT(1296,884));

#else // __cplusplus

extern void _ZN9S20748C24C1Ev();
extern void _ZN9S20748C24D1Ev();
Name_Map name_map_S20748C24[] = {
  NSPAIR(_ZN9S20748C24C1Ev),
  NSPAIR(_ZN9S20748C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
extern Class_Descriptor cd_S20748C25;
extern VTBL_ENTRY _ZTI9S20748C25[];
extern  VTBL_ENTRY _ZTV9S20748C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C25[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S20748C11;
extern VTBL_ENTRY _ZTI9S20748C11[];
extern  VTBL_ENTRY _ZTV9S20748C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C11[];
static Base_Class bases_S20748C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C6,    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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20748C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20748C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //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_S20997C6,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20748C6,    ABISELECT(56,48), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20748C14,    ABISELECT(56,48), //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
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20748C25,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(104,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20748C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20748C12,    ABISELECT(136,124), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20748C11,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C24[];
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev)();
extern void _ZN9S20748C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev)();
extern void _ZN9S20748C24D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN9S20748C242v3Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev)();
extern void ABISELECT(_ZThn8_N9S20748C24D1Ev,_ZThn4_N9S20748C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev)();
extern void ABISELECT(_ZThn8_N9S20748C24D0Ev,_ZThn4_N9S20748C24D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C24[] = {
  ABISELECT(56,48),
  ABISELECT(8,4),
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20748C242v3Ev,
  0,
  ABISELECT(48,44),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20748C24[];
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev)();
extern void _ZN9S20748C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev)();
extern void _ZN9S20748C11D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C11__9S20748C24[] = {
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20748C11D1Ev,_ZThn4_N9S20748C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S20748C11D0Ev,_ZThn4_N9S20748C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C11__9S20748C24[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__9S20748C11__9S20748C24[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev)();
extern void _ZN9S20748C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev)();
extern void _ZN9S20748C25D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C25__9S20748C24[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C25[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C29S20748C25__9S20748C24[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C69S20748C14__A1__9S20748C25__9S20748C24[] = {
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20748C25[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C24[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__A1__9S20748C24[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S20748C2D1Ev,_ZThn4_N8S20748C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S20748C2D0Ev,_ZThn4_N8S20748C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20748C4__8S20748C2__A1__9S20748C24[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__9S20748C24[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C12__9S20748C24[] = {
  0,
  ABISELECT(128,120),
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
static  VTT_ENTRY vtt_S20748C24[] = {
  {&(_ZTV9S20748C24[14]),  14,42},
  {&(_tg__ZTV9S20748C11__9S20748C24[12]),  12,16},
  {&(_tg__ZTV8S20748C4__9S20748C11__9S20748C24[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C11__9S20748C24[6]),  6,9},
  {&(_tg__ZTV9S20748C11__9S20748C24[12]),  12,16},
  {&(_tg__ZTV9S20748C12__9S20748C11__9S20748C24[4]),  4,5},
  {&(_ZTV9S20748C24[29]),  29,42},
  {&(_ZTV9S20748C24[29]),  29,42},
  {&(_ZTV9S20748C24[29]),  29,42},
  {&(_ZTV9S20748C24[36]),  36,42},
  {&(_ZTV9S20748C24[14]),  14,42},
  {&(_ZTV9S20748C24[41]),  41,42},
  {&(_tg__ZTV9S20748C25__9S20748C24[9]),  9,13},
  {&(_tg__ZTV8S20748C29S20748C25__9S20748C24[8]),  8,12},
  {&(_tg__ZTV8S20748C29S20748C25__9S20748C24[8]),  8,12},
  {&(_tg__ZTV8S20748C29S20748C25__9S20748C24[8]),  8,12},
  {&(_tg__ZTV9S20748C25__9S20748C24[9]),  9,13},
  {&(_tg__ZTV9S20748C25__9S20748C24[9]),  9,13},
  {&(_tg__ZTV8S20748C69S20748C14__A1__9S20748C25__9S20748C24[3]),  3,4},
  {&(_tg__ZTV8S20748C4__9S20748C24[5]),  5,8},
  {&(_tg__ZTV8S20748C4__9S20748C24[5]),  5,8},
  {&(_tg__ZTV8S20748C2__A1__9S20748C24[8]),  8,12},
  {&(_tg__ZTV8S20748C4__8S20748C2__A1__9S20748C24[6]),  6,9},
  {&(_tg__ZTV8S20748C4__8S20748C2__A1__9S20748C24[6]),  6,9},
  {&(_tg__ZTV9S20748C12__9S20748C24[4]),  4,5},
  {&(_tg__ZTV8S20748C6__9S20748C12__9S20748C24[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20748C24[];
extern  VTBL_ENTRY _ZTV9S20748C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C24[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20748C2D0Ev,_ZThn4_N8S20748C2D0Ev),
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20748C2D1Ev,_ZThn4_N8S20748C2D1Ev),
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev), // 
  (VTBL_ENTRY)_ZN9S20748C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev), // 
  (VTBL_ENTRY)_ZN9S20748C25D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20748C11D0Ev,_ZThn4_N9S20748C11D0Ev),
  (VTBL_ENTRY)_ZN9S20748C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20748C11D1Ev,_ZThn4_N9S20748C11D1Ev),
  (VTBL_ENTRY)_ZN9S20748C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20748C24D0Ev,_ZThn4_N9S20748C24D0Ev),
  (VTBL_ENTRY)_ZN9S20748C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20748C24D1Ev,_ZThn4_N9S20748C24D1Ev),
  (VTBL_ENTRY)_ZN9S20748C24D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20748C24 = {  "S20748C24", // class name
  bases_S20748C24, 14,
  &(vtc_S20748C24[0]), // expected_vtbl_contents
  &(vtt_S20748C24[0]), // expected_vtt_contents
  ABISELECT(1296,884), // object size
  NSPAIRA(_ZTI9S20748C24),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20748C24),42, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C24),26, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C26  : S20748C18 , S20748C2 , virtual S20748C15 , S20748C8 , S4227C27 {
  short s20748c26f0;
  ~S20748C26(); // tgen
  S20748C26(); // tgen
};
//SIG(-1 S20748C26) C1{ BC2{ VBC3{ m} BC4{ VBC5{ v1} FC6{ BC5 VBC7{ m FL[5]} BC3 Fp[10]}[9]} BC8{ VBC7 VBC5 BC3 vd} BC9{ BC8 vd}} BC10{ VBC3 VBC8 v2} VBC11{ BC12{ VBC13{ VBC5 BC6 VBC2 vd} BC14{ BC15{ BC7 BC5} FD}} vd v3} BC16{ VBC6} BC17{ m} Fs}


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

static void Test_S20748C26()
{
  extern Class_Descriptor cd_S20748C26;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(168,434)];
    init_test(&cd_S20748C26, buf);
    S20748C26 *dp, &lv = *(dp=new (buf) S20748C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2672,1732), "sizeof(S20748C26)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20748C26)");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C18*), 0, "S20748C26");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*), 0, "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C18*), 0, "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C12*)(S20748C18*), 0, "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C18*), 0, "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C19*)(S20748C18*), 0, "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*), 0, "S20748C26");
    /*is_ambiguous_... S20748C17::S20748C6 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C17*), 0, "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C12*)(S20748C18*), 0, "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C18*), 0, "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C19*)(S20748C18*), 0, "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C12*)(S20748C18*), 0, "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C18*), ABISELECT(1200,780), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(1200,780), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*), ABISELECT(1200,780), "S20748C26");
    check_base_class_offset(lv, (S20997C6*)(S20748C9*)(S20748C17*), ABISELECT(1200,780), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C18*), ABISELECT(1200,780), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(1200,780), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C9 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C9*), ABISELECT(1200,780), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C18*), ABISELECT(1160,760), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C18*), ABISELECT(1160,760), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(1168,764), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(1168,764), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C19*)(S20748C18*), ABISELECT(1168,764), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C18*), 0, "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*), ABISELECT(1176,768), "S20748C26");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*), ABISELECT(1176,768), "S20748C26");
    check_base_class_offset(lv, (S20748C2*), ABISELECT(1176,768), "S20748C26");
    check_base_class_offset(lv, (S20748C6*)(S20748C9*)(S20748C17*), ABISELECT(1312,876), "S20748C26");
    check_base_class_offset(lv, (S4227C37*)(S20748C9*)(S20748C17*), ABISELECT(1312,876), "S20748C26");
    check_base_class_offset(lv, (S20748C9*)(S20748C17*), ABISELECT(1312,876), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C12*)(S20748C18*), ABISELECT(1400,920), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C18*), ABISELECT(2560,1680), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C18*), ABISELECT(2560,1680), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(2568,1684), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(2568,1684), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C19*)(S20748C18*), ABISELECT(2568,1684), "S20748C26");
    check_base_class_offset(lv, (S20748C18*)(S20748C17*), ABISELECT(1400,920), "S20748C26");
    check_base_class_offset(lv, (S20748C17*)(S20748C16*)(S20748C15*), ABISELECT(1312,876), "S20748C26");
    check_base_class_offset(lv, (S20997C6*)(S20748C14*)(S20748C20*)(S20748C16*)(S20748C15*), ABISELECT(1256,824), "S20748C26");
    check_base_class_offset(lv, (S20748C6*)(S20748C14*)(S20748C20*)(S20748C16*)(S20748C15*), ABISELECT(1248,820), "S20748C26");
    check_base_class_offset(lv, (S20748C14*)(S20748C20*)(S20748C16*)(S20748C15*), ABISELECT(1248,820), "S20748C26");
    check_base_class_offset(lv, (S20748C20*)(S20748C16*)(S20748C15*), ABISELECT(1248,820), "S20748C26");
    check_base_class_offset(lv, (S20748C16*)(S20748C15*), ABISELECT(1248,820), "S20748C26");
    check_base_class_offset(lv, (S20748C15*), ABISELECT(1248,820), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C9 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C9*), ABISELECT(2576,1688), "S20748C26");
    /*is_ambiguous_... S20748C26::S20748C9 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C9*), ABISELECT(2576,1688), "S20748C26");
    check_base_class_offset(lv, (S20748C9*)(S20748C8*), ABISELECT(2576,1688), "S20748C26");
    check_base_class_offset(lv, (S20748C8*), ABISELECT(1184,772), "S20748C26");
    check_base_class_offset(lv, (S4227C27*), 0, "S20748C26");
    check_field_offset(lv, s20748c26f0, ABISELECT(1192,776), "S20748C26.s20748c26f0");
    test_class_info(&lv, &cd_S20748C26);
    dp->~S20748C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C26(Test_S20748C26, "S20748C26", ABISELECT(2672,1732));

#else // __cplusplus

extern void _ZN9S20748C26C1Ev();
extern void _ZN9S20748C26D1Ev();
Name_Map name_map_S20748C26[] = {
  NSPAIR(_ZN9S20748C26C1Ev),
  NSPAIR(_ZN9S20748C26D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C19;
extern VTBL_ENTRY _ZTI9S20748C19[];
extern  VTBL_ENTRY _ZTV9S20748C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C19[];
extern Class_Descriptor cd_S20748C18;
extern VTBL_ENTRY _ZTI9S20748C18[];
extern  VTBL_ENTRY _ZTV9S20748C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C18[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C19;
extern VTBL_ENTRY _ZTI9S20748C19[];
extern  VTBL_ENTRY _ZTV9S20748C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C19[];
extern Class_Descriptor cd_S20748C18;
extern VTBL_ENTRY _ZTI9S20748C18[];
extern  VTBL_ENTRY _ZTV9S20748C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C18[];
extern Class_Descriptor cd_S20748C17;
extern VTBL_ENTRY _ZTI9S20748C17[];
extern  VTBL_ENTRY _ZTV9S20748C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C17[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
extern Class_Descriptor cd_S20748C20;
extern VTBL_ENTRY _ZTI9S20748C20[];
extern  VTBL_ENTRY _ZTV9S20748C20[];
extern Class_Descriptor cd_S20748C16;
extern VTBL_ENTRY _ZTI9S20748C16[];
extern  VTBL_ENTRY _ZTV9S20748C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C16[];
extern Class_Descriptor cd_S20748C15;
extern VTBL_ENTRY _ZTI9S20748C15[];
extern  VTBL_ENTRY _ZTV9S20748C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C15[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
extern Class_Descriptor cd_S20748C8;
extern VTBL_ENTRY _ZTI8S20748C8[];
extern  VTBL_ENTRY _ZTV8S20748C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C8[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
static Base_Class bases_S20748C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20748C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20748C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(1200,780), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(1160,760), //bcp->offset
    14, //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
    19, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20748C19,    ABISELECT(1168,764), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20748C18,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20748C2,    ABISELECT(1176,768), //bcp->offset
    30, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20748C6,    ABISELECT(1312,876), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C9,    ABISELECT(1312,876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20748C12,    ABISELECT(1400,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2560,1680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(2560,1680), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2568,1684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(2568,1684), //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
    5, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20748C19,    ABISELECT(2568,1684), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20748C18,    ABISELECT(1400,920), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20748C17,    ABISELECT(1312,876), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1256,824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20748C6,    ABISELECT(1248,820), //bcp->offset
    -1, //bcp->virtual_function_table_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
    26, //immediately_derived
  0, 0},
  {&cd_S20748C14,    ABISELECT(1248,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20748C20,    ABISELECT(1248,820), //bcp->offset
    -1, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S20748C16,    ABISELECT(1248,820), //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
    14, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20748C15,    ABISELECT(1248,820), //bcp->offset
    46, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20748C6,    ABISELECT(2576,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2576,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20748C9,    ABISELECT(2576,1688), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S20748C8,    ABISELECT(1184,772), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C26[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C26D1Ev();
extern void _ZN9S20748C26D0Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C26D1Ev,_ZThn760_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C26D0Ev,_ZThn760_N9S20748C26D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C26D1Ev,_ZThn764_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C26D0Ev,_ZThn764_N9S20748C26D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1176_N9S20748C26D1Ev,_ZThn768_N9S20748C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev)();
extern void ABISELECT(_ZThn1176_N9S20748C26D0Ev,_ZThn768_N9S20748C26D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S20748C26D1Ev,_ZTv0_n36_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1248_N9S20748C26D1Ev,_ZThn820_N9S20748C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20748C26D0Ev,_ZTv0_n36_N9S20748C26D0Ev)();
extern void ABISELECT(_ZThn1248_N9S20748C26D0Ev,_ZThn820_N9S20748C26D0Ev)() __attribute__((weak));
extern void _ZN9S20748C152v4Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C26D1Ev,_ZTv0_n32_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1312_N9S20748C26D1Ev,_ZThn876_N9S20748C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20748C26D0Ev,_ZTv0_n32_N9S20748C26D0Ev)();
extern void ABISELECT(_ZThn1312_N9S20748C26D0Ev,_ZThn876_N9S20748C26D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C26D1Ev,_ZTv0_n28_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1400_N9S20748C26D1Ev,_ZThn920_N9S20748C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C26D0Ev,_ZTv0_n28_N9S20748C26D0Ev)();
extern void ABISELECT(_ZThn1400_N9S20748C26D0Ev,_ZThn920_N9S20748C26D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C26D1Ev,_ZTvn760_n28_N9S20748C26D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C26D0Ev,_ZTvn760_n28_N9S20748C26D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C26D1Ev,_ZTvn764_n28_N9S20748C26D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C26D0Ev,_ZTvn764_n28_N9S20748C26D0Ev)();
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C26[] = {
  ABISELECT(2576,1688),
  ABISELECT(1400,920),
  ABISELECT(1312,876),
  ABISELECT(1248,820),
  ABISELECT(1176,768),
  ABISELECT(1200,780),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C26D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C26D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(40,20),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C26D1Ev,_ZThn760_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C26D0Ev,_ZThn760_N9S20748C26D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(32,16),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C26D1Ev,_ZThn764_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C26D0Ev,_ZThn764_N9S20748C26D0Ev),
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1176,-768),
  ABISELECT(-1176,-768),
  ABISELECT(24,12),
  ABISELECT(-1176,-768),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  ABISELECT(16,8),
  ABISELECT(1392,916),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  0,
  ABISELECT(-1248,-820),
  0,
  ABISELECT(-1248,-820),
  ABISELECT(152,100),
  ABISELECT(-48,-40),
  ABISELECT(-1248,-820),
  ABISELECT(64,56),
  ABISELECT(-1248,-820),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20748C26D1Ev,_ZTv0_n36_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20748C26D0Ev,_ZTv0_n36_N9S20748C26D0Ev),
  (VTBL_ENTRY)&_ZN9S20748C152v4Ev,
  ABISELECT(-1312,-876),
  0,
  ABISELECT(-1312,-876),
  ABISELECT(88,44),
  ABISELECT(-1312,-876),
  ABISELECT(-112,-96),
  ABISELECT(-1312,-876),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C26D1Ev,_ZTv0_n32_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C26D0Ev,_ZTv0_n32_N9S20748C26D0Ev),
  ABISELECT(-1400,-920),
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C26D1Ev,_ZTv0_n28_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C26D0Ev,_ZTv0_n28_N9S20748C26D0Ev),
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-2560,-1680),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C26D1Ev,_ZTvn760_n28_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C26D0Ev,_ZTvn760_n28_N9S20748C26D0Ev),
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-2568,-1684),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C26D1Ev,_ZTvn764_n28_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C26D0Ev,_ZTvn764_n28_N9S20748C26D0Ev),
  0,
  ABISELECT(-1376,-908),
  ABISELECT(-2576,-1688),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20748C26[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C18D1Ev();
extern void _ZN9S20748C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C18__A__9S20748C26[] = {
  ABISELECT(1200,780),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C129S20748C18__9S20748C26[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C26[] = {
  ABISELECT(-1160,-760),
  ABISELECT(40,20),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C18__9S20748C26[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C19D1Ev();
extern void _ZN9S20748C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C26[] = {
  ABISELECT(-1168,-764),
  ABISELECT(32,16),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C199S20748C18__A1__9S20748C26[] = {
  ABISELECT(-1168,-764),
  ABISELECT(32,16),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A1__9S20748C26[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C199S20748C18__9S20748C26[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C18__A__9S20748C26[] = {
  ABISELECT(-1160,-760),
  ABISELECT(40,20),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C19__9S20748C18__A__9S20748C26[] = {
  ABISELECT(-1168,-764),
  ABISELECT(32,16),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__9S20748C26[] = {
  0,
  ABISELECT(-1176,-768),
  0,
  ABISELECT(-1176,-768),
  ABISELECT(24,12),
  ABISELECT(-1176,-768),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C2__9S20748C26[] = {
  0,
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20748C8__9S20748C26[] = {
  ABISELECT(16,8),
  ABISELECT(1392,916),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C8[0]),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__8S20748C8__9S20748C26[] = {
  0,
  ABISELECT(-1376,-908),
  ABISELECT(-1392,-916),
  (VTBL_ENTRY)&(_ZTI8S20748C8[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C4__A2__9S20748C26[] = {
  ABISELECT(-1176,-768),
  ABISELECT(24,12),
  ABISELECT(-1176,-768),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C4__A2__9S20748C26[] = {
  0,
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C15D1Ev();
extern void _ZN9S20748C15D0Ev();
extern void _ZN9S20748C152v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C15__9S20748C26[] = {
  ABISELECT(-1248,-820),
  ABISELECT(152,100),
  ABISELECT(-48,-40),
  ABISELECT(-1248,-820),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20748C152v4Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C16D1Ev();
extern void _ZN9S20748C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C169S20748C15__9S20748C26[] = {
  ABISELECT(-1248,-820),
  ABISELECT(152,100),
  ABISELECT(-48,-40),
  ABISELECT(-1248,-820),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C16D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20748C16D1Ev,_ZThn56_N9S20748C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20748C16D0Ev,_ZThn56_N9S20748C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C169S20748C15__9S20748C26[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1312,-876),
  ABISELECT(88,44),
  ABISELECT(-1312,-876),
  ABISELECT(-112,-96),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C169S20748C15__9S20748C26[] = {
  0,
  ABISELECT(1248,820),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZThn152_N9S20748C16D1Ev,_ZThn100_N9S20748C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev)();
extern void ABISELECT(_ZThn152_N9S20748C16D0Ev,_ZThn100_N9S20748C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C169S20748C15__9S20748C26[] = {
  ABISELECT(-152,-100),
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C16D1Ev,_ZTvn760_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C16D0Ev,_ZTvn760_n28_N9S20748C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C169S20748C15__9S20748C26[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C16D1Ev,_ZTvn760_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C16D0Ev,_ZTvn760_n28_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C16D1Ev,_ZTvn764_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C16D0Ev,_ZTvn764_n28_N9S20748C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C169S20748C15__9S20748C26[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C16D1Ev,_ZTvn764_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C16D0Ev,_ZTvn764_n28_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C15D1Ev,_ZTv0_n32_N9S20748C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S20748C15D1Ev,_ZThn56_N9S20748C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20748C15D0Ev,_ZTv0_n32_N9S20748C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S20748C15D0Ev,_ZThn56_N9S20748C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C15__9S20748C26[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1312,-876),
  ABISELECT(88,44),
  ABISELECT(-1312,-876),
  ABISELECT(-112,-96),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C15D1Ev,_ZTv0_n32_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C15D0Ev,_ZTv0_n32_N9S20748C15D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C15__9S20748C26[] = {
  0,
  ABISELECT(1248,820),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C15D1Ev,_ZTv0_n28_N9S20748C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20748C15D1Ev,_ZThn100_N9S20748C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C15D0Ev,_ZTv0_n28_N9S20748C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20748C15D0Ev,_ZThn100_N9S20748C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C15__9S20748C26[] = {
  ABISELECT(-152,-100),
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C15D1Ev,_ZTv0_n28_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C15D0Ev,_ZTv0_n28_N9S20748C15D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C15D1Ev,_ZTvn760_n28_N9S20748C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C15D0Ev,_ZTvn760_n28_N9S20748C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C15__9S20748C26[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C15D1Ev,_ZTvn760_n28_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C15D0Ev,_ZTvn760_n28_N9S20748C15D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C15D1Ev,_ZTvn764_n28_N9S20748C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C15D0Ev,_ZTvn764_n28_N9S20748C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C15__9S20748C26[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C15D1Ev,_ZTvn764_n28_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C15D0Ev,_ZTvn764_n28_N9S20748C15D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C17D1Ev();
extern void _ZN9S20748C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C26[] = {
  ABISELECT(-1312,-876),
  ABISELECT(88,44),
  ABISELECT(-1312,-876),
  ABISELECT(-112,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C17D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C99S20748C17__9S20748C26[] = {
  ABISELECT(-112,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C17__9S20748C26[] = {
  0,
  ABISELECT(1312,876),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZThn88_N9S20748C17D1Ev,_ZThn44_N9S20748C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev)();
extern void ABISELECT(_ZThn88_N9S20748C17D0Ev,_ZThn44_N9S20748C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C17__9S20748C26[] = {
  ABISELECT(-88,-44),
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C17D1Ev,_ZTvn760_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C17D0Ev,_ZTvn760_n28_N9S20748C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C17__9S20748C26[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C17D1Ev,_ZTvn760_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C17D0Ev,_ZTvn760_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C17D1Ev,_ZTvn764_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C17D0Ev,_ZTvn764_n28_N9S20748C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C17__9S20748C26[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-1256,-808),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C17D1Ev,_ZTvn764_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C17D0Ev,_ZTvn764_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C18D1Ev();
extern void _ZN9S20748C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C18__A1__9S20748C26[] = {
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C129S20748C18__A1__9S20748C26[] = {
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C129S20748C18__A1__9S20748C26[] = {
  0,
  ABISELECT(1400,920),
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__A3__9S20748C26[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C18__A3__9S20748C26[] = {
  0,
  ABISELECT(2560,1680),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C19D1Ev();
extern void _ZN9S20748C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__A1__9S20748C26[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C199S20748C18__A4__9S20748C26[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A4__9S20748C26[] = {
  0,
  ABISELECT(2568,1684),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C199S20748C18__A1__9S20748C26[] = {
  0,
  ABISELECT(2568,1684),
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C18__A1__9S20748C26[] = {
  0,
  ABISELECT(1400,920),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C18__A1__9S20748C26[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C19__9S20748C18__A1__9S20748C26[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__A1__9S20748C26[] = {
  ABISELECT(-1376,-908),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
static  VTT_ENTRY vtt_S20748C26[] = {
  {&(_ZTV9S20748C26[11]),  11,102},
  {&(_tg__ZTV9S20748C18__A__9S20748C26[6]),  6,9},
  {&(_tg__ZTV9S20748C129S20748C18__9S20748C26[4]),  4,5},
  {&(_tg__ZTV9S20748C129S20748C18__9S20748C26[4]),  4,5},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C26[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C18__9S20748C26[3]),  3,4},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C26[5]),  5,8},
  {&(_tg__ZTV8S20748C49S20748C199S20748C18__A1__9S20748C26[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A1__9S20748C26[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C199S20748C18__9S20748C26[3]),  3,4},
  {&(_tg__ZTV9S20748C18__A__9S20748C26[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C18__A__9S20748C26[5]),  5,8},
  {&(_tg__ZTV9S20748C19__9S20748C18__A__9S20748C26[5]),  5,8},
  {&(_tg__ZTV8S20748C2__9S20748C26[8]),  8,12},
  {&(_tg__ZTV8S20748C2__9S20748C26[8]),  8,12},
  {&(_tg__ZTV8S20748C6__8S20748C2__9S20748C26[3]),  3,4},
  {&(_tg__ZTV8S20748C8__9S20748C26[4]),  4,4},
  {&(_tg__ZTV8S20748C9__8S20748C8__9S20748C26[4]),  4,5},
  {&(_ZTV9S20748C26[11]),  11,102},
  {&(_ZTV9S20748C26[19]),  19,102},
  {&(_ZTV9S20748C26[27]),  27,102},
  {&(_ZTV9S20748C26[38]),  38,102},
  {&(_ZTV9S20748C26[38]),  38,102},
  {&(_ZTV9S20748C26[56]),  56,102},
  {&(_ZTV9S20748C26[68]),  68,102},
  {&(_ZTV9S20748C26[78]),  78,102},
  {&(_ZTV9S20748C26[86]),  86,102},
  {&(_ZTV9S20748C26[94]),  94,102},
  {&(_ZTV9S20748C26[46]),  46,102},
  {&(_ZTV9S20748C26[101]),  101,102},
  {&(_tg__ZTV8S20748C4__A2__9S20748C26[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C4__A2__9S20748C26[3]),  3,4},
  {&(_tg__ZTV9S20748C15__9S20748C26[7]),  7,11},
  {&(_tg__ZTV9S20748C169S20748C15__9S20748C26[7]),  7,10},
  {&(_tg__ZTV9S20748C17__9S20748C169S20748C15__9S20748C26[8]),  8,11},
  {&(_tg__ZTV8S20748C6__9S20748C169S20748C15__9S20748C26[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C169S20748C15__9S20748C26[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C169S20748C15__9S20748C26[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C169S20748C15__9S20748C26[5]),  5,8},
  {&(_tg__ZTV9S20748C17__9S20748C15__9S20748C26[8]),  8,11},
  {&(_tg__ZTV8S20748C6__9S20748C15__9S20748C26[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C15__9S20748C26[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C15__9S20748C26[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C15__9S20748C26[5]),  5,8},
  {&(_tg__ZTV9S20748C17__9S20748C26[6]),  6,9},
  {&(_tg__ZTV8S20748C99S20748C17__9S20748C26[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C17__9S20748C26[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C17__9S20748C26[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C17__9S20748C26[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C17__9S20748C26[5]),  5,8},
  {&(_tg__ZTV9S20748C18__A1__9S20748C26[6]),  6,9},
  {&(_tg__ZTV9S20748C129S20748C18__A1__9S20748C26[4]),  4,5},
  {&(_tg__ZTV8S20748C6__9S20748C129S20748C18__A1__9S20748C26[3]),  3,4},
  {&(_tg__ZTV8S20748C49S20748C18__A3__9S20748C26[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C18__A3__9S20748C26[3]),  3,4},
  {&(_tg__ZTV9S20748C199S20748C18__A1__9S20748C26[5]),  5,8},
  {&(_tg__ZTV8S20748C49S20748C199S20748C18__A4__9S20748C26[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A4__9S20748C26[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C199S20748C18__A1__9S20748C26[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C18__A1__9S20748C26[3]),  3,4},
  {&(_tg__ZTV8S20748C4__9S20748C18__A1__9S20748C26[5]),  5,8},
  {&(_tg__ZTV9S20748C19__9S20748C18__A1__9S20748C26[5]),  5,8},
  {&(_tg__ZTV8S20748C9__A1__9S20748C26[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20748C26[];
extern  VTBL_ENTRY _ZTV9S20748C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C26[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20748C17D0Ev,_ZThn44_N9S20748C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20748C17D1Ev,_ZThn44_N9S20748C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C15D0Ev,_ZTv0_n28_N9S20748C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20748C15D0Ev,_ZThn100_N9S20748C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C15D1Ev,_ZTv0_n28_N9S20748C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20748C15D1Ev,_ZThn100_N9S20748C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C15D0Ev,_ZTv0_n32_N9S20748C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C15D0Ev,_ZThn56_N9S20748C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C15D1Ev,_ZTv0_n32_N9S20748C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C15D1Ev,_ZThn56_N9S20748C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20748C16D0Ev,_ZThn100_N9S20748C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20748C16D1Ev,_ZThn100_N9S20748C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C16D0Ev,_ZThn56_N9S20748C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C16D1Ev,_ZThn56_N9S20748C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C26D0Ev,_ZTv0_n28_N9S20748C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N9S20748C26D0Ev,_ZThn920_N9S20748C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C26D1Ev,_ZTv0_n28_N9S20748C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N9S20748C26D1Ev,_ZThn920_N9S20748C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C26D0Ev,_ZTv0_n32_N9S20748C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N9S20748C26D0Ev,_ZThn876_N9S20748C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C26D1Ev,_ZTv0_n32_N9S20748C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N9S20748C26D1Ev,_ZThn876_N9S20748C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20748C26D0Ev,_ZTv0_n36_N9S20748C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1248_N9S20748C26D0Ev,_ZThn820_N9S20748C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20748C26D1Ev,_ZTv0_n36_N9S20748C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1248_N9S20748C26D1Ev,_ZThn820_N9S20748C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S20748C26D0Ev,_ZThn768_N9S20748C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S20748C26D1Ev,_ZThn768_N9S20748C26D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20748C26 = {  "S20748C26", // class name
  bases_S20748C26, 35,
  &(vtc_S20748C26[0]), // expected_vtbl_contents
  &(vtt_S20748C26[0]), // expected_vtt_contents
  ABISELECT(2672,1732), // object size
  NSPAIRA(_ZTI9S20748C26),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20748C26),102, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C26),63, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C21  : virtual S20748C4 , S20748C22 , S20748C24 , virtual S20748C26 {
  long s20748c21f0;
  void *s20748c21f1;
  virtual void  v5(); // _ZN9S20748C212v5Ev
  ~S20748C21(); // tgen
  S20748C21(); // tgen
};
//SIG(-1 S20748C21) C1{ VBC2{ VBC3{ m FL[5]} VBC4{ v2} BC5{ m} vd} BC6{ BC7{ BC8{ VBC5 VBC2 v3} vd} vd Fc} BC9{ VBC10{ VBC3 BC8 VBC11{ BC3 BC4}} BC12{ VBC4 VBC2 VBC13{ m FL[4]} VBC8 VBC14{ VBC4 FC15{ BC4 VBC3 BC5 Fp[10]}[9]} vd} v4} VBC16{ BC17{ VBC5 BC14 BC2 BC18{ BC2 vd}} BC8 VBC19{ BC20{ VBC21{ VBC4 BC15 VBC17 vd} BC22{ BC11 FD}} vd v5} BC23{ VBC15} BC24{ m} Fs} v1 Fl Fp}


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

static void Test_S20748C21()
{
  extern Class_Descriptor cd_S20748C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(248,649)];
    init_test(&cd_S20748C21, buf);
    S20748C21 *dp, &lv = *(dp=new (buf) S20748C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3952,2592), "sizeof(S20748C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20748C21)");
    /*is_ambiguous_... S20748C21::S20748C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*), ABISELECT(40,20), "S20748C21");
    /*is_ambiguous_... S20748C25::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C25*), ABISELECT(40,20), "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C18*)(S20748C26*), ABISELECT(40,20), "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C19*)(S20748C18*)(S20748C26*), ABISELECT(40,20), "S20748C21");
    check_base_class_offset(lv, (S20997C6*)(S20748C9*)(S20748C17*), ABISELECT(40,20), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C18*), ABISELECT(40,20), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(40,20), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C9 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C9*), ABISELECT(40,20), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*), 0, "S20748C21");
    check_base_class_offset(lv, (S20748C6*)(S20748C11*)(S20748C24*), 0, "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C12 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C12*), 0, "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C12*)(S20748C18*)(S20748C26*), 0, "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C18*)(S20748C26*), 0, "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C19*)(S20748C18*)(S20748C26*), 0, "S20748C21");
    /*is_ambiguous_... S20748C17::S20748C6 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C17*), 0, "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C12*)(S20748C18*), 0, "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C18*), 0, "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C19*)(S20748C18*), 0, "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*), 0, "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C4*), 0, "S20748C21");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*)(S20748C23*)(S20748C22*), 0, "S20748C21");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*)(S20748C25*), 0, "S20748C21");
    check_base_class_offset(lv, (S20748C4*)(S20748C11*)(S20748C24*), 0, "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C2 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C2*), 0, "S20748C21");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*)(S20748C26*), 0, "S20748C21");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*)(S20748C23*)(S20748C22*), ABISELECT(80,60), "S20748C21");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*)(S20748C25*), ABISELECT(80,60), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C2 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*), ABISELECT(80,60), "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C18*)(S20748C26*), ABISELECT(80,60), "S20748C21");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*)(S20748C26*), ABISELECT(80,60), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C18*), ABISELECT(80,60), "S20748C21");
    check_base_class_offset(lv, (S20748C2*)(S20748C23*)(S20748C22*), 0, "S20748C21");
    check_base_class_offset(lv, (S20748C23*)(S20748C22*), 0, "S20748C21");
    check_base_class_offset(lv, (S20748C22*), 0, "S20748C21");
    check_base_class_offset(lv, (S20748C2*)(S20748C25*), ABISELECT(80,60), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C14 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C14*), ABISELECT(96,68), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C14 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C14*), ABISELECT(88,64), "S20748C21");
    check_base_class_offset(lv, (S20748C14*)(S20748C25*), ABISELECT(88,64), "S20748C21");
    check_base_class_offset(lv, (S20748C25*)(S20748C24*), ABISELECT(80,60), "S20748C21");
    check_base_class_offset(lv, (S10258C6_nt*)(S20748C11*)(S20748C24*), ABISELECT(136,108), "S20748C21");
    check_base_class_offset(lv, (S20748C2*)(S20748C11*)(S20748C24*), ABISELECT(16,8), "S20748C21");
    check_base_class_offset(lv, (S20748C12*)(S20748C11*)(S20748C24*), ABISELECT(168,140), "S20748C21");
    check_base_class_offset(lv, (S20748C11*)(S20748C24*), ABISELECT(16,8), "S20748C21");
    check_base_class_offset(lv, (S20748C24*), ABISELECT(16,8), "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C12*)(S20748C18*)(S20748C26*), ABISELECT(1328,900), "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C18*)(S20748C26*), ABISELECT(2488,1660), "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C18*)(S20748C26*), ABISELECT(2488,1660), "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C19*)(S20748C18*)(S20748C26*), ABISELECT(2496,1664), "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C19*)(S20748C18*)(S20748C26*), ABISELECT(2496,1664), "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C19*)(S20748C18*)(S20748C26*), ABISELECT(2496,1664), "S20748C21");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C18*)(S20748C26*), ABISELECT(1328,900), "S20748C21");
    check_base_class_offset(lv, (S20748C2*)(S20748C26*), ABISELECT(2504,1668), "S20748C21");
    check_base_class_offset(lv, (S20748C6*)(S20748C9*)(S20748C17*), ABISELECT(2592,1736), "S20748C21");
    check_base_class_offset(lv, (S4227C37*)(S20748C9*)(S20748C17*), ABISELECT(2592,1736), "S20748C21");
    check_base_class_offset(lv, (S20748C9*)(S20748C17*), ABISELECT(2592,1736), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C12*)(S20748C18*), ABISELECT(2680,1780), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C18*), ABISELECT(3840,2540), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C18*), ABISELECT(3840,2540), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(3848,2544), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(3848,2544), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C19*)(S20748C18*), ABISELECT(3848,2544), "S20748C21");
    check_base_class_offset(lv, (S20748C18*)(S20748C17*), ABISELECT(2680,1780), "S20748C21");
    check_base_class_offset(lv, (S20748C17*)(S20748C16*)(S20748C15*), ABISELECT(2592,1736), "S20748C21");
    check_base_class_offset(lv, (S20997C6*)(S20748C14*)(S20748C20*)(S20748C16*)(S20748C15*), ABISELECT(2536,1684), "S20748C21");
    check_base_class_offset(lv, (S20748C6*)(S20748C14*)(S20748C20*)(S20748C16*)(S20748C15*), ABISELECT(2528,1680), "S20748C21");
    check_base_class_offset(lv, (S20748C14*)(S20748C20*)(S20748C16*)(S20748C15*), ABISELECT(2528,1680), "S20748C21");
    check_base_class_offset(lv, (S20748C20*)(S20748C16*)(S20748C15*), ABISELECT(2528,1680), "S20748C21");
    check_base_class_offset(lv, (S20748C16*)(S20748C15*), ABISELECT(2528,1680), "S20748C21");
    check_base_class_offset(lv, (S20748C15*)(S20748C26*), ABISELECT(2528,1680), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C9 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C9*), ABISELECT(3856,2548), "S20748C21");
    /*is_ambiguous_... S20748C21::S20748C9 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C9*), ABISELECT(3856,2548), "S20748C21");
    check_base_class_offset(lv, (S20748C9*)(S20748C8*)(S20748C26*), ABISELECT(3856,2548), "S20748C21");
    check_base_class_offset(lv, (S20748C8*)(S20748C26*), ABISELECT(2512,1672), "S20748C21");
    check_base_class_offset(lv, (S4227C27*)(S20748C26*), ABISELECT(1328,900), "S20748C21");
    check_base_class_offset(lv, (S20748C26*), ABISELECT(1328,900), "S20748C21");
    check_field_offset(lv, s20748c21f0, ABISELECT(24,12), "S20748C21.s20748c21f0");
    check_field_offset(lv, s20748c21f1, ABISELECT(32,16), "S20748C21.s20748c21f1");
    test_class_info(&lv, &cd_S20748C21);
    dp->~S20748C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C21(Test_S20748C21, "S20748C21", ABISELECT(3952,2592));

#else // __cplusplus

extern void _ZN9S20748C21C1Ev();
extern void _ZN9S20748C21D1Ev();
Name_Map name_map_S20748C21[] = {
  NSPAIR(_ZN9S20748C21C1Ev),
  NSPAIR(_ZN9S20748C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20748C23;
extern VTBL_ENTRY _ZTI9S20748C23[];
extern  VTBL_ENTRY _ZTV9S20748C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C23[];
extern Class_Descriptor cd_S20748C22;
extern VTBL_ENTRY _ZTI9S20748C22[];
extern  VTBL_ENTRY _ZTV9S20748C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C22[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
extern Class_Descriptor cd_S20748C25;
extern VTBL_ENTRY _ZTI9S20748C25[];
extern  VTBL_ENTRY _ZTV9S20748C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C25[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S20748C11;
extern VTBL_ENTRY _ZTI9S20748C11[];
extern  VTBL_ENTRY _ZTV9S20748C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C11[];
extern Class_Descriptor cd_S20748C24;
extern VTBL_ENTRY _ZTI9S20748C24[];
extern  VTBL_ENTRY _ZTV9S20748C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C24[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C19;
extern VTBL_ENTRY _ZTI9S20748C19[];
extern  VTBL_ENTRY _ZTV9S20748C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C19[];
extern Class_Descriptor cd_S20748C18;
extern VTBL_ENTRY _ZTI9S20748C18[];
extern  VTBL_ENTRY _ZTV9S20748C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C18[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C19;
extern VTBL_ENTRY _ZTI9S20748C19[];
extern  VTBL_ENTRY _ZTV9S20748C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C19[];
extern Class_Descriptor cd_S20748C18;
extern VTBL_ENTRY _ZTI9S20748C18[];
extern  VTBL_ENTRY _ZTV9S20748C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C18[];
extern Class_Descriptor cd_S20748C17;
extern VTBL_ENTRY _ZTI9S20748C17[];
extern  VTBL_ENTRY _ZTV9S20748C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C17[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
extern Class_Descriptor cd_S20748C20;
extern VTBL_ENTRY _ZTI9S20748C20[];
extern  VTBL_ENTRY _ZTV9S20748C20[];
extern Class_Descriptor cd_S20748C16;
extern VTBL_ENTRY _ZTI9S20748C16[];
extern  VTBL_ENTRY _ZTV9S20748C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C16[];
extern Class_Descriptor cd_S20748C15;
extern VTBL_ENTRY _ZTI9S20748C15[];
extern  VTBL_ENTRY _ZTV9S20748C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C15[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
extern Class_Descriptor cd_S20748C8;
extern VTBL_ENTRY _ZTI8S20748C8[];
extern  VTBL_ENTRY _ZTV8S20748C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C8[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S20748C26;
extern VTBL_ENTRY _ZTI9S20748C26[];
extern  VTBL_ENTRY _ZTV9S20748C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C26[];
static Base_Class bases_S20748C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    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_S20748C6,    0, //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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20748C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20748C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20748C22,    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
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20748C2,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20748C6,    ABISELECT(88,64), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20748C14,    ABISELECT(88,64), //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
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20748C25,    ABISELECT(80,60), //bcp->offset
    42, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S10258C6_nt,    ABISELECT(136,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20748C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20748C12,    ABISELECT(168,140), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20748C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20748C24,    ABISELECT(16,8), //bcp->offset
    23, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20748C12,    ABISELECT(1328,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2488,1660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20748C4,    ABISELECT(2488,1660), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2496,1664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(2496,1664), //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
    26, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20748C19,    ABISELECT(2496,1664), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20748C18,    ABISELECT(1328,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20748C2,    ABISELECT(2504,1668), //bcp->offset
    97, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20748C6,    ABISELECT(2592,1736), //bcp->offset
    -1, //bcp->virtual_function_table_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_S4227C37,    ABISELECT(2592,1736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C9,    ABISELECT(2592,1736), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20748C12,    ABISELECT(2680,1780), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(3840,2540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(3840,2540), //bcp->offset
    148, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(3848,2544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(3848,2544), //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
    11, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20748C19,    ABISELECT(3848,2544), //bcp->offset
    156, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20748C18,    ABISELECT(2680,1780), //bcp->offset
    138, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S20748C17,    ABISELECT(2592,1736), //bcp->offset
    127, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(2536,1684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C6,    ABISELECT(2528,1680), //bcp->offset
    -1, //bcp->virtual_function_table_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
    39, //immediately_derived
  0, 0},
  {&cd_S20748C14,    ABISELECT(2528,1680), //bcp->offset
    -1, //bcp->virtual_function_table_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
    40, //immediately_derived
  0, 0},
  {&cd_S20748C20,    ABISELECT(2528,1680), //bcp->offset
    -1, //bcp->virtual_function_table_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
    41, //immediately_derived
  0, 0},
  {&cd_S20748C16,    ABISELECT(2528,1680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S20748C15,    ABISELECT(2528,1680), //bcp->offset
    113, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S20748C6,    ABISELECT(3856,2548), //bcp->offset
    -1, //bcp->virtual_function_table_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
    45, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(3856,2548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C9,    ABISELECT(3856,2548), //bcp->offset
    164, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S20748C8,    ABISELECT(2512,1672), //bcp->offset
    109, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S4227C27,    ABISELECT(1328,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20748C26,    ABISELECT(1328,900), //bcp->offset
    65, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20748C21[];
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev)();
extern void _ZN9S20748C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev)();
extern void _ZN9S20748C21D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN9S20748C212v5Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20748C21D1Ev,_ZThn8_N9S20748C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20748C21D0Ev,_ZThn8_N9S20748C21D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN9S20748C242v3Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20748C21D1Ev,_ZThn60_N9S20748C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev)();
extern void ABISELECT(_ZThn80_N9S20748C21D0Ev,_ZThn60_N9S20748C21D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n96_N9S20748C21D1Ev,_ZTv0_n48_N9S20748C21D1Ev)();
extern void ABISELECT(_ZThn1328_N9S20748C21D1Ev,_ZThn900_N9S20748C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20748C21D0Ev,_ZTv0_n48_N9S20748C21D0Ev)();
extern void ABISELECT(_ZThn1328_N9S20748C21D0Ev,_ZThn900_N9S20748C21D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n96_N9S20748C21D1Ev,_ZTvn760_n48_N9S20748C21D1Ev)();
extern void ABISELECT(_ZTvn1160_n96_N9S20748C21D0Ev,_ZTvn760_n48_N9S20748C21D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n96_N9S20748C21D1Ev,_ZTvn764_n48_N9S20748C21D1Ev)();
extern void ABISELECT(_ZTvn1168_n96_N9S20748C21D0Ev,_ZTvn764_n48_N9S20748C21D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev)();
extern void ABISELECT(_ZThn2504_N9S20748C21D1Ev,_ZThn1668_N9S20748C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev)();
extern void ABISELECT(_ZThn2504_N9S20748C21D0Ev,_ZThn1668_N9S20748C21D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S20748C21D1Ev,_ZTv0_n36_N9S20748C21D1Ev)();
extern void ABISELECT(_ZThn2528_N9S20748C21D1Ev,_ZThn1680_N9S20748C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20748C21D0Ev,_ZTv0_n36_N9S20748C21D0Ev)();
extern void ABISELECT(_ZThn2528_N9S20748C21D0Ev,_ZThn1680_N9S20748C21D0Ev)() __attribute__((weak));
extern void _ZN9S20748C152v4Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C21D1Ev,_ZTv0_n32_N9S20748C21D1Ev)();
extern void ABISELECT(_ZThn2592_N9S20748C21D1Ev,_ZThn1736_N9S20748C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20748C21D0Ev,_ZTv0_n32_N9S20748C21D0Ev)();
extern void ABISELECT(_ZThn2592_N9S20748C21D0Ev,_ZThn1736_N9S20748C21D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C21D1Ev,_ZTv0_n28_N9S20748C21D1Ev)();
extern void ABISELECT(_ZThn2680_N9S20748C21D1Ev,_ZThn1780_N9S20748C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C21D0Ev,_ZTv0_n28_N9S20748C21D0Ev)();
extern void ABISELECT(_ZThn2680_N9S20748C21D0Ev,_ZThn1780_N9S20748C21D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C21D1Ev,_ZTvn760_n28_N9S20748C21D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C21D0Ev,_ZTvn760_n28_N9S20748C21D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C21D1Ev,_ZTvn764_n28_N9S20748C21D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C21D0Ev,_ZTvn764_n28_N9S20748C21D0Ev)();
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY vtc_S20748C21[] = {
  ABISELECT(3856,2548),
  ABISELECT(2680,1780),
  ABISELECT(2592,1736),
  ABISELECT(2528,1680),
  ABISELECT(1328,900),
  ABISELECT(168,140),
  ABISELECT(16,8),
  ABISELECT(136,108),
  ABISELECT(88,64),
  ABISELECT(80,60),
  0,
  ABISELECT(80,60),
  0,
  0,
  ABISELECT(40,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20748C212v5Ev,
  ABISELECT(72,56),
  ABISELECT(64,52),
  ABISELECT(152,132),
  0,
  ABISELECT(120,100),
  0,
  ABISELECT(-16,-8),
  ABISELECT(64,52),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20748C242v3Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-80,-60),
  0,
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  -40,
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  0,
  ABISELECT(-88,-64),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  ABISELECT(1176,768),
  ABISELECT(-1328,-900),
  ABISELECT(2528,1648),
  ABISELECT(1352,880),
  ABISELECT(1264,836),
  ABISELECT(1200,780),
  ABISELECT(-1328,-900),
  ABISELECT(-1288,-880),
  ABISELECT(-1248,-840),
  ABISELECT(-1328,-900),
  ABISELECT(-1328,-900),
  ABISELECT(-1328,-900),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20748C21D1Ev,_ZTv0_n48_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20748C21D0Ev,_ZTv0_n48_N9S20748C21D0Ev),
  ABISELECT(-2488,-1660),
  ABISELECT(-2448,-1640),
  ABISELECT(-2488,-1660),
  ABISELECT(-2488,-1660),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N9S20748C21D1Ev,_ZTvn760_n48_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N9S20748C21D0Ev,_ZTvn760_n48_N9S20748C21D0Ev),
  ABISELECT(-2496,-1664),
  ABISELECT(-2456,-1644),
  ABISELECT(-2496,-1664),
  ABISELECT(-2496,-1664),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N9S20748C21D1Ev,_ZTvn764_n48_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N9S20748C21D0Ev,_ZTvn764_n48_N9S20748C21D0Ev),
  ABISELECT(-2504,-1668),
  ABISELECT(-2424,-1608),
  ABISELECT(-2504,-1668),
  ABISELECT(-2504,-1668),
  ABISELECT(-2464,-1648),
  ABISELECT(-2504,-1668),
  ABISELECT(-2504,-1668),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  ABISELECT(-2472,-1652),
  ABISELECT(1344,876),
  ABISELECT(-2512,-1672),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  0,
  ABISELECT(-2528,-1680),
  0,
  ABISELECT(-2448,-1620),
  ABISELECT(152,100),
  ABISELECT(-2488,-1660),
  ABISELECT(-2528,-1680),
  ABISELECT(64,56),
  ABISELECT(-2528,-1680),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20748C21D1Ev,_ZTv0_n36_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20748C21D0Ev,_ZTv0_n36_N9S20748C21D0Ev),
  (VTBL_ENTRY)&_ZN9S20748C152v4Ev,
  ABISELECT(-2592,-1736),
  0,
  ABISELECT(-2512,-1676),
  ABISELECT(88,44),
  ABISELECT(-2592,-1736),
  ABISELECT(-2552,-1716),
  ABISELECT(-2592,-1736),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C21D1Ev,_ZTv0_n32_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C21D0Ev,_ZTv0_n32_N9S20748C21D0Ev),
  ABISELECT(-2680,-1780),
  ABISELECT(-2640,-1760),
  ABISELECT(-2600,-1720),
  ABISELECT(-2680,-1780),
  ABISELECT(-2680,-1780),
  ABISELECT(-2680,-1780),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C21D1Ev,_ZTv0_n28_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C21D0Ev,_ZTv0_n28_N9S20748C21D0Ev),
  ABISELECT(-3840,-2540),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2540),
  ABISELECT(-3840,-2540),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C21D1Ev,_ZTvn760_n28_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C21D0Ev,_ZTvn760_n28_N9S20748C21D0Ev),
  ABISELECT(-3848,-2544),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2544),
  ABISELECT(-3848,-2544),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C21D1Ev,_ZTvn764_n28_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C21D0Ev,_ZTvn764_n28_N9S20748C21D0Ev),
  0,
  ABISELECT(-3816,-2528),
  ABISELECT(-3856,-2548),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20748C21[];
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C22D1Ev,_ZTv0_n24_N9S20748C22D1Ev)();
extern void _ZN9S20748C22D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C22D0Ev,_ZTv0_n24_N9S20748C22D0Ev)();
extern void _ZN9S20748C22D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C22__9S20748C21[] = {
  0,
  ABISELECT(80,60),
  0,
  0,
  ABISELECT(40,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C22[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C22D1Ev,_ZTv0_n24_N9S20748C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C22D0Ev,_ZTv0_n24_N9S20748C22D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C23D1Ev,_ZTv0_n24_N9S20748C23D1Ev)();
extern void _ZN9S20748C23D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C23D0Ev,_ZTv0_n24_N9S20748C23D0Ev)();
extern void _ZN9S20748C23D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C239S20748C22__9S20748C21[] = {
  0,
  ABISELECT(80,60),
  0,
  0,
  ABISELECT(40,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C23[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C23D1Ev,_ZTv0_n24_N9S20748C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C23D0Ev,_ZTv0_n24_N9S20748C23D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C29S20748C239S20748C22__9S20748C21[] = {
  0,
  ABISELECT(80,60),
  0,
  0,
  ABISELECT(40,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev)();
extern void _ZN9S20748C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev)();
extern void _ZN9S20748C24D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN9S20748C242v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C24__9S20748C21[] = {
  ABISELECT(72,56),
  ABISELECT(64,52),
  ABISELECT(152,132),
  0,
  ABISELECT(120,100),
  0,
  ABISELECT(-16,-8),
  ABISELECT(64,52),
  0,
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20748C242v3Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev)();
extern void _ZN9S20748C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev)();
extern void _ZN9S20748C11D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C119S20748C24__9S20748C21[] = {
  ABISELECT(152,132),
  0,
  ABISELECT(120,100),
  0,
  ABISELECT(-16,-8),
  ABISELECT(64,52),
  0,
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C119S20748C24__9S20748C21[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(40,20),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__9S20748C119S20748C24__9S20748C21[] = {
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-152,-132),
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev)();
extern void ABISELECT(_ZThn64_N9S20748C24D1Ev,_ZThn52_N9S20748C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev)();
extern void ABISELECT(_ZThn64_N9S20748C24D0Ev,_ZThn52_N9S20748C24D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C25__9S20748C24__9S20748C21[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-80,-60),
  0,
  ABISELECT(-64,-52),
  ABISELECT(-80,-60),
  -40,
  ABISELECT(-80,-60),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C24__9S20748C21[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(40,20),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C69S20748C14__A1__9S20748C24__9S20748C21[] = {
  0,
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__9S20748C24__9S20748C21[] = {
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  ABISELECT(-152,-132),
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C21[] = {
  0,
  ABISELECT(40,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev)();
extern void _ZN9S20748C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev)();
extern void _ZN9S20748C25D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C25__9S20748C21[] = {
  ABISELECT(8,4),
  ABISELECT(-80,-60),
  0,
  0,
  ABISELECT(-80,-60),
  -40,
  ABISELECT(-80,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C25[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C29S20748C25__A1__9S20748C21[] = {
  ABISELECT(-80,-60),
  0,
  0,
  ABISELECT(-80,-60),
  -40,
  ABISELECT(-80,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__8S20748C29S20748C25__A1__9S20748C21[] = {
  ABISELECT(80,60),
  0,
  ABISELECT(40,20),
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C25__9S20748C21[] = {
  ABISELECT(80,60),
  0,
  ABISELECT(40,20),
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI9S20748C25[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C69S20748C14__A1__9S20748C25__9S20748C21[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20748C25[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__A2__9S20748C21[] = {
  ABISELECT(-16,-8),
  ABISELECT(64,52),
  0,
  ABISELECT(-16,-8),
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__8S20748C2__A2__9S20748C21[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(40,20),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__9S20748C21[] = {
  ABISELECT(-168,-140),
  ABISELECT(-168,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C12__9S20748C21[] = {
  0,
  ABISELECT(168,140),
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C26D1Ev();
extern void _ZN9S20748C26D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C26__9S20748C21[] = {
  ABISELECT(2528,1648),
  ABISELECT(1352,880),
  ABISELECT(1264,836),
  ABISELECT(1200,780),
  ABISELECT(-1328,-900),
  ABISELECT(-1288,-880),
  ABISELECT(-1248,-840),
  ABISELECT(-1328,-900),
  ABISELECT(-1328,-900),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C26D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C26D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C18D1Ev();
extern void _ZN9S20748C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C189S20748C26__9S20748C21[] = {
  ABISELECT(-1288,-880),
  ABISELECT(-1248,-840),
  ABISELECT(-1328,-900),
  ABISELECT(-1328,-900),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C129S20748C189S20748C26__A1__9S20748C21[] = {
  ABISELECT(-1328,-900),
  ABISELECT(-1328,-900),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C129S20748C189S20748C26__A1__9S20748C21[] = {
  0,
  ABISELECT(1328,900),
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C189S20748C26__A1__9S20748C21[] = {
  ABISELECT(-2488,-1660),
  ABISELECT(-2448,-1640),
  ABISELECT(-2488,-1660),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C189S20748C26__A1__9S20748C21[] = {
  0,
  ABISELECT(2488,1660),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C19D1Ev();
extern void _ZN9S20748C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C189S20748C26__9S20748C21[] = {
  ABISELECT(-2496,-1664),
  ABISELECT(-2456,-1644),
  ABISELECT(-2496,-1664),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C199S20748C189S20748C26__A2__9S20748C21[] = {
  ABISELECT(-2496,-1664),
  ABISELECT(-2456,-1644),
  ABISELECT(-2496,-1664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C199S20748C189S20748C26__A2__9S20748C21[] = {
  0,
  ABISELECT(2496,1664),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C199S20748C189S20748C26__9S20748C21[] = {
  0,
  ABISELECT(2496,1664),
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C189S20748C26__9S20748C21[] = {
  0,
  ABISELECT(1328,900),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C189S20748C26__9S20748C21[] = {
  ABISELECT(-2488,-1660),
  ABISELECT(-2448,-1640),
  ABISELECT(-2488,-1660),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C19__9S20748C189S20748C26__9S20748C21[] = {
  ABISELECT(-2496,-1664),
  ABISELECT(-2456,-1644),
  ABISELECT(-2496,-1664),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C29S20748C26__A3__9S20748C21[] = {
  ABISELECT(-2504,-1668),
  ABISELECT(-2424,-1608),
  0,
  ABISELECT(-2504,-1668),
  ABISELECT(-2464,-1648),
  ABISELECT(-2504,-1668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__8S20748C29S20748C26__A3__9S20748C21[] = {
  ABISELECT(2504,1668),
  0,
  ABISELECT(40,20),
  0,
  ABISELECT(2504,1668),
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20748C89S20748C26__9S20748C21[] = {
  ABISELECT(-2472,-1652),
  ABISELECT(1344,876),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C8[0]),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__8S20748C89S20748C26__9S20748C21[] = {
  0,
  ABISELECT(-3816,-2528),
  ABISELECT(-1344,-876),
  (VTBL_ENTRY)&(_ZTI8S20748C8[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__A2__9S20748C26__9S20748C21[] = {
  ABISELECT(1328,900),
  0,
  ABISELECT(40,20),
  0,
  ABISELECT(1328,900),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C26D1Ev,_ZThn760_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C26D0Ev,_ZThn760_N9S20748C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C26__9S20748C21[] = {
  ABISELECT(-2488,-1660),
  ABISELECT(-2448,-1640),
  ABISELECT(-2488,-1660),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C26D1Ev,_ZThn760_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C26D0Ev,_ZThn760_N9S20748C26D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C26D1Ev,_ZThn764_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C26D0Ev,_ZThn764_N9S20748C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C26__9S20748C21[] = {
  ABISELECT(-2496,-1664),
  ABISELECT(-2456,-1644),
  ABISELECT(-2496,-1664),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C26D1Ev,_ZThn764_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C26D0Ev,_ZThn764_N9S20748C26D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1176_N9S20748C26D1Ev,_ZThn768_N9S20748C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev)();
extern void ABISELECT(_ZThn1176_N9S20748C26D0Ev,_ZThn768_N9S20748C26D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__9S20748C26__9S20748C21[] = {
  ABISELECT(-2504,-1668),
  ABISELECT(-2424,-1608),
  ABISELECT(-1176,-768),
  ABISELECT(-2504,-1668),
  ABISELECT(-2464,-1648),
  ABISELECT(-2504,-1668),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S20748C26D1Ev,_ZTv0_n36_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1200_N9S20748C26D1Ev,_ZThn780_N9S20748C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20748C26D0Ev,_ZTv0_n36_N9S20748C26D0Ev)();
extern void ABISELECT(_ZThn1200_N9S20748C26D0Ev,_ZThn780_N9S20748C26D0Ev)() __attribute__((weak));
extern void _ZN9S20748C152v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C15__9S20748C26__9S20748C21[] = {
  0,
  ABISELECT(-1200,-780),
  0,
  ABISELECT(-2448,-1620),
  ABISELECT(152,100),
  ABISELECT(-2488,-1660),
  ABISELECT(-2528,-1680),
  ABISELECT(64,56),
  ABISELECT(-1200,-780),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20748C26D1Ev,_ZTv0_n36_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20748C26D0Ev,_ZTv0_n36_N9S20748C26D0Ev),
  (VTBL_ENTRY)&_ZN9S20748C152v4Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C26D1Ev,_ZTv0_n32_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1264_N9S20748C26D1Ev,_ZThn836_N9S20748C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20748C26D0Ev,_ZTv0_n32_N9S20748C26D0Ev)();
extern void ABISELECT(_ZThn1264_N9S20748C26D0Ev,_ZThn836_N9S20748C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C26__9S20748C21[] = {
  ABISELECT(-1264,-836),
  0,
  ABISELECT(-2512,-1676),
  ABISELECT(88,44),
  ABISELECT(-2592,-1736),
  ABISELECT(-2552,-1716),
  ABISELECT(-1264,-836),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C26D1Ev,_ZTv0_n32_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C26D0Ev,_ZTv0_n32_N9S20748C26D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C26D1Ev,_ZTv0_n28_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1352_N9S20748C26D1Ev,_ZThn880_N9S20748C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C26D0Ev,_ZTv0_n28_N9S20748C26D0Ev)();
extern void ABISELECT(_ZThn1352_N9S20748C26D0Ev,_ZThn880_N9S20748C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__A1__9S20748C26__9S20748C21[] = {
  ABISELECT(-1352,-880),
  ABISELECT(-2640,-1760),
  ABISELECT(-2600,-1720),
  ABISELECT(-2680,-1780),
  ABISELECT(-2680,-1780),
  ABISELECT(-1352,-880),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C26D1Ev,_ZTv0_n28_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C26D0Ev,_ZTv0_n28_N9S20748C26D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C26D1Ev,_ZTvn760_n28_N9S20748C26D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C26D0Ev,_ZTvn760_n28_N9S20748C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__A3__9S20748C26__9S20748C21[] = {
  ABISELECT(-3840,-2540),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2540),
  ABISELECT(-2512,-1640),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C26D1Ev,_ZTvn760_n28_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C26D0Ev,_ZTvn760_n28_N9S20748C26D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C26D1Ev,_ZTvn764_n28_N9S20748C26D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C26D0Ev,_ZTvn764_n28_N9S20748C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__A1__9S20748C26__9S20748C21[] = {
  ABISELECT(-3848,-2544),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2544),
  ABISELECT(-2520,-1644),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C26D1Ev,_ZTvn764_n28_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C26D0Ev,_ZTvn764_n28_N9S20748C26D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20748C8__9S20748C26__9S20748C21[] = {
  ABISELECT(-2472,-1652),
  ABISELECT(1344,876),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__A1__9S20748C26__9S20748C21[] = {
  0,
  ABISELECT(-3816,-2528),
  ABISELECT(-2528,-1648),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C15D1Ev();
extern void _ZN9S20748C15D0Ev();
extern void _ZN9S20748C152v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C15__9S20748C21[] = {
  ABISELECT(-2448,-1620),
  ABISELECT(152,100),
  ABISELECT(-2488,-1660),
  ABISELECT(-2528,-1680),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20748C152v4Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C16D1Ev();
extern void _ZN9S20748C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C169S20748C15__9S20748C21[] = {
  ABISELECT(-2448,-1620),
  ABISELECT(152,100),
  ABISELECT(-2488,-1660),
  ABISELECT(-2528,-1680),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C16D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20748C16D1Ev,_ZThn56_N9S20748C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20748C16D0Ev,_ZThn56_N9S20748C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C169S20748C15__9S20748C21[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-2512,-1676),
  ABISELECT(88,44),
  ABISELECT(-2592,-1736),
  ABISELECT(-2552,-1716),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C169S20748C15__9S20748C21[] = {
  0,
  ABISELECT(2528,1680),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZThn152_N9S20748C16D1Ev,_ZThn100_N9S20748C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev)();
extern void ABISELECT(_ZThn152_N9S20748C16D0Ev,_ZThn100_N9S20748C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C169S20748C15__9S20748C21[] = {
  ABISELECT(-152,-100),
  ABISELECT(-2640,-1760),
  ABISELECT(-2600,-1720),
  ABISELECT(-2680,-1780),
  ABISELECT(-2680,-1780),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C16D1Ev,_ZTvn760_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C16D0Ev,_ZTvn760_n28_N9S20748C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C169S20748C15__9S20748C21[] = {
  ABISELECT(-3840,-2540),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2540),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C16D1Ev,_ZTvn760_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C16D0Ev,_ZTvn760_n28_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C16D1Ev,_ZTvn764_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C16D0Ev,_ZTvn764_n28_N9S20748C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C169S20748C15__9S20748C21[] = {
  ABISELECT(-3848,-2544),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2544),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C16D1Ev,_ZTvn764_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C16D0Ev,_ZTvn764_n28_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C15D1Ev,_ZTv0_n32_N9S20748C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S20748C15D1Ev,_ZThn56_N9S20748C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20748C15D0Ev,_ZTv0_n32_N9S20748C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S20748C15D0Ev,_ZThn56_N9S20748C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C15__9S20748C21[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-2512,-1676),
  ABISELECT(88,44),
  ABISELECT(-2592,-1736),
  ABISELECT(-2552,-1716),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C15D1Ev,_ZTv0_n32_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C15D0Ev,_ZTv0_n32_N9S20748C15D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C15__9S20748C21[] = {
  0,
  ABISELECT(2528,1680),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C15D1Ev,_ZTv0_n28_N9S20748C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20748C15D1Ev,_ZThn100_N9S20748C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C15D0Ev,_ZTv0_n28_N9S20748C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20748C15D0Ev,_ZThn100_N9S20748C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C15__9S20748C21[] = {
  ABISELECT(-152,-100),
  ABISELECT(-2640,-1760),
  ABISELECT(-2600,-1720),
  ABISELECT(-2680,-1780),
  ABISELECT(-2680,-1780),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C15D1Ev,_ZTv0_n28_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C15D0Ev,_ZTv0_n28_N9S20748C15D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C15D1Ev,_ZTvn760_n28_N9S20748C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C15D0Ev,_ZTvn760_n28_N9S20748C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C15__9S20748C21[] = {
  ABISELECT(-3840,-2540),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2540),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C15D1Ev,_ZTvn760_n28_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C15D0Ev,_ZTvn760_n28_N9S20748C15D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C15D1Ev,_ZTvn764_n28_N9S20748C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C15D0Ev,_ZTvn764_n28_N9S20748C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C15__9S20748C21[] = {
  ABISELECT(-3848,-2544),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2544),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C15D1Ev,_ZTvn764_n28_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C15D0Ev,_ZTvn764_n28_N9S20748C15D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C17D1Ev();
extern void _ZN9S20748C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C21[] = {
  ABISELECT(-2512,-1676),
  ABISELECT(88,44),
  ABISELECT(-2592,-1736),
  ABISELECT(-2552,-1716),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C17D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C99S20748C17__9S20748C21[] = {
  ABISELECT(-2552,-1716),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C17__9S20748C21[] = {
  0,
  ABISELECT(2592,1736),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZThn88_N9S20748C17D1Ev,_ZThn44_N9S20748C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev)();
extern void ABISELECT(_ZThn88_N9S20748C17D0Ev,_ZThn44_N9S20748C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C17__9S20748C21[] = {
  ABISELECT(-88,-44),
  ABISELECT(-2640,-1760),
  ABISELECT(-2600,-1720),
  ABISELECT(-2680,-1780),
  ABISELECT(-2680,-1780),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C17D1Ev,_ZTvn760_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C17D0Ev,_ZTvn760_n28_N9S20748C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C17__9S20748C21[] = {
  ABISELECT(-3840,-2540),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2540),
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C17D1Ev,_ZTvn760_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C17D0Ev,_ZTvn760_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C17D1Ev,_ZTvn764_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C17D0Ev,_ZTvn764_n28_N9S20748C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C17__9S20748C21[] = {
  ABISELECT(-3848,-2544),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2544),
  ABISELECT(-1256,-808),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C17D1Ev,_ZTvn764_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C17D0Ev,_ZTvn764_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C18D1Ev();
extern void _ZN9S20748C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C18__A1__9S20748C21[] = {
  ABISELECT(-2640,-1760),
  ABISELECT(-2600,-1720),
  ABISELECT(-2680,-1780),
  ABISELECT(-2680,-1780),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C129S20748C18__A2__9S20748C21[] = {
  ABISELECT(-2680,-1780),
  ABISELECT(-2680,-1780),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C129S20748C18__A2__9S20748C21[] = {
  0,
  ABISELECT(2680,1780),
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__A3__9S20748C21[] = {
  ABISELECT(-3840,-2540),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C18__A3__9S20748C21[] = {
  0,
  ABISELECT(3840,2540),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C19D1Ev();
extern void _ZN9S20748C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__A1__9S20748C21[] = {
  ABISELECT(-3848,-2544),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2544),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C199S20748C18__A4__9S20748C21[] = {
  ABISELECT(-3848,-2544),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2544),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A4__9S20748C21[] = {
  0,
  ABISELECT(3848,2544),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C199S20748C18__A1__9S20748C21[] = {
  0,
  ABISELECT(3848,2544),
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C18__A1__9S20748C21[] = {
  0,
  ABISELECT(2680,1780),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C18__A1__9S20748C21[] = {
  ABISELECT(-3840,-2540),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2540),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C19__9S20748C18__A1__9S20748C21[] = {
  ABISELECT(-3848,-2544),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2544),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__A1__9S20748C21[] = {
  ABISELECT(-3816,-2528),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
static  VTT_ENTRY vtt_S20748C21[] = {
  {&(_ZTV9S20748C21[18]),  18,169},
  {&(_tg__ZTV9S20748C22__9S20748C21[8]),  8,12},
  {&(_tg__ZTV9S20748C239S20748C22__9S20748C21[8]),  8,12},
  {&(_tg__ZTV8S20748C29S20748C239S20748C22__9S20748C21[8]),  8,12},
  {&(_tg__ZTV8S20748C29S20748C239S20748C22__9S20748C21[8]),  8,12},
  {&(_tg__ZTV8S20748C29S20748C239S20748C22__9S20748C21[8]),  8,12},
  {&(_tg__ZTV9S20748C239S20748C22__9S20748C21[8]),  8,12},
  {&(_tg__ZTV9S20748C239S20748C22__9S20748C21[8]),  8,12},
  {&(_tg__ZTV9S20748C22__9S20748C21[8]),  8,12},
  {&(_tg__ZTV9S20748C22__9S20748C21[8]),  8,12},
  {&(_tg__ZTV9S20748C24__9S20748C21[14]),  14,19},
  {&(_tg__ZTV9S20748C119S20748C24__9S20748C21[12]),  12,16},
  {&(_tg__ZTV8S20748C4__9S20748C119S20748C24__9S20748C21[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C119S20748C24__9S20748C21[6]),  6,9},
  {&(_tg__ZTV9S20748C119S20748C24__9S20748C21[12]),  12,16},
  {&(_tg__ZTV9S20748C12__9S20748C119S20748C24__9S20748C21[4]),  4,5},
  {&(_tg__ZTV9S20748C25__9S20748C24__9S20748C21[10]),  10,14},
  {&(_tg__ZTV8S20748C4__9S20748C24__9S20748C21[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C24__9S20748C21[6]),  6,9},
  {&(_tg__ZTV8S20748C69S20748C14__A1__9S20748C24__9S20748C21[3]),  3,4},
  {&(_tg__ZTV9S20748C24__9S20748C21[14]),  14,19},
  {&(_tg__ZTV9S20748C12__9S20748C24__9S20748C21[4]),  4,5},
  {&(_ZTV9S20748C21[18]),  18,169},
  {&(_ZTV9S20748C21[18]),  18,169},
  {&(_ZTV9S20748C21[37]),  37,169},
  {&(_ZTV9S20748C21[52]),  52,169},
  {&(_ZTV9S20748C21[59]),  59,169},
  {&(_ZTV9S20748C21[37]),  37,169},
  {&(_ZTV9S20748C21[64]),  64,169},
  {&(_ZTV9S20748C21[78]),  78,169},
  {&(_ZTV9S20748C21[86]),  86,169},
  {&(_ZTV9S20748C21[94]),  94,169},
  {&(_ZTV9S20748C21[105]),  105,169},
  {&(_ZTV9S20748C21[123]),  123,169},
  {&(_ZTV9S20748C21[135]),  135,169},
  {&(_ZTV9S20748C21[145]),  145,169},
  {&(_ZTV9S20748C21[153]),  153,169},
  {&(_ZTV9S20748C21[161]),  161,169},
  {&(_ZTV9S20748C21[113]),  113,169},
  {&(_ZTV9S20748C21[168]),  168,169},
  {&(_tg__ZTV8S20748C4__9S20748C21[5]),  5,8},
  {&(_tg__ZTV8S20748C4__9S20748C21[5]),  5,8},
  {&(_tg__ZTV9S20748C25__9S20748C21[9]),  9,13},
  {&(_tg__ZTV8S20748C29S20748C25__A1__9S20748C21[8]),  8,12},
  {&(_tg__ZTV8S20748C4__8S20748C29S20748C25__A1__9S20748C21[6]),  6,9},
  {&(_tg__ZTV8S20748C4__8S20748C29S20748C25__A1__9S20748C21[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C25__9S20748C21[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C25__9S20748C21[6]),  6,9},
  {&(_tg__ZTV8S20748C69S20748C14__A1__9S20748C25__9S20748C21[3]),  3,4},
  {&(_tg__ZTV8S20748C2__A2__9S20748C21[8]),  8,12},
  {&(_tg__ZTV8S20748C4__8S20748C2__A2__9S20748C21[6]),  6,9},
  {&(_tg__ZTV8S20748C4__8S20748C2__A2__9S20748C21[6]),  6,9},
  {&(_tg__ZTV9S20748C12__9S20748C21[4]),  4,5},
  {&(_tg__ZTV8S20748C6__9S20748C12__9S20748C21[3]),  3,4},
  {&(_tg__ZTV9S20748C26__9S20748C21[11]),  11,14},
  {&(_tg__ZTV9S20748C189S20748C26__9S20748C21[6]),  6,9},
  {&(_tg__ZTV9S20748C129S20748C189S20748C26__A1__9S20748C21[4]),  4,5},
  {&(_tg__ZTV8S20748C6__9S20748C129S20748C189S20748C26__A1__9S20748C21[3]),  3,4},
  {&(_tg__ZTV8S20748C49S20748C189S20748C26__A1__9S20748C21[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C189S20748C26__A1__9S20748C21[3]),  3,4},
  {&(_tg__ZTV9S20748C199S20748C189S20748C26__9S20748C21[5]),  5,8},
  {&(_tg__ZTV8S20748C49S20748C199S20748C189S20748C26__A2__9S20748C21[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C199S20748C189S20748C26__A2__9S20748C21[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C199S20748C189S20748C26__9S20748C21[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C189S20748C26__9S20748C21[3]),  3,4},
  {&(_tg__ZTV8S20748C4__9S20748C189S20748C26__9S20748C21[5]),  5,8},
  {&(_tg__ZTV9S20748C19__9S20748C189S20748C26__9S20748C21[5]),  5,8},
  {&(_tg__ZTV8S20748C29S20748C26__A3__9S20748C21[8]),  8,12},
  {&(_tg__ZTV8S20748C4__8S20748C29S20748C26__A3__9S20748C21[6]),  6,9},
  {&(_tg__ZTV8S20748C4__8S20748C29S20748C26__A3__9S20748C21[6]),  6,9},
  {&(_tg__ZTV8S20748C89S20748C26__9S20748C21[4]),  4,4},
  {&(_tg__ZTV8S20748C9__8S20748C89S20748C26__9S20748C21[4]),  4,5},
  {&(_tg__ZTV8S20748C4__A2__9S20748C26__9S20748C21[6]),  6,9},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C26__9S20748C21[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C26__9S20748C21[5]),  5,8},
  {&(_tg__ZTV8S20748C2__9S20748C26__9S20748C21[8]),  8,12},
  {&(_tg__ZTV8S20748C4__A2__9S20748C26__9S20748C21[6]),  6,9},
  {&(_tg__ZTV9S20748C15__9S20748C26__9S20748C21[10]),  10,14},
  {&(_tg__ZTV9S20748C17__9S20748C26__9S20748C21[8]),  8,11},
  {&(_tg__ZTV9S20748C18__A1__9S20748C26__9S20748C21[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__A3__9S20748C26__9S20748C21[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__A1__9S20748C26__9S20748C21[5]),  5,8},
  {&(_tg__ZTV8S20748C8__9S20748C26__9S20748C21[4]),  4,4},
  {&(_tg__ZTV8S20748C9__A1__9S20748C26__9S20748C21[4]),  4,5},
  {&(_tg__ZTV9S20748C15__9S20748C21[7]),  7,11},
  {&(_tg__ZTV9S20748C169S20748C15__9S20748C21[7]),  7,10},
  {&(_tg__ZTV9S20748C17__9S20748C169S20748C15__9S20748C21[8]),  8,11},
  {&(_tg__ZTV8S20748C6__9S20748C169S20748C15__9S20748C21[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C169S20748C15__9S20748C21[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C169S20748C15__9S20748C21[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C169S20748C15__9S20748C21[5]),  5,8},
  {&(_tg__ZTV9S20748C17__9S20748C15__9S20748C21[8]),  8,11},
  {&(_tg__ZTV8S20748C6__9S20748C15__9S20748C21[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C15__9S20748C21[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C15__9S20748C21[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C15__9S20748C21[5]),  5,8},
  {&(_tg__ZTV9S20748C17__9S20748C21[6]),  6,9},
  {&(_tg__ZTV8S20748C99S20748C17__9S20748C21[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C17__9S20748C21[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C17__9S20748C21[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C17__9S20748C21[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C17__9S20748C21[5]),  5,8},
  {&(_tg__ZTV9S20748C18__A1__9S20748C21[6]),  6,9},
  {&(_tg__ZTV9S20748C129S20748C18__A2__9S20748C21[4]),  4,5},
  {&(_tg__ZTV8S20748C6__9S20748C129S20748C18__A2__9S20748C21[3]),  3,4},
  {&(_tg__ZTV8S20748C49S20748C18__A3__9S20748C21[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C18__A3__9S20748C21[3]),  3,4},
  {&(_tg__ZTV9S20748C199S20748C18__A1__9S20748C21[5]),  5,8},
  {&(_tg__ZTV8S20748C49S20748C199S20748C18__A4__9S20748C21[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A4__9S20748C21[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C199S20748C18__A1__9S20748C21[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C18__A1__9S20748C21[3]),  3,4},
  {&(_tg__ZTV8S20748C4__9S20748C18__A1__9S20748C21[5]),  5,8},
  {&(_tg__ZTV9S20748C19__9S20748C18__A1__9S20748C21[5]),  5,8},
  {&(_tg__ZTV8S20748C9__A1__9S20748C21[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20748C21[];
extern  VTBL_ENTRY _ZTV9S20748C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C21[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20748C17D0Ev,_ZThn44_N9S20748C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20748C17D1Ev,_ZThn44_N9S20748C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C15D0Ev,_ZTv0_n28_N9S20748C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20748C15D0Ev,_ZThn100_N9S20748C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C15D1Ev,_ZTv0_n28_N9S20748C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20748C15D1Ev,_ZThn100_N9S20748C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C15D0Ev,_ZTv0_n32_N9S20748C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C15D0Ev,_ZThn56_N9S20748C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C15D1Ev,_ZTv0_n32_N9S20748C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C15D1Ev,_ZThn56_N9S20748C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20748C16D0Ev,_ZThn100_N9S20748C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20748C16D1Ev,_ZThn100_N9S20748C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C16D0Ev,_ZThn56_N9S20748C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C16D1Ev,_ZThn56_N9S20748C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C26D0Ev,_ZTv0_n28_N9S20748C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N9S20748C26D0Ev,_ZThn880_N9S20748C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C26D1Ev,_ZTv0_n28_N9S20748C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N9S20748C26D1Ev,_ZThn880_N9S20748C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C26D0Ev,_ZTv0_n32_N9S20748C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1264_N9S20748C26D0Ev,_ZThn836_N9S20748C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C26D1Ev,_ZTv0_n32_N9S20748C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1264_N9S20748C26D1Ev,_ZThn836_N9S20748C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20748C26D0Ev,_ZTv0_n36_N9S20748C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N9S20748C26D0Ev,_ZThn780_N9S20748C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20748C26D1Ev,_ZTv0_n36_N9S20748C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N9S20748C26D1Ev,_ZThn780_N9S20748C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S20748C26D0Ev,_ZThn768_N9S20748C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S20748C26D1Ev,_ZThn768_N9S20748C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev), // 
  (VTBL_ENTRY)_ZN9S20748C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev), // 
  (VTBL_ENTRY)_ZN9S20748C25D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev), // 
  (VTBL_ENTRY)_ZN9S20748C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev), // 
  (VTBL_ENTRY)_ZN9S20748C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C24D0Ev,_ZThn52_N9S20748C24D0Ev),
  (VTBL_ENTRY)_ZN9S20748C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C24D1Ev,_ZThn52_N9S20748C24D1Ev),
  (VTBL_ENTRY)_ZN9S20748C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C23D0Ev,_ZTv0_n24_N9S20748C23D0Ev), // 
  (VTBL_ENTRY)_ZN9S20748C23D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C23D1Ev,_ZTv0_n24_N9S20748C23D1Ev), // 
  (VTBL_ENTRY)_ZN9S20748C23D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C22D0Ev,_ZTv0_n24_N9S20748C22D0Ev), // 
  (VTBL_ENTRY)_ZN9S20748C22D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C22D1Ev,_ZTv0_n24_N9S20748C22D1Ev), // 
  (VTBL_ENTRY)_ZN9S20748C22D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C21D0Ev,_ZTv0_n28_N9S20748C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2680_N9S20748C21D0Ev,_ZThn1780_N9S20748C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C21D1Ev,_ZTv0_n28_N9S20748C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2680_N9S20748C21D1Ev,_ZThn1780_N9S20748C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C21D0Ev,_ZTv0_n32_N9S20748C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N9S20748C21D0Ev,_ZThn1736_N9S20748C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C21D1Ev,_ZTv0_n32_N9S20748C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N9S20748C21D1Ev,_ZThn1736_N9S20748C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20748C21D0Ev,_ZTv0_n36_N9S20748C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2528_N9S20748C21D0Ev,_ZThn1680_N9S20748C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20748C21D1Ev,_ZTv0_n36_N9S20748C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2528_N9S20748C21D1Ev,_ZThn1680_N9S20748C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20748C21D0Ev,_ZTv0_n48_N9S20748C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S20748C21D0Ev,_ZThn900_N9S20748C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20748C21D1Ev,_ZTv0_n48_N9S20748C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S20748C21D1Ev,_ZThn900_N9S20748C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2504_N9S20748C21D0Ev,_ZThn1668_N9S20748C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20748C21D0Ev,_ZThn60_N9S20748C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20748C21D0Ev,_ZThn8_N9S20748C21D0Ev),
  (VTBL_ENTRY)_ZN9S20748C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2504_N9S20748C21D1Ev,_ZThn1668_N9S20748C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20748C21D1Ev,_ZThn60_N9S20748C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20748C21D1Ev,_ZThn8_N9S20748C21D1Ev),
  (VTBL_ENTRY)_ZN9S20748C21D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20748C21 = {  "S20748C21", // class name
  bases_S20748C21, 49,
  &(vtc_S20748C21[0]), // expected_vtbl_contents
  &(vtt_S20748C21[0]), // expected_vtt_contents
  ABISELECT(3952,2592), // object size
  NSPAIRA(_ZTI9S20748C21),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20748C21),169, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20748C21),115, //virtual table table var
  36, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20748C1  : virtual S20748C2 , S20748C7 , virtual S20748C15 , virtual S20748C21 , S19657C2_nt {
  ~S20748C1(); // tgen
  S20748C1(); // tgen
};
//SIG(1 S20748C1) C1{ VBC2{ VBC3{ m} VBC4{ VBC5{ m FL[5]} VBC6{ v1} BC3 vd} v2} BC7{ VBC8{ VBC9{ BC6 VBC5 BC3 Fp[10]}} BC6 VBC10{ m FL[4]} VBC11{ VBC6 VBC4 VBC10 VBC2 VBC12{ VBC6 FC9[9]} vd} BC13{ BC14{ BC5 BC6} BC9}} VBC15{ BC16{ VBC17{ VBC6 BC9 VBC18{ VBC3 BC12 BC4 BC19{ BC4 vd}} vd} BC20{ BC14 FD}} vd v3} VBC21{ VBC4 BC22{ BC23{ BC2 vd} vd Fc} BC24{ VBC25{ VBC5 BC2 VBC14} BC11 v4} VBC26{ BC18 BC2 VBC15 BC8 BC27{ m} Fs} v5 Fl Fp} BC28{ m Fc}}


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

static void Test_S20748C1()
{
  extern Class_Descriptor cd_S20748C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(258,675)];
    init_test(&cd_S20748C1, buf);
    S20748C1 *dp, &lv = *(dp=new (buf) S20748C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4112,2696), "sizeof(S20748C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20748C1)");
    /*is_ambiguous_... S20748C1::S20748C2 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*), 0, "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C18*), 0, "S20748C1");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*)(S20748C23*)(S20748C22*)(S20748C21*), 0, "S20748C1");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*)(S20748C25*), 0, "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C18*)(S20748C26*), 0, "S20748C1");
    /*is_ambiguous_... S20748C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C2*)(S20748C26*), 0, "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*), ABISELECT(152,96), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C9 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C9*), ABISELECT(152,96), "S20748C1");
    check_base_class_offset(lv, (S20997C6*)(S20748C9*)(S20748C13*)(S20748C7*), ABISELECT(152,96), "S20748C1");
    check_base_class_offset(lv, (S20997C6*)(S20748C9*)(S20748C17*), ABISELECT(152,96), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C18*), ABISELECT(152,96), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(152,96), "S20748C1");
    /*is_ambiguous_... S20748C25::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C25*), ABISELECT(152,96), "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C18*)(S20748C26*), ABISELECT(152,96), "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C4*)(S20748C19*)(S20748C18*)(S20748C26*), ABISELECT(152,96), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C11 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C11*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C12 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C12*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C17::S20748C6 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C17*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C12*)(S20748C18*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C18*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(320,216), "S20748C1");
    check_base_class_offset(lv, (S20748C6*)(S20748C11*)(S20748C24*)(S20748C21*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C12*)(S20748C18*)(S20748C26*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C18*)(S20748C26*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C4*)(S20748C19*)(S20748C18*)(S20748C26*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C2 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C2*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C11 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C11*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C21::S20748C4 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C21*), ABISELECT(320,216), "S20748C1");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*)(S20748C23*)(S20748C22*)(S20748C21*), ABISELECT(320,216), "S20748C1");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*)(S20748C25*), ABISELECT(320,216), "S20748C1");
    check_base_class_offset(lv, (S20748C4*)(S20748C11*)(S20748C24*)(S20748C21*), ABISELECT(320,216), "S20748C1");
    check_base_class_offset(lv, (S20748C4*)(S20748C2*)(S20748C26*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C2 */ AMB_check_base_class_offset(lv, (S20748C2*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C11 */ AMB_check_base_class_offset(lv, (S20748C2*)(S20748C11*), ABISELECT(320,216), "S20748C1");
    check_base_class_offset(lv, (S20748C2*)(S20748C11*)(S20748C24*)(S20748C21*), ABISELECT(320,216), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C9 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C9*), ABISELECT(200,140), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C9 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C9*), ABISELECT(200,140), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C8 */ AMB_check_base_class_offset(lv, (S20748C9*)(S20748C8*), ABISELECT(200,140), "S20748C1");
    check_base_class_offset(lv, (S20748C9*)(S20748C8*)(S20748C26*), ABISELECT(200,140), "S20748C1");
    check_base_class_offset(lv, (S20748C8*)(S20748C7*), ABISELECT(192,136), "S20748C1");
    /*is_ambiguous_... S20748C7::S20748C6 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C7*), 0, "S20748C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S20748C7*), ABISELECT(288,184), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C11 */ AMB_check_base_class_offset(lv, (S10258C6_nt*)(S20748C11*), ABISELECT(288,184), "S20748C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S20748C11*)(S20748C24*)(S20748C21*), ABISELECT(288,184), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C11 */ AMB_check_base_class_offset(lv, (S20748C12*)(S20748C11*), ABISELECT(328,220), "S20748C1");
    check_base_class_offset(lv, (S20748C12*)(S20748C11*)(S20748C24*)(S20748C21*), ABISELECT(328,220), "S20748C1");
    check_base_class_offset(lv, (S20748C11*)(S20748C7*), ABISELECT(320,216), "S20748C1");
    check_base_class_offset(lv, (S20997C6*)(S20748C14*)(S20748C13*)(S20748C7*), ABISELECT(16,8), "S20748C1");
    check_base_class_offset(lv, (S20748C6*)(S20748C14*)(S20748C13*)(S20748C7*), ABISELECT(8,4), "S20748C1");
    check_base_class_offset(lv, (S20748C14*)(S20748C13*)(S20748C7*), ABISELECT(8,4), "S20748C1");
    check_base_class_offset(lv, (S20748C6*)(S20748C9*)(S20748C13*)(S20748C7*), ABISELECT(56,48), "S20748C1");
    check_base_class_offset(lv, (S4227C37*)(S20748C9*)(S20748C13*)(S20748C7*), ABISELECT(56,48), "S20748C1");
    check_base_class_offset(lv, (S20748C9*)(S20748C13*)(S20748C7*), ABISELECT(56,48), "S20748C1");
    check_base_class_offset(lv, (S20748C13*)(S20748C7*), ABISELECT(8,4), "S20748C1");
    check_base_class_offset(lv, (S20748C7*), 0, "S20748C1");
    check_base_class_offset(lv, (S20748C6*)(S20748C9*)(S20748C17*), ABISELECT(1552,1036), "S20748C1");
    check_base_class_offset(lv, (S4227C37*)(S20748C9*)(S20748C17*), ABISELECT(1552,1036), "S20748C1");
    check_base_class_offset(lv, (S20748C9*)(S20748C17*), ABISELECT(1552,1036), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C12*)(S20748C18*), ABISELECT(1640,1080), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C18*), ABISELECT(2800,1840), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C18*), ABISELECT(2800,1840), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(2808,1844), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C19*)(S20748C18*), ABISELECT(2808,1844), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C19*)(S20748C18*), ABISELECT(2808,1844), "S20748C1");
    check_base_class_offset(lv, (S20748C18*)(S20748C17*), ABISELECT(1640,1080), "S20748C1");
    check_base_class_offset(lv, (S20748C17*)(S20748C16*)(S20748C15*), ABISELECT(1552,1036), "S20748C1");
    check_base_class_offset(lv, (S20997C6*)(S20748C14*)(S20748C20*)(S20748C16*)(S20748C15*), ABISELECT(1496,984), "S20748C1");
    check_base_class_offset(lv, (S20748C6*)(S20748C14*)(S20748C20*)(S20748C16*)(S20748C15*), ABISELECT(1488,980), "S20748C1");
    check_base_class_offset(lv, (S20748C14*)(S20748C20*)(S20748C16*)(S20748C15*), ABISELECT(1488,980), "S20748C1");
    check_base_class_offset(lv, (S20748C20*)(S20748C16*)(S20748C15*), ABISELECT(1488,980), "S20748C1");
    check_base_class_offset(lv, (S20748C16*)(S20748C15*), ABISELECT(1488,980), "S20748C1");
    check_base_class_offset(lv, (S20748C15*), ABISELECT(1488,980), "S20748C1");
    check_base_class_offset(lv, (S20748C15*)(S20748C26*), ABISELECT(1488,980), "S20748C1");
    check_base_class_offset(lv, (S20748C2*)(S20748C23*)(S20748C22*)(S20748C21*), ABISELECT(2816,1848), "S20748C1");
    check_base_class_offset(lv, (S20748C23*)(S20748C22*)(S20748C21*), ABISELECT(2816,1848), "S20748C1");
    check_base_class_offset(lv, (S20748C22*)(S20748C21*), ABISELECT(2816,1848), "S20748C1");
    check_base_class_offset(lv, (S20748C2*)(S20748C25*), ABISELECT(2856,1868), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C14 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20748C14*), ABISELECT(2872,1876), "S20748C1");
    /*is_ambiguous_... S20748C1::S20748C14 */ AMB_check_base_class_offset(lv, (S20748C6*)(S20748C14*), ABISELECT(2864,1872), "S20748C1");
    check_base_class_offset(lv, (S20748C14*)(S20748C25*), ABISELECT(2864,1872), "S20748C1");
    check_base_class_offset(lv, (S20748C25*)(S20748C24*)(S20748C21*), ABISELECT(2856,1868), "S20748C1");
    check_base_class_offset(lv, (S20748C11*)(S20748C24*)(S20748C21*), ABISELECT(2832,1856), "S20748C1");
    check_base_class_offset(lv, (S20748C24*)(S20748C21*), ABISELECT(2832,1856), "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C12*)(S20748C18*)(S20748C26*), ABISELECT(2912,1916), "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C18*)(S20748C26*), ABISELECT(4072,2676), "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C18*)(S20748C26*), ABISELECT(4072,2676), "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20748C4*)(S20748C19*)(S20748C18*)(S20748C26*), ABISELECT(4080,2680), "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C4*)(S20748C19*)(S20748C18*)(S20748C26*), ABISELECT(4080,2680), "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C19*)(S20748C18*)(S20748C26*), ABISELECT(4080,2680), "S20748C1");
    /*is_ambiguous_... S20748C26::S20748C18 */ AMB_check_base_class_offset(lv, (S20748C18*)(S20748C26*), ABISELECT(2912,1916), "S20748C1");
    check_base_class_offset(lv, (S20748C2*)(S20748C26*), ABISELECT(4088,2684), "S20748C1");
    check_base_class_offset(lv, (S20748C8*)(S20748C26*), ABISELECT(4096,2688), "S20748C1");
    check_base_class_offset(lv, (S4227C27*)(S20748C26*), ABISELECT(2912,1916), "S20748C1");
    check_base_class_offset(lv, (S20748C26*)(S20748C21*), ABISELECT(2912,1916), "S20748C1");
    check_base_class_offset(lv, (S20748C21*), ABISELECT(2816,1848), "S20748C1");
    check_base_class_offset(lv, (S19657C2_nt*), ABISELECT(144,92), "S20748C1");
    test_class_info(&lv, &cd_S20748C1);
    dp->~S20748C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20748C1(Test_S20748C1, "S20748C1", ABISELECT(4112,2696));

#else // __cplusplus

extern void _ZN8S20748C1C1Ev();
extern void _ZN8S20748C1D1Ev();
Name_Map name_map_S20748C1[] = {
  NSPAIR(_ZN8S20748C1C1Ev),
  NSPAIR(_ZN8S20748C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
extern Class_Descriptor cd_S20748C8;
extern VTBL_ENTRY _ZTI8S20748C8[];
extern  VTBL_ENTRY _ZTV8S20748C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C8[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S20748C11;
extern VTBL_ENTRY _ZTI9S20748C11[];
extern  VTBL_ENTRY _ZTV9S20748C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C11[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
extern Class_Descriptor cd_S20748C13;
extern VTBL_ENTRY _ZTI9S20748C13[];
extern  VTBL_ENTRY _ZTV9S20748C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C13[];
extern Class_Descriptor cd_S20748C7;
extern VTBL_ENTRY _ZTI8S20748C7[];
extern  VTBL_ENTRY _ZTV8S20748C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C7[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C9;
extern VTBL_ENTRY _ZTI8S20748C9[];
extern  VTBL_ENTRY _ZTV8S20748C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C9[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C19;
extern VTBL_ENTRY _ZTI9S20748C19[];
extern  VTBL_ENTRY _ZTV9S20748C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C19[];
extern Class_Descriptor cd_S20748C18;
extern VTBL_ENTRY _ZTI9S20748C18[];
extern  VTBL_ENTRY _ZTV9S20748C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C18[];
extern Class_Descriptor cd_S20748C17;
extern VTBL_ENTRY _ZTI9S20748C17[];
extern  VTBL_ENTRY _ZTV9S20748C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C17[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
extern Class_Descriptor cd_S20748C20;
extern VTBL_ENTRY _ZTI9S20748C20[];
extern  VTBL_ENTRY _ZTV9S20748C20[];
extern Class_Descriptor cd_S20748C16;
extern VTBL_ENTRY _ZTI9S20748C16[];
extern  VTBL_ENTRY _ZTV9S20748C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C16[];
extern Class_Descriptor cd_S20748C15;
extern VTBL_ENTRY _ZTI9S20748C15[];
extern  VTBL_ENTRY _ZTV9S20748C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C15[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20748C23;
extern VTBL_ENTRY _ZTI9S20748C23[];
extern  VTBL_ENTRY _ZTV9S20748C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C23[];
extern Class_Descriptor cd_S20748C22;
extern VTBL_ENTRY _ZTI9S20748C22[];
extern  VTBL_ENTRY _ZTV9S20748C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C22[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20748C6;
extern VTBL_ENTRY _ZTI8S20748C6[];
extern  VTBL_ENTRY _ZTV8S20748C6[];
extern Class_Descriptor cd_S20748C14;
extern VTBL_ENTRY _ZTI9S20748C14[];
extern  VTBL_ENTRY _ZTV9S20748C14[];
extern Class_Descriptor cd_S20748C25;
extern VTBL_ENTRY _ZTI9S20748C25[];
extern  VTBL_ENTRY _ZTV9S20748C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C25[];
extern Class_Descriptor cd_S20748C11;
extern VTBL_ENTRY _ZTI9S20748C11[];
extern  VTBL_ENTRY _ZTV9S20748C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C11[];
extern Class_Descriptor cd_S20748C24;
extern VTBL_ENTRY _ZTI9S20748C24[];
extern  VTBL_ENTRY _ZTV9S20748C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C24[];
extern Class_Descriptor cd_S20748C12;
extern VTBL_ENTRY _ZTI9S20748C12[];
extern  VTBL_ENTRY _ZTV9S20748C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20748C4;
extern VTBL_ENTRY _ZTI8S20748C4[];
extern  VTBL_ENTRY _ZTV8S20748C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C4[];
extern Class_Descriptor cd_S20748C19;
extern VTBL_ENTRY _ZTI9S20748C19[];
extern  VTBL_ENTRY _ZTV9S20748C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C19[];
extern Class_Descriptor cd_S20748C18;
extern VTBL_ENTRY _ZTI9S20748C18[];
extern  VTBL_ENTRY _ZTV9S20748C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C18[];
extern Class_Descriptor cd_S20748C2;
extern VTBL_ENTRY _ZTI8S20748C2[];
extern  VTBL_ENTRY _ZTV8S20748C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C2[];
extern Class_Descriptor cd_S20748C8;
extern VTBL_ENTRY _ZTI8S20748C8[];
extern  VTBL_ENTRY _ZTV8S20748C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C8[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S20748C26;
extern VTBL_ENTRY _ZTI9S20748C26[];
extern  VTBL_ENTRY _ZTV9S20748C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C26[];
extern Class_Descriptor cd_S20748C21;
extern VTBL_ENTRY _ZTI9S20748C21[];
extern  VTBL_ENTRY _ZTV9S20748C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20748C21[];
extern Class_Descriptor cd_S19657C2_nt;
extern VTBL_ENTRY _ZTI11S19657C2_nt[];
static Base_Class bases_S20748C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20748C6,    ABISELECT(320,216), //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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20748C4,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20748C2,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20748C6,    ABISELECT(200,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(200,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
    8, //immediately_derived
  0, 0},
  {&cd_S20748C9,    ABISELECT(200,140), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20748C8,    ABISELECT(192,136), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20748C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    21, //immediately_derived
  0, 0},
  {&cd_S10258C6_nt,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20748C12,    ABISELECT(328,220), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20748C11,    ABISELECT(320,216), //bcp->offset
    39, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20748C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20748C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20748C6,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20748C9,    ABISELECT(56,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20748C13,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20748C7,    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
    46, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20748C6,    ABISELECT(1552,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1552,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20748C9,    ABISELECT(1552,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20748C12,    ABISELECT(1640,1080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2800,1840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(2800,1840), //bcp->offset
    95, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2808,1844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(2808,1844), //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
    11, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20748C19,    ABISELECT(2808,1844), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20748C18,    ABISELECT(1640,1080), //bcp->offset
    85, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S20748C17,    ABISELECT(1552,1036), //bcp->offset
    74, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1496,984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20748C6,    ABISELECT(1488,980), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20748C14,    ABISELECT(1488,980), //bcp->offset
    -1, //bcp->virtual_function_table_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
    36, //immediately_derived
  0, 0},
  {&cd_S20748C20,    ABISELECT(1488,980), //bcp->offset
    -1, //bcp->virtual_function_table_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
    37, //immediately_derived
  0, 0},
  {&cd_S20748C16,    ABISELECT(1488,980), //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
    20, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20748C15,    ABISELECT(1488,980), //bcp->offset
    60, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20748C2,    ABISELECT(2816,1848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20748C23,    ABISELECT(2816,1848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20748C22,    ABISELECT(2816,1848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S20748C2,    ABISELECT(2856,1868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(2872,1876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20748C6,    ABISELECT(2864,1872), //bcp->offset
    170, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20748C14,    ABISELECT(2864,1872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S20748C25,    ABISELECT(2856,1868), //bcp->offset
    156, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S20748C11,    ABISELECT(2832,1856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20748C24,    ABISELECT(2832,1856), //bcp->offset
    137, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S20748C12,    ABISELECT(2912,1916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(4072,2676), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(4072,2676), //bcp->offset
    190, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(4080,2680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C4,    ABISELECT(4080,2680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S20748C19,    ABISELECT(4080,2680), //bcp->offset
    198, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20748C18,    ABISELECT(2912,1916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S20748C2,    ABISELECT(4088,2684), //bcp->offset
    206, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S20748C8,    ABISELECT(4096,2688), //bcp->offset
    218, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S4227C27,    ABISELECT(2912,1916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20748C26,    ABISELECT(2912,1916), //bcp->offset
    174, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    60, //immediately_derived
  0, 1},
  {&cd_S20748C21,    ABISELECT(2816,1848), //bcp->offset
    111, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19657C2_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20748C1[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C1D1Ev();
extern void _ZN8S20748C1D0Ev();
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C1D1Ev,_ZTv0_n24_N8S20748C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S20748C1D1Ev,_ZThn216_N8S20748C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C1D0Ev,_ZTv0_n24_N8S20748C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S20748C1D0Ev,_ZThn216_N8S20748C1D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S20748C1D1Ev,_ZTv0_n36_N8S20748C1D1Ev)();
extern void ABISELECT(_ZThn1488_N8S20748C1D1Ev,_ZThn980_N8S20748C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20748C1D0Ev,_ZTv0_n36_N8S20748C1D0Ev)();
extern void ABISELECT(_ZThn1488_N8S20748C1D0Ev,_ZThn980_N8S20748C1D0Ev)() __attribute__((weak));
extern void _ZN9S20748C152v4Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S20748C1D1Ev,_ZTv0_n32_N8S20748C1D1Ev)();
extern void ABISELECT(_ZThn1552_N8S20748C1D1Ev,_ZThn1036_N8S20748C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20748C1D0Ev,_ZTv0_n32_N8S20748C1D0Ev)();
extern void ABISELECT(_ZThn1552_N8S20748C1D0Ev,_ZThn1036_N8S20748C1D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20748C1D1Ev,_ZTv0_n28_N8S20748C1D1Ev)();
extern void ABISELECT(_ZThn1640_N8S20748C1D1Ev,_ZThn1080_N8S20748C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20748C1D0Ev,_ZTv0_n28_N8S20748C1D0Ev)();
extern void ABISELECT(_ZThn1640_N8S20748C1D0Ev,_ZThn1080_N8S20748C1D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20748C1D1Ev,_ZTvn760_n28_N8S20748C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20748C1D0Ev,_ZTvn760_n28_N8S20748C1D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20748C1D1Ev,_ZTvn764_n28_N8S20748C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20748C1D0Ev,_ZTvn764_n28_N8S20748C1D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C1D1Ev,_ZTv0_n24_N8S20748C1D1Ev)();
extern void ABISELECT(_ZThn2816_N8S20748C1D1Ev,_ZThn1848_N8S20748C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C1D0Ev,_ZTv0_n24_N8S20748C1D0Ev)();
extern void ABISELECT(_ZThn2816_N8S20748C1D0Ev,_ZThn1848_N8S20748C1D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN9S20748C212v5Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C1D1Ev,_ZTv0_n24_N8S20748C1D1Ev)();
extern void ABISELECT(_ZThn2832_N8S20748C1D1Ev,_ZThn1856_N8S20748C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C1D0Ev,_ZTv0_n24_N8S20748C1D0Ev)();
extern void ABISELECT(_ZThn2832_N8S20748C1D0Ev,_ZThn1856_N8S20748C1D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN9S20748C242v3Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C1D1Ev,_ZTv0_n24_N8S20748C1D1Ev)();
extern void ABISELECT(_ZThn2856_N8S20748C1D1Ev,_ZThn1868_N8S20748C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C1D0Ev,_ZTv0_n24_N8S20748C1D0Ev)();
extern void ABISELECT(_ZThn2856_N8S20748C1D0Ev,_ZThn1868_N8S20748C1D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n96_N8S20748C1D1Ev,_ZTv0_n48_N8S20748C1D1Ev)();
extern void ABISELECT(_ZThn2912_N8S20748C1D1Ev,_ZThn1916_N8S20748C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20748C1D0Ev,_ZTv0_n48_N8S20748C1D0Ev)();
extern void ABISELECT(_ZThn2912_N8S20748C1D0Ev,_ZThn1916_N8S20748C1D0Ev)() __attribute__((weak));
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n96_N8S20748C1D1Ev,_ZTvn760_n48_N8S20748C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n96_N8S20748C1D0Ev,_ZTvn760_n48_N8S20748C1D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n96_N8S20748C1D1Ev,_ZTvn764_n48_N8S20748C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n96_N8S20748C1D0Ev,_ZTvn764_n48_N8S20748C1D0Ev)();
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C1D1Ev,_ZTv0_n24_N8S20748C1D1Ev)();
extern void ABISELECT(_ZThn4088_N8S20748C1D1Ev,_ZThn2684_N8S20748C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C1D0Ev,_ZTv0_n24_N8S20748C1D0Ev)();
extern void ABISELECT(_ZThn4088_N8S20748C1D0Ev,_ZThn2684_N8S20748C1D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY vtc_S20748C1[] = {
  ABISELECT(2912,1916),
  ABISELECT(2864,1872),
  ABISELECT(2856,1868),
  ABISELECT(2816,1848),
  ABISELECT(1640,1080),
  ABISELECT(1552,1036),
  ABISELECT(1488,980),
  ABISELECT(328,220),
  0,
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(288,184),
  ABISELECT(152,96),
  ABISELECT(200,140),
  ABISELECT(192,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C1D0Ev,
  ABISELECT(144,92),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  ABISELECT(96,48),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  -40,
  ABISELECT(8,4),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  0,
  ABISELECT(-48,-44),
  ABISELECT(-200,-140),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-320,-216),
  ABISELECT(-320,-216),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C1D1Ev,_ZTv0_n24_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C1D0Ev,_ZTv0_n24_N8S20748C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-328,-220),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  0,
  ABISELECT(-1488,-980),
  0,
  ABISELECT(-1488,-980),
  ABISELECT(152,100),
  ABISELECT(-1336,-884),
  ABISELECT(-1168,-764),
  ABISELECT(64,56),
  ABISELECT(-1488,-980),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20748C1D1Ev,_ZTv0_n36_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20748C1D0Ev,_ZTv0_n36_N8S20748C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20748C152v4Ev,
  ABISELECT(-1552,-1036),
  0,
  ABISELECT(-1552,-1036),
  ABISELECT(88,44),
  ABISELECT(-1232,-820),
  ABISELECT(-1400,-940),
  ABISELECT(-1552,-1036),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20748C1D1Ev,_ZTv0_n32_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20748C1D0Ev,_ZTv0_n32_N8S20748C1D0Ev),
  ABISELECT(-1640,-1080),
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  ABISELECT(-1640,-1080),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20748C1D1Ev,_ZTv0_n28_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20748C1D0Ev,_ZTv0_n28_N8S20748C1D0Ev),
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(-2800,-1840),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20748C1D1Ev,_ZTvn760_n28_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20748C1D0Ev,_ZTvn760_n28_N8S20748C1D0Ev),
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(-2808,-1844),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20748C1D1Ev,_ZTvn764_n28_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20748C1D0Ev,_ZTvn764_n28_N8S20748C1D0Ev),
  ABISELECT(16,8),
  0,
  0,
  ABISELECT(-2616,-1708),
  ABISELECT(-1176,-768),
  ABISELECT(-1264,-812),
  ABISELECT(-1328,-868),
  ABISELECT(96,68),
  ABISELECT(-2488,-1628),
  ABISELECT(-2496,-1632),
  ABISELECT(-2528,-1664),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-2496,-1632),
  ABISELECT(-2816,-1848),
  ABISELECT(-2816,-1848),
  ABISELECT(-2496,-1632),
  ABISELECT(-2664,-1752),
  ABISELECT(-2496,-1632),
  ABISELECT(-2816,-1848),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C1D1Ev,_ZTv0_n24_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C1D0Ev,_ZTv0_n24_N8S20748C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20748C212v5Ev,
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(-2504,-1636),
  ABISELECT(-2512,-1640),
  ABISELECT(-2544,-1672),
  ABISELECT(-2512,-1640),
  ABISELECT(-2512,-1640),
  ABISELECT(-2832,-1856),
  ABISELECT(-2832,-1856),
  ABISELECT(-2512,-1640),
  ABISELECT(-2680,-1760),
  ABISELECT(-2512,-1640),
  ABISELECT(-2832,-1856),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C1D1Ev,_ZTv0_n24_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C1D0Ev,_ZTv0_n24_N8S20748C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20748C242v3Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-2536,-1652),
  ABISELECT(-2856,-1868),
  ABISELECT(-2856,-1868),
  ABISELECT(-2536,-1652),
  ABISELECT(-2704,-1772),
  ABISELECT(-2536,-1652),
  ABISELECT(-2856,-1868),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C1D1Ev,_ZTv0_n24_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C1D0Ev,_ZTv0_n24_N8S20748C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  0,
  ABISELECT(-2864,-1872),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  ABISELECT(1176,768),
  ABISELECT(-2912,-1916),
  ABISELECT(-2712,-1776),
  ABISELECT(-1272,-836),
  ABISELECT(-1360,-880),
  ABISELECT(-1424,-936),
  ABISELECT(-2592,-1700),
  ABISELECT(-2760,-1820),
  ABISELECT(-2912,-1916),
  ABISELECT(-2592,-1700),
  ABISELECT(-2592,-1700),
  ABISELECT(-2912,-1916),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20748C1D1Ev,_ZTv0_n48_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20748C1D0Ev,_ZTv0_n48_N8S20748C1D0Ev),
  ABISELECT(-3752,-2460),
  ABISELECT(-3920,-2580),
  ABISELECT(-3752,-2460),
  ABISELECT(-4072,-2676),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N8S20748C1D1Ev,_ZTvn760_n48_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N8S20748C1D0Ev,_ZTvn760_n48_N8S20748C1D0Ev),
  ABISELECT(-3760,-2464),
  ABISELECT(-3928,-2584),
  ABISELECT(-3760,-2464),
  ABISELECT(-4080,-2680),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N8S20748C1D1Ev,_ZTvn764_n48_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N8S20748C1D0Ev,_ZTvn764_n48_N8S20748C1D0Ev),
  ABISELECT(-3768,-2468),
  ABISELECT(-4088,-2684),
  ABISELECT(-4088,-2684),
  ABISELECT(-3768,-2468),
  ABISELECT(-3936,-2588),
  ABISELECT(-3768,-2468),
  ABISELECT(-4088,-2684),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C1D1Ev,_ZTv0_n24_N8S20748C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C1D0Ev,_ZTv0_n24_N8S20748C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  ABISELECT(-3944,-2592),
  ABISELECT(-3896,-2548),
  ABISELECT(-4096,-2688),
  (VTBL_ENTRY)&(_ZTI8S20748C1[0]),
};
extern VTBL_ENTRY _ZTV8S20748C1[];
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C7D1Ev();
extern void _ZN8S20748C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C7__8S20748C1[] = {
  ABISELECT(328,220),
  0,
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(288,184),
  ABISELECT(152,96),
  ABISELECT(200,140),
  ABISELECT(192,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C7D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C138S20748C7__8S20748C1[] = {
  ABISELECT(144,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C13[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C99S20748C138S20748C7__A1__8S20748C1[] = {
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__9S20748C138S20748C7__8S20748C1[] = {
  ABISELECT(96,48),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20748C13[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20748C8__8S20748C7__8S20748C1[] = {
  -40,
  ABISELECT(8,4),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__8S20748C7__8S20748C1[] = {
  0,
  ABISELECT(-48,-44),
  ABISELECT(-200,-140),
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C7D1Ev,_ZTv0_n24_N8S20748C7D1Ev)();
extern void ABISELECT(_ZThn320_N8S20748C7D1Ev,_ZThn216_N8S20748C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C7D0Ev,_ZTv0_n24_N8S20748C7D0Ev)();
extern void ABISELECT(_ZThn320_N8S20748C7D0Ev,_ZThn216_N8S20748C7D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C11__8S20748C7__8S20748C1[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-320,-216),
  ABISELECT(-320,-216),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C7D1Ev,_ZTv0_n24_N8S20748C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C7D0Ev,_ZTv0_n24_N8S20748C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__8S20748C7__8S20748C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-328,-220),
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C13__8S20748C7__8S20748C1[] = {
  ABISELECT(144,92),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C99S20748C13__A1__8S20748C7__8S20748C1[] = {
  ABISELECT(96,48),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20748C7[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__8S20748C1[] = {
  0,
  ABISELECT(-320,-216),
  0,
  0,
  ABISELECT(-168,-120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C4__8S20748C1[] = {
  0,
  ABISELECT(-168,-120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20748C8__8S20748C1[] = {
  -40,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C8[0]),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__8S20748C8__8S20748C1[] = {
  0,
  ABISELECT(-48,-44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20748C8[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__8S20748C1[] = {
  ABISELECT(-48,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev)();
extern void _ZN9S20748C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev)();
extern void _ZN9S20748C11D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C11__8S20748C1[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-320,-216),
  0,
  0,
  ABISELECT(-168,-120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__9S20748C11__8S20748C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__8S20748C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C12__8S20748C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C15D1Ev();
extern void _ZN9S20748C15D0Ev();
extern void _ZN9S20748C152v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C15__8S20748C1[] = {
  ABISELECT(-1488,-980),
  ABISELECT(152,100),
  ABISELECT(-1336,-884),
  ABISELECT(-1168,-764),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20748C152v4Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C16D1Ev();
extern void _ZN9S20748C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C169S20748C15__8S20748C1[] = {
  ABISELECT(-1488,-980),
  ABISELECT(152,100),
  ABISELECT(-1336,-884),
  ABISELECT(-1168,-764),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C16D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20748C16D1Ev,_ZThn56_N9S20748C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20748C16D0Ev,_ZThn56_N9S20748C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C169S20748C15__8S20748C1[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1552,-1036),
  ABISELECT(88,44),
  ABISELECT(-1232,-820),
  ABISELECT(-1400,-940),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C169S20748C15__8S20748C1[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZThn152_N9S20748C16D1Ev,_ZThn100_N9S20748C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev)();
extern void ABISELECT(_ZThn152_N9S20748C16D0Ev,_ZThn100_N9S20748C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C169S20748C15__8S20748C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C16D1Ev,_ZTvn760_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C16D0Ev,_ZTvn760_n28_N9S20748C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C169S20748C15__8S20748C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C16D1Ev,_ZTvn760_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C16D0Ev,_ZTvn760_n28_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C16D1Ev,_ZTvn764_n28_N9S20748C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C16D0Ev,_ZTvn764_n28_N9S20748C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C169S20748C15__8S20748C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S20748C16[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C16D1Ev,_ZTvn764_n28_N9S20748C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C16D0Ev,_ZTvn764_n28_N9S20748C16D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C15D1Ev,_ZTv0_n32_N9S20748C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S20748C15D1Ev,_ZThn56_N9S20748C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20748C15D0Ev,_ZTv0_n32_N9S20748C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S20748C15D0Ev,_ZThn56_N9S20748C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C15__8S20748C1[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1552,-1036),
  ABISELECT(88,44),
  ABISELECT(-1232,-820),
  ABISELECT(-1400,-940),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C15D1Ev,_ZTv0_n32_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C15D0Ev,_ZTv0_n32_N9S20748C15D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C15__8S20748C1[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C15D1Ev,_ZTv0_n28_N9S20748C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20748C15D1Ev,_ZThn100_N9S20748C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C15D0Ev,_ZTv0_n28_N9S20748C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20748C15D0Ev,_ZThn100_N9S20748C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C15__8S20748C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C15D1Ev,_ZTv0_n28_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C15D0Ev,_ZTv0_n28_N9S20748C15D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C15D1Ev,_ZTvn760_n28_N9S20748C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C15D0Ev,_ZTvn760_n28_N9S20748C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C15__8S20748C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C15D1Ev,_ZTvn760_n28_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C15D0Ev,_ZTvn760_n28_N9S20748C15D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C15D1Ev,_ZTvn764_n28_N9S20748C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C15D0Ev,_ZTvn764_n28_N9S20748C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C15__8S20748C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S20748C15[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C15D1Ev,_ZTvn764_n28_N9S20748C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C15D0Ev,_ZTvn764_n28_N9S20748C15D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C17D1Ev();
extern void _ZN9S20748C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C17__8S20748C1[] = {
  ABISELECT(-1552,-1036),
  ABISELECT(88,44),
  ABISELECT(-1232,-820),
  ABISELECT(-1400,-940),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C17D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C99S20748C17__A2__8S20748C1[] = {
  ABISELECT(-1400,-940),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C9[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C17__8S20748C1[] = {
  0,
  ABISELECT(1232,820),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZThn88_N9S20748C17D1Ev,_ZThn44_N9S20748C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev)();
extern void ABISELECT(_ZThn88_N9S20748C17D0Ev,_ZThn44_N9S20748C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C18__9S20748C17__8S20748C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C17D1Ev,_ZTvn760_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C17D0Ev,_ZTvn760_n28_N9S20748C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C17__8S20748C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C17D1Ev,_ZTvn760_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C17D0Ev,_ZTvn760_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C17D1Ev,_ZTvn764_n28_N9S20748C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C17D0Ev,_ZTvn764_n28_N9S20748C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C17__8S20748C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(-1256,-808),
  (VTBL_ENTRY)&(_ZTI9S20748C17[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C17D1Ev,_ZTvn764_n28_N9S20748C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C17D0Ev,_ZTvn764_n28_N9S20748C17D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C18D1Ev();
extern void _ZN9S20748C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C18__8S20748C1[] = {
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C129S20748C18__A1__8S20748C1[] = {
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C129S20748C18__A1__8S20748C1[] = {
  0,
  ABISELECT(1320,864),
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__A1__8S20748C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C18__A1__8S20748C1[] = {
  0,
  ABISELECT(2480,1624),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C19D1Ev();
extern void _ZN9S20748C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__8S20748C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C199S20748C18__A2__8S20748C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A2__8S20748C1[] = {
  0,
  ABISELECT(2488,1628),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C199S20748C18__8S20748C1[] = {
  0,
  ABISELECT(2488,1628),
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C18__8S20748C1[] = {
  0,
  ABISELECT(1320,864),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C18__8S20748C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C19__9S20748C18__8S20748C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev)();
extern void _ZN9S20748C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev)();
extern void _ZN9S20748C21D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN9S20748C212v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C21__8S20748C1[] = {
  ABISELECT(-2616,-1708),
  ABISELECT(-1176,-768),
  ABISELECT(-1264,-812),
  ABISELECT(-1328,-868),
  ABISELECT(96,68),
  ABISELECT(-2488,-1628),
  ABISELECT(-2496,-1632),
  ABISELECT(-2528,-1664),
  ABISELECT(48,24),
  ABISELECT(40,20),
  ABISELECT(-2496,-1632),
  ABISELECT(-2816,-1848),
  0,
  ABISELECT(-2496,-1632),
  ABISELECT(-2664,-1752),
  ABISELECT(-2496,-1632),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20748C212v5Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C22D1Ev,_ZTv0_n24_N9S20748C22D1Ev)();
extern void _ZN9S20748C22D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C22D0Ev,_ZTv0_n24_N9S20748C22D0Ev)();
extern void _ZN9S20748C22D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C229S20748C21__8S20748C1[] = {
  ABISELECT(-2496,-1632),
  ABISELECT(-2816,-1848),
  0,
  ABISELECT(-2496,-1632),
  ABISELECT(-2664,-1752),
  ABISELECT(-2496,-1632),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C22[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C22D1Ev,_ZTv0_n24_N9S20748C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C22D0Ev,_ZTv0_n24_N9S20748C22D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C23D1Ev,_ZTv0_n24_N9S20748C23D1Ev)();
extern void _ZN9S20748C23D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C23D0Ev,_ZTv0_n24_N9S20748C23D0Ev)();
extern void _ZN9S20748C23D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C239S20748C229S20748C21__8S20748C1[] = {
  ABISELECT(-2496,-1632),
  ABISELECT(-2816,-1848),
  0,
  ABISELECT(-2496,-1632),
  ABISELECT(-2664,-1752),
  ABISELECT(-2496,-1632),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C23[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C23D1Ev,_ZTv0_n24_N9S20748C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C23D0Ev,_ZTv0_n24_N9S20748C23D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C29S20748C239S20748C229S20748C21__A1__8S20748C1[] = {
  ABISELECT(-2496,-1632),
  ABISELECT(-2816,-1848),
  0,
  ABISELECT(-2496,-1632),
  ABISELECT(-2664,-1752),
  ABISELECT(-2496,-1632),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__8S20748C29S20748C239S20748C229S20748C21__A1__8S20748C1[] = {
  ABISELECT(2496,1632),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2496,1632),
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C23D1Ev,_ZTv0_n24_N9S20748C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20748C23D0Ev,_ZTv0_n24_N9S20748C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C239S20748C229S20748C21__8S20748C1[] = {
  ABISELECT(2496,1632),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2496,1632),
  (VTBL_ENTRY)&(_ZTI9S20748C23[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C23D1Ev,_ZTv0_n24_N9S20748C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C23D0Ev,_ZTv0_n24_N9S20748C23D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C22D1Ev,_ZTv0_n24_N9S20748C22D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20748C22D0Ev,_ZTv0_n24_N9S20748C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C229S20748C21__8S20748C1[] = {
  ABISELECT(2496,1632),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2496,1632),
  (VTBL_ENTRY)&(_ZTI9S20748C22[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C22D1Ev,_ZTv0_n24_N9S20748C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C22D0Ev,_ZTv0_n24_N9S20748C22D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev)();
extern void _ZN9S20748C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev)();
extern void _ZN9S20748C24D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN9S20748C242v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C249S20748C21__8S20748C1[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(-2504,-1636),
  ABISELECT(-2512,-1640),
  ABISELECT(-2544,-1672),
  ABISELECT(-2512,-1640),
  ABISELECT(-2512,-1640),
  ABISELECT(-2832,-1856),
  0,
  ABISELECT(-2512,-1640),
  ABISELECT(-2680,-1760),
  ABISELECT(-2512,-1640),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20748C242v3Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev)();
extern void _ZN9S20748C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev)();
extern void _ZN9S20748C11D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C119S20748C249S20748C21__A1__8S20748C1[] = {
  ABISELECT(-2504,-1636),
  ABISELECT(-2512,-1640),
  ABISELECT(-2544,-1672),
  ABISELECT(-2512,-1640),
  ABISELECT(-2512,-1640),
  ABISELECT(-2832,-1856),
  0,
  ABISELECT(-2512,-1640),
  ABISELECT(-2680,-1760),
  ABISELECT(-2512,-1640),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev)();
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__9S20748C119S20748C249S20748C21__A1__8S20748C1[] = {
  0,
  0,
  ABISELECT(-320,-216),
  ABISELECT(2512,1640),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2512,1640),
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__9S20748C119S20748C249S20748C21__A1__8S20748C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(2504,1636),
  (VTBL_ENTRY)&(_ZTI9S20748C11[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev)();
extern void ABISELECT(_ZThn24_N9S20748C24D1Ev,_ZThn12_N9S20748C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev)();
extern void ABISELECT(_ZThn24_N9S20748C24D0Ev,_ZThn12_N9S20748C24D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C25__9S20748C249S20748C21__8S20748C1[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-2536,-1652),
  ABISELECT(-2856,-1868),
  ABISELECT(-24,-12),
  ABISELECT(-2536,-1652),
  ABISELECT(-2704,-1772),
  ABISELECT(-2536,-1652),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev)();
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__A1__9S20748C249S20748C21__8S20748C1[] = {
  0,
  0,
  ABISELECT(-320,-216),
  ABISELECT(2512,1640),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2512,1640),
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C69S20748C14__A1__9S20748C249S20748C21__8S20748C1[] = {
  0,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__9S20748C249S20748C21__8S20748C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(2504,1636),
  (VTBL_ENTRY)&(_ZTI9S20748C24[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev)();
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__A2__9S20748C21__8S20748C1[] = {
  0,
  0,
  ABISELECT(-320,-216),
  ABISELECT(2496,1632),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2496,1632),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20748C21D1Ev,_ZThn8_N9S20748C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20748C21D0Ev,_ZThn8_N9S20748C21D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
extern void _ZN9S20748C242v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C24__9S20748C21__8S20748C1[] = {
  ABISELECT(32,16),
  ABISELECT(24,12),
  ABISELECT(-2504,-1636),
  ABISELECT(-2512,-1640),
  ABISELECT(-2544,-1672),
  ABISELECT(-2512,-1640),
  ABISELECT(-2512,-1640),
  ABISELECT(-2832,-1856),
  ABISELECT(-16,-8),
  ABISELECT(-2512,-1640),
  ABISELECT(-2680,-1760),
  ABISELECT(-2512,-1640),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20748C242v3Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev)();
extern void ABISELECT(_ZThn40_N9S20748C21D1Ev,_ZThn20_N9S20748C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev)();
extern void ABISELECT(_ZThn40_N9S20748C21D0Ev,_ZThn20_N9S20748C21D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C25__9S20748C21__8S20748C1[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-2536,-1652),
  ABISELECT(-2856,-1868),
  ABISELECT(-40,-20),
  ABISELECT(-2536,-1652),
  ABISELECT(-2704,-1772),
  ABISELECT(-2536,-1652),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C69S20748C14__A1__9S20748C21__8S20748C1[] = {
  0,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C12__9S20748C21__8S20748C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(2488,1628),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n96_N9S20748C21D1Ev,_ZTv0_n48_N9S20748C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20748C21D1Ev,_ZThn68_N9S20748C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20748C21D0Ev,_ZTv0_n48_N9S20748C21D0Ev)();
extern void ABISELECT(_ZThn96_N9S20748C21D0Ev,_ZThn68_N9S20748C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20748C26__9S20748C21__8S20748C1[] = {
  ABISELECT(1176,768),
  ABISELECT(-96,-68),
  ABISELECT(-2712,-1776),
  ABISELECT(-1272,-836),
  ABISELECT(-1360,-880),
  ABISELECT(-1424,-936),
  ABISELECT(-2592,-1700),
  ABISELECT(-2760,-1820),
  ABISELECT(-2912,-1916),
  ABISELECT(-2592,-1700),
  ABISELECT(-2592,-1700),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20748C21D1Ev,_ZTv0_n48_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20748C21D0Ev,_ZTv0_n48_N9S20748C21D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n96_N9S20748C21D1Ev,_ZTvn760_n48_N9S20748C21D1Ev)();
extern void ABISELECT(_ZTvn1160_n96_N9S20748C21D0Ev,_ZTvn760_n48_N9S20748C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C189S20748C26__A1__9S20748C21__8S20748C1[] = {
  ABISELECT(-3752,-2460),
  ABISELECT(-3920,-2580),
  ABISELECT(-3752,-2460),
  ABISELECT(-1256,-828),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N9S20748C21D1Ev,_ZTvn760_n48_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N9S20748C21D0Ev,_ZTvn760_n48_N9S20748C21D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n96_N9S20748C21D1Ev,_ZTvn764_n48_N9S20748C21D1Ev)();
extern void ABISELECT(_ZTvn1168_n96_N9S20748C21D0Ev,_ZTvn764_n48_N9S20748C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C189S20748C26__9S20748C21__8S20748C1[] = {
  ABISELECT(-3760,-2464),
  ABISELECT(-3928,-2584),
  ABISELECT(-3760,-2464),
  ABISELECT(-1264,-832),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N9S20748C21D1Ev,_ZTvn764_n48_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N9S20748C21D0Ev,_ZTvn764_n48_N9S20748C21D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev)();
extern void ABISELECT(_ZThn1272_N9S20748C21D1Ev,_ZThn836_N9S20748C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev)();
extern void ABISELECT(_ZThn1272_N9S20748C21D0Ev,_ZThn836_N9S20748C21D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C29S20748C26__A3__9S20748C21__8S20748C1[] = {
  ABISELECT(-3768,-2468),
  ABISELECT(-4088,-2684),
  ABISELECT(-1272,-836),
  ABISELECT(-3768,-2468),
  ABISELECT(-3936,-2588),
  ABISELECT(-3768,-2468),
  ABISELECT(-1272,-836),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S20748C21D1Ev,_ZTv0_n36_N9S20748C21D1Ev)();
extern void ABISELECT(_ZTv0_n72_N9S20748C21D0Ev,_ZTv0_n36_N9S20748C21D0Ev)();
extern void _ZN9S20748C152v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C15__9S20748C21__8S20748C1[] = {
  0,
  ABISELECT(1328,868),
  0,
  ABISELECT(-1488,-980),
  ABISELECT(152,100),
  ABISELECT(-1336,-884),
  ABISELECT(-1168,-764),
  ABISELECT(64,56),
  ABISELECT(1328,868),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20748C21D1Ev,_ZTv0_n36_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20748C21D0Ev,_ZTv0_n36_N9S20748C21D0Ev),
  (VTBL_ENTRY)&_ZN9S20748C152v4Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C21D1Ev,_ZTv0_n32_N9S20748C21D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S20748C21D0Ev,_ZTv0_n32_N9S20748C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C21__8S20748C1[] = {
  ABISELECT(1264,812),
  0,
  ABISELECT(-1552,-1036),
  ABISELECT(88,44),
  ABISELECT(-1232,-820),
  ABISELECT(-1400,-940),
  ABISELECT(1264,812),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C21D1Ev,_ZTv0_n32_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C21D0Ev,_ZTv0_n32_N9S20748C21D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C21D1Ev,_ZTv0_n28_N9S20748C21D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20748C21D0Ev,_ZTv0_n28_N9S20748C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C18__A1__9S20748C21__8S20748C1[] = {
  ABISELECT(1176,768),
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C21D1Ev,_ZTv0_n28_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C21D0Ev,_ZTv0_n28_N9S20748C21D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C21D1Ev,_ZTvn760_n28_N9S20748C21D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C21D0Ev,_ZTvn760_n28_N9S20748C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__A3__9S20748C21__8S20748C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C21D1Ev,_ZTvn760_n28_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C21D0Ev,_ZTvn760_n28_N9S20748C21D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C21D1Ev,_ZTvn764_n28_N9S20748C21D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C21D0Ev,_ZTvn764_n28_N9S20748C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__A1__9S20748C21__8S20748C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C21D1Ev,_ZTvn764_n28_N9S20748C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C21D0Ev,_ZTvn764_n28_N9S20748C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20748C89S20748C26__9S20748C21__8S20748C1[] = {
  ABISELECT(-3944,-2592),
  ABISELECT(-3896,-2548),
  ABISELECT(-1280,-840),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__A1__9S20748C21__8S20748C1[] = {
  0,
  ABISELECT(-48,-44),
  ABISELECT(2616,1708),
  (VTBL_ENTRY)&(_ZTI9S20748C21[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev)();
extern void _ZN9S20748C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev)();
extern void _ZN9S20748C25D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C25__8S20748C1[] = {
  ABISELECT(8,4),
  ABISELECT(-2536,-1652),
  ABISELECT(-2856,-1868),
  0,
  ABISELECT(-2536,-1652),
  ABISELECT(-2704,-1772),
  ABISELECT(-2536,-1652),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C25[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C29S20748C25__A2__8S20748C1[] = {
  ABISELECT(-2536,-1652),
  ABISELECT(-2856,-1868),
  0,
  ABISELECT(-2536,-1652),
  ABISELECT(-2704,-1772),
  ABISELECT(-2536,-1652),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__8S20748C29S20748C25__A2__8S20748C1[] = {
  ABISELECT(2536,1652),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2536,1652),
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C25__8S20748C1[] = {
  ABISELECT(2536,1652),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2536,1652),
  (VTBL_ENTRY)&(_ZTI9S20748C25[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C69S20748C14__A1__9S20748C25__8S20748C1[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20748C25[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C26D1Ev();
extern void _ZN9S20748C26D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C26__8S20748C1[] = {
  ABISELECT(-2712,-1776),
  ABISELECT(-1272,-836),
  ABISELECT(-1360,-880),
  ABISELECT(-1424,-936),
  ABISELECT(-2592,-1700),
  ABISELECT(-2760,-1820),
  ABISELECT(-2912,-1916),
  ABISELECT(-2592,-1700),
  ABISELECT(-2592,-1700),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C26D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C26D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C18D1Ev();
extern void _ZN9S20748C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C189S20748C26__A1__8S20748C1[] = {
  ABISELECT(-2760,-1820),
  ABISELECT(-2912,-1916),
  ABISELECT(-2592,-1700),
  ABISELECT(-2592,-1700),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C18D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C129S20748C189S20748C26__A2__8S20748C1[] = {
  ABISELECT(-2592,-1700),
  ABISELECT(-2592,-1700),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C129S20748C189S20748C26__A2__8S20748C1[] = {
  0,
  ABISELECT(2592,1700),
  (VTBL_ENTRY)&(_ZTI9S20748C12[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C189S20748C26__A3__8S20748C1[] = {
  ABISELECT(-3752,-2460),
  ABISELECT(-3920,-2580),
  ABISELECT(-3752,-2460),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C189S20748C26__A3__8S20748C1[] = {
  0,
  ABISELECT(3752,2460),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN9S20748C19D1Ev();
extern void _ZN9S20748C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C189S20748C26__A1__8S20748C1[] = {
  ABISELECT(-3760,-2464),
  ABISELECT(-3928,-2584),
  ABISELECT(-3760,-2464),
  0,
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20748C19D0Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void _ZN8S20748C4D1Ev();
extern void _ZN8S20748C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C199S20748C189S20748C26__A4__8S20748C1[] = {
  ABISELECT(-3760,-2464),
  ABISELECT(-3928,-2584),
  ABISELECT(-3760,-2464),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20748C4D0Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__8S20748C49S20748C199S20748C189S20748C26__A4__8S20748C1[] = {
  0,
  ABISELECT(3760,2464),
  (VTBL_ENTRY)&(_ZTI8S20748C4[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C199S20748C189S20748C26__A1__8S20748C1[] = {
  0,
  ABISELECT(3760,2464),
  (VTBL_ENTRY)&(_ZTI9S20748C19[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C6__9S20748C189S20748C26__A1__8S20748C1[] = {
  0,
  ABISELECT(2592,1700),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__9S20748C189S20748C26__A1__8S20748C1[] = {
  ABISELECT(-3752,-2460),
  ABISELECT(-3920,-2580),
  ABISELECT(-3752,-2460),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D1Ev,_ZThn760_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C18D0Ev,_ZThn760_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C19__9S20748C189S20748C26__A1__8S20748C1[] = {
  ABISELECT(-3760,-2464),
  ABISELECT(-3928,-2584),
  ABISELECT(-3760,-2464),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C18[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D1Ev,_ZThn764_N9S20748C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C18D0Ev,_ZThn764_N9S20748C18D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void _ZN8S20748C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
extern void _ZN8S20748C2D0Ev() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C29S20748C26__A3__8S20748C1[] = {
  ABISELECT(-3768,-2468),
  ABISELECT(-4088,-2684),
  0,
  ABISELECT(-3768,-2468),
  ABISELECT(-3936,-2588),
  ABISELECT(-3768,-2468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__8S20748C29S20748C26__A3__8S20748C1[] = {
  ABISELECT(3768,2468),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(3768,2468),
  (VTBL_ENTRY)&(_ZTI8S20748C2[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20748C89S20748C26__A1__8S20748C1[] = {
  ABISELECT(-3944,-2592),
  ABISELECT(-3896,-2548),
  0,
  (VTBL_ENTRY)&(_ZTI8S20748C8[0]),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__8S20748C89S20748C26__A1__8S20748C1[] = {
  0,
  ABISELECT(-48,-44),
  ABISELECT(3896,2548),
  (VTBL_ENTRY)&(_ZTI8S20748C8[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C4__A2__9S20748C26__8S20748C1[] = {
  ABISELECT(2592,1700),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2592,1700),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20748C26D1Ev,_ZThn760_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20748C26D0Ev,_ZThn760_N9S20748C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__9S20748C26__8S20748C1[] = {
  ABISELECT(-3752,-2460),
  ABISELECT(-3920,-2580),
  ABISELECT(-3752,-2460),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C26D1Ev,_ZThn760_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20748C26D0Ev,_ZThn760_N9S20748C26D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20748C26D1Ev,_ZThn764_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20748C26D0Ev,_ZThn764_N9S20748C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__9S20748C26__8S20748C1[] = {
  ABISELECT(-3760,-2464),
  ABISELECT(-3928,-2584),
  ABISELECT(-3760,-2464),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C26D1Ev,_ZThn764_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20748C26D0Ev,_ZThn764_N9S20748C26D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev)();
extern void ABISELECT(_ZThn1176_N9S20748C26D1Ev,_ZThn768_N9S20748C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev)();
extern void ABISELECT(_ZThn1176_N9S20748C26D0Ev,_ZThn768_N9S20748C26D0Ev)() __attribute__((weak));
extern void _ZN8S20748C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C2__9S20748C26__8S20748C1[] = {
  ABISELECT(-3768,-2468),
  ABISELECT(-4088,-2684),
  ABISELECT(-1176,-768),
  ABISELECT(-3768,-2468),
  ABISELECT(-3936,-2588),
  ABISELECT(-3768,-2468),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev),
  (VTBL_ENTRY)&_ZN8S20748C22v2Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S20748C26D1Ev,_ZTv0_n36_N9S20748C26D1Ev)();
extern void ABISELECT(_ZTv0_n72_N9S20748C26D0Ev,_ZTv0_n36_N9S20748C26D0Ev)();
extern void _ZN9S20748C152v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20748C15__9S20748C26__8S20748C1[] = {
  0,
  ABISELECT(1424,936),
  0,
  ABISELECT(-1488,-980),
  ABISELECT(152,100),
  ABISELECT(-1336,-884),
  ABISELECT(-1168,-764),
  ABISELECT(64,56),
  ABISELECT(1424,936),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20748C26D1Ev,_ZTv0_n36_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20748C26D0Ev,_ZTv0_n36_N9S20748C26D0Ev),
  (VTBL_ENTRY)&_ZN9S20748C152v4Ev,
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20748C26D1Ev,_ZTv0_n32_N9S20748C26D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S20748C26D0Ev,_ZTv0_n32_N9S20748C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C17__9S20748C26__8S20748C1[] = {
  ABISELECT(1360,880),
  0,
  ABISELECT(-1552,-1036),
  ABISELECT(88,44),
  ABISELECT(-1232,-820),
  ABISELECT(-1400,-940),
  ABISELECT(1360,880),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C26D1Ev,_ZTv0_n32_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20748C26D0Ev,_ZTv0_n32_N9S20748C26D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20748C26D1Ev,_ZTv0_n28_N9S20748C26D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20748C26D0Ev,_ZTv0_n28_N9S20748C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C18__A1__9S20748C26__8S20748C1[] = {
  ABISELECT(1272,836),
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  ABISELECT(1272,836),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C26D1Ev,_ZTv0_n28_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20748C26D0Ev,_ZTv0_n28_N9S20748C26D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C26D1Ev,_ZTvn760_n28_N9S20748C26D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20748C26D0Ev,_ZTvn760_n28_N9S20748C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20748C49S20748C18__A3__9S20748C26__8S20748C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(112,76),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C26D1Ev,_ZTvn760_n28_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20748C26D0Ev,_ZTvn760_n28_N9S20748C26D0Ev),
};
extern void _ZN8S20748C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C26D1Ev,_ZTvn764_n28_N9S20748C26D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20748C26D0Ev,_ZTvn764_n28_N9S20748C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20748C199S20748C18__A1__9S20748C26__8S20748C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(104,72),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C26D1Ev,_ZTvn764_n28_N9S20748C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20748C26D0Ev,_ZTvn764_n28_N9S20748C26D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20748C8__9S20748C26__8S20748C1[] = {
  ABISELECT(-3944,-2592),
  ABISELECT(-3896,-2548),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
};
extern void _ZN8S20748C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20748C9__A1__9S20748C26__8S20748C1[] = {
  0,
  ABISELECT(-48,-44),
  ABISELECT(2712,1776),
  (VTBL_ENTRY)&(_ZTI9S20748C26[0]),
  (VTBL_ENTRY)&_ZN8S20748C62v1Ev,
};
static  VTT_ENTRY vtt_S20748C1[] = {
  {&(_ZTV8S20748C1[19]),  19,222},
  {&(_tg__ZTV8S20748C7__8S20748C1[12]),  12,15},
  {&(_tg__ZTV9S20748C138S20748C7__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C99S20748C138S20748C7__A1__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C9__9S20748C138S20748C7__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C8__8S20748C7__8S20748C1[4]),  4,4},
  {&(_tg__ZTV8S20748C9__8S20748C7__8S20748C1[4]),  4,5},
  {&(_tg__ZTV9S20748C11__8S20748C7__8S20748C1[12]),  12,16},
  {&(_tg__ZTV9S20748C11__8S20748C7__8S20748C1[12]),  12,16},
  {&(_tg__ZTV9S20748C11__8S20748C7__8S20748C1[12]),  12,16},
  {&(_tg__ZTV9S20748C11__8S20748C7__8S20748C1[12]),  12,16},
  {&(_tg__ZTV9S20748C12__8S20748C7__8S20748C1[4]),  4,5},
  {&(_tg__ZTV9S20748C13__8S20748C7__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C99S20748C13__A1__8S20748C7__8S20748C1[3]),  3,4},
  {&(_ZTV8S20748C1[51]),  51,222},
  {&(_ZTV8S20748C1[51]),  51,222},
  {&(_ZTV8S20748C1[51]),  51,222},
  {&(_ZTV8S20748C1[34]),  34,222},
  {&(_ZTV8S20748C1[38]),  38,222},
  {&(_ZTV8S20748C1[51]),  51,222},
  {&(_ZTV8S20748C1[59]),  59,222},
  {&(_ZTV8S20748C1[25]),  25,222},
  {&(_ZTV8S20748C1[29]),  29,222},
  {&(_ZTV8S20748C1[70]),  70,222},
  {&(_ZTV8S20748C1[82]),  82,222},
  {&(_ZTV8S20748C1[92]),  92,222},
  {&(_ZTV8S20748C1[100]),  100,222},
  {&(_ZTV8S20748C1[108]),  108,222},
  {&(_ZTV8S20748C1[132]),  132,222},
  {&(_ZTV8S20748C1[151]),  151,222},
  {&(_ZTV8S20748C1[166]),  166,222},
  {&(_ZTV8S20748C1[173]),  173,222},
  {&(_ZTV8S20748C1[187]),  187,222},
  {&(_ZTV8S20748C1[195]),  195,222},
  {&(_ZTV8S20748C1[203]),  203,222},
  {&(_ZTV8S20748C1[214]),  214,222},
  {&(_ZTV8S20748C1[222]),  222,222},
  {&(_tg__ZTV8S20748C2__8S20748C1[8]),  8,12},
  {&(_tg__ZTV8S20748C2__8S20748C1[8]),  8,12},
  {&(_tg__ZTV8S20748C2__8S20748C1[8]),  8,12},
  {&(_tg__ZTV8S20748C4__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C4__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C8__8S20748C1[4]),  4,4},
  {&(_tg__ZTV8S20748C9__8S20748C8__8S20748C1[4]),  4,5},
  {&(_tg__ZTV8S20748C9__8S20748C1[3]),  3,4},
  {&(_tg__ZTV9S20748C11__8S20748C1[12]),  12,16},
  {&(_tg__ZTV9S20748C11__8S20748C1[12]),  12,16},
  {&(_tg__ZTV9S20748C11__8S20748C1[12]),  12,16},
  {&(_tg__ZTV9S20748C11__8S20748C1[12]),  12,16},
  {&(_tg__ZTV9S20748C12__9S20748C11__8S20748C1[4]),  4,5},
  {&(_tg__ZTV9S20748C12__8S20748C1[4]),  4,5},
  {&(_tg__ZTV8S20748C6__9S20748C12__8S20748C1[3]),  3,4},
  {&(_tg__ZTV9S20748C15__8S20748C1[7]),  7,11},
  {&(_tg__ZTV9S20748C169S20748C15__8S20748C1[7]),  7,10},
  {&(_tg__ZTV9S20748C17__9S20748C169S20748C15__8S20748C1[8]),  8,11},
  {&(_tg__ZTV8S20748C6__9S20748C169S20748C15__8S20748C1[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C169S20748C15__8S20748C1[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C169S20748C15__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C169S20748C15__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C17__9S20748C15__8S20748C1[8]),  8,11},
  {&(_tg__ZTV8S20748C6__9S20748C15__8S20748C1[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C15__8S20748C1[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C15__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C15__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C17__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C99S20748C17__A2__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C17__8S20748C1[3]),  3,4},
  {&(_tg__ZTV9S20748C18__9S20748C17__8S20748C1[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C17__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C17__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C18__8S20748C1[6]),  6,9},
  {&(_tg__ZTV9S20748C129S20748C18__A1__8S20748C1[4]),  4,5},
  {&(_tg__ZTV8S20748C6__9S20748C129S20748C18__A1__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C49S20748C18__A1__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C18__A1__8S20748C1[3]),  3,4},
  {&(_tg__ZTV9S20748C199S20748C18__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C49S20748C199S20748C18__A2__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C199S20748C18__A2__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C199S20748C18__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C18__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C4__9S20748C18__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C19__9S20748C18__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C21__8S20748C1[18]),  18,23},
  {&(_tg__ZTV9S20748C229S20748C21__8S20748C1[8]),  8,12},
  {&(_tg__ZTV9S20748C239S20748C229S20748C21__8S20748C1[8]),  8,12},
  {&(_tg__ZTV8S20748C29S20748C239S20748C229S20748C21__A1__8S20748C1[8]),  8,12},
  {&(_tg__ZTV8S20748C4__8S20748C29S20748C239S20748C229S20748C21__A1__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C4__8S20748C29S20748C239S20748C229S20748C21__A1__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C239S20748C229S20748C21__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C239S20748C229S20748C21__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C229S20748C21__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C229S20748C21__8S20748C1[6]),  6,9},
  {&(_tg__ZTV9S20748C249S20748C21__8S20748C1[14]),  14,19},
  {&(_tg__ZTV9S20748C119S20748C249S20748C21__A1__8S20748C1[12]),  12,16},
  {&(_tg__ZTV8S20748C2__9S20748C119S20748C249S20748C21__A1__8S20748C1[9]),  9,13},
  {&(_tg__ZTV8S20748C2__9S20748C119S20748C249S20748C21__A1__8S20748C1[9]),  9,13},
  {&(_tg__ZTV8S20748C2__9S20748C119S20748C249S20748C21__A1__8S20748C1[9]),  9,13},
  {&(_tg__ZTV9S20748C12__9S20748C119S20748C249S20748C21__A1__8S20748C1[4]),  4,5},
  {&(_tg__ZTV9S20748C25__9S20748C249S20748C21__8S20748C1[10]),  10,14},
  {&(_tg__ZTV8S20748C2__A1__9S20748C249S20748C21__8S20748C1[9]),  9,13},
  {&(_tg__ZTV8S20748C2__A1__9S20748C249S20748C21__8S20748C1[9]),  9,13},
  {&(_tg__ZTV8S20748C69S20748C14__A1__9S20748C249S20748C21__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C2__A1__9S20748C249S20748C21__8S20748C1[9]),  9,13},
  {&(_tg__ZTV9S20748C12__9S20748C249S20748C21__8S20748C1[4]),  4,5},
  {&(_tg__ZTV8S20748C2__A2__9S20748C21__8S20748C1[9]),  9,13},
  {&(_tg__ZTV8S20748C2__A2__9S20748C21__8S20748C1[9]),  9,13},
  {&(_tg__ZTV9S20748C24__9S20748C21__8S20748C1[14]),  14,19},
  {&(_tg__ZTV9S20748C25__9S20748C21__8S20748C1[10]),  10,14},
  {&(_tg__ZTV8S20748C69S20748C14__A1__9S20748C21__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C2__A2__9S20748C21__8S20748C1[9]),  9,13},
  {&(_tg__ZTV9S20748C12__9S20748C21__8S20748C1[4]),  4,5},
  {&(_tg__ZTV9S20748C26__9S20748C21__8S20748C1[13]),  13,16},
  {&(_tg__ZTV8S20748C49S20748C189S20748C26__A1__9S20748C21__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C189S20748C26__9S20748C21__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C29S20748C26__A3__9S20748C21__8S20748C1[8]),  8,12},
  {&(_tg__ZTV9S20748C15__9S20748C21__8S20748C1[10]),  10,14},
  {&(_tg__ZTV9S20748C17__9S20748C21__8S20748C1[8]),  8,11},
  {&(_tg__ZTV9S20748C18__A1__9S20748C21__8S20748C1[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__A3__9S20748C21__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__A1__9S20748C21__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C89S20748C26__9S20748C21__8S20748C1[4]),  4,4},
  {&(_tg__ZTV8S20748C9__A1__9S20748C21__8S20748C1[4]),  4,5},
  {&(_tg__ZTV9S20748C25__8S20748C1[9]),  9,13},
  {&(_tg__ZTV8S20748C29S20748C25__A2__8S20748C1[8]),  8,12},
  {&(_tg__ZTV8S20748C4__8S20748C29S20748C25__A2__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C4__8S20748C29S20748C25__A2__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C25__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C4__9S20748C25__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C69S20748C14__A1__9S20748C25__8S20748C1[3]),  3,4},
  {&(_tg__ZTV9S20748C26__8S20748C1[11]),  11,14},
  {&(_tg__ZTV9S20748C189S20748C26__A1__8S20748C1[6]),  6,9},
  {&(_tg__ZTV9S20748C129S20748C189S20748C26__A2__8S20748C1[4]),  4,5},
  {&(_tg__ZTV8S20748C6__9S20748C129S20748C189S20748C26__A2__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C49S20748C189S20748C26__A3__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C189S20748C26__A3__8S20748C1[3]),  3,4},
  {&(_tg__ZTV9S20748C199S20748C189S20748C26__A1__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C49S20748C199S20748C189S20748C26__A4__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C6__8S20748C49S20748C199S20748C189S20748C26__A4__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C199S20748C189S20748C26__A1__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C6__9S20748C189S20748C26__A1__8S20748C1[3]),  3,4},
  {&(_tg__ZTV8S20748C4__9S20748C189S20748C26__A1__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C19__9S20748C189S20748C26__A1__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C29S20748C26__A3__8S20748C1[8]),  8,12},
  {&(_tg__ZTV8S20748C4__8S20748C29S20748C26__A3__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C4__8S20748C29S20748C26__A3__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C89S20748C26__A1__8S20748C1[4]),  4,4},
  {&(_tg__ZTV8S20748C9__8S20748C89S20748C26__A1__8S20748C1[4]),  4,5},
  {&(_tg__ZTV8S20748C4__A2__9S20748C26__8S20748C1[6]),  6,9},
  {&(_tg__ZTV8S20748C49S20748C18__9S20748C26__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__9S20748C26__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C2__9S20748C26__8S20748C1[8]),  8,12},
  {&(_tg__ZTV8S20748C4__A2__9S20748C26__8S20748C1[6]),  6,9},
  {&(_tg__ZTV9S20748C15__9S20748C26__8S20748C1[10]),  10,14},
  {&(_tg__ZTV9S20748C17__9S20748C26__8S20748C1[8]),  8,11},
  {&(_tg__ZTV9S20748C18__A1__9S20748C26__8S20748C1[7]),  7,10},
  {&(_tg__ZTV8S20748C49S20748C18__A3__9S20748C26__8S20748C1[5]),  5,8},
  {&(_tg__ZTV9S20748C199S20748C18__A1__9S20748C26__8S20748C1[5]),  5,8},
  {&(_tg__ZTV8S20748C8__9S20748C26__8S20748C1[4]),  4,4},
  {&(_tg__ZTV8S20748C9__A1__9S20748C26__8S20748C1[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20748C1[];
extern  VTBL_ENTRY _ZTV8S20748C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20748C1[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C26D0Ev,_ZTv0_n24_N9S20748C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S20748C26D0Ev,_ZThn768_N9S20748C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C26D1Ev,_ZTv0_n24_N9S20748C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S20748C26D1Ev,_ZThn768_N9S20748C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C25D0Ev,_ZTv0_n24_N9S20748C25D0Ev), // 
  (VTBL_ENTRY)_ZN9S20748C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C25D1Ev,_ZTv0_n24_N9S20748C25D1Ev), // 
  (VTBL_ENTRY)_ZN9S20748C25D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20748C21D0Ev,_ZTv0_n48_N9S20748C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20748C21D0Ev,_ZThn68_N9S20748C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20748C21D1Ev,_ZTv0_n48_N9S20748C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20748C21D1Ev,_ZThn68_N9S20748C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C24D0Ev,_ZTv0_n24_N9S20748C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20748C24D0Ev,_ZThn12_N9S20748C24D0Ev),
  (VTBL_ENTRY)_ZN9S20748C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C24D1Ev,_ZTv0_n24_N9S20748C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20748C24D1Ev,_ZThn12_N9S20748C24D1Ev),
  (VTBL_ENTRY)_ZN9S20748C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C23D0Ev,_ZTv0_n24_N9S20748C23D0Ev), // 
  (VTBL_ENTRY)_ZN9S20748C23D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C23D1Ev,_ZTv0_n24_N9S20748C23D1Ev), // 
  (VTBL_ENTRY)_ZN9S20748C23D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C22D0Ev,_ZTv0_n24_N9S20748C22D0Ev), // 
  (VTBL_ENTRY)_ZN9S20748C22D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C22D1Ev,_ZTv0_n24_N9S20748C22D1Ev), // 
  (VTBL_ENTRY)_ZN9S20748C22D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C21D0Ev,_ZTv0_n24_N9S20748C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1272_N9S20748C21D0Ev,_ZThn836_N9S20748C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20748C21D0Ev,_ZThn20_N9S20748C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20748C21D0Ev,_ZThn8_N9S20748C21D0Ev),
  (VTBL_ENTRY)_ZN9S20748C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C21D1Ev,_ZTv0_n24_N9S20748C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1272_N9S20748C21D1Ev,_ZThn836_N9S20748C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20748C21D1Ev,_ZThn20_N9S20748C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20748C21D1Ev,_ZThn8_N9S20748C21D1Ev),
  (VTBL_ENTRY)_ZN9S20748C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C17D0Ev,_ZTv0_n28_N9S20748C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20748C17D0Ev,_ZThn44_N9S20748C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C17D1Ev,_ZTv0_n28_N9S20748C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20748C17D1Ev,_ZThn44_N9S20748C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C15D0Ev,_ZTv0_n28_N9S20748C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20748C15D0Ev,_ZThn100_N9S20748C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C15D1Ev,_ZTv0_n28_N9S20748C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20748C15D1Ev,_ZThn100_N9S20748C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C15D0Ev,_ZTv0_n32_N9S20748C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C15D0Ev,_ZThn56_N9S20748C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C15D1Ev,_ZTv0_n32_N9S20748C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C15D1Ev,_ZThn56_N9S20748C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C16D0Ev,_ZTv0_n28_N9S20748C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20748C16D0Ev,_ZThn100_N9S20748C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20748C16D1Ev,_ZTv0_n28_N9S20748C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20748C16D1Ev,_ZThn100_N9S20748C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C16D0Ev,_ZTv0_n32_N9S20748C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C16D0Ev,_ZThn56_N9S20748C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20748C16D1Ev,_ZTv0_n32_N9S20748C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20748C16D1Ev,_ZThn56_N9S20748C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C11D0Ev,_ZTv0_n24_N9S20748C11D0Ev), // 
  (VTBL_ENTRY)_ZN9S20748C11D0Ev,
  (VTBL_ENTRY)_ZN9S20748C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20748C11D1Ev,_ZTv0_n24_N9S20748C11D1Ev), // 
  (VTBL_ENTRY)_ZN9S20748C11D1Ev,
  (VTBL_ENTRY)_ZN9S20748C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D0Ev,_ZTv0_n24_N8S20748C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  (VTBL_ENTRY)_ZN8S20748C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C2D1Ev,_ZTv0_n24_N8S20748C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  (VTBL_ENTRY)_ZN8S20748C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C7D0Ev,_ZTv0_n24_N8S20748C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20748C7D0Ev,_ZThn216_N8S20748C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C7D1Ev,_ZTv0_n24_N8S20748C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20748C7D1Ev,_ZThn216_N8S20748C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20748C1D0Ev,_ZTv0_n48_N8S20748C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2912_N8S20748C1D0Ev,_ZThn1916_N8S20748C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20748C1D1Ev,_ZTv0_n48_N8S20748C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2912_N8S20748C1D1Ev,_ZThn1916_N8S20748C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20748C1D0Ev,_ZTv0_n28_N8S20748C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N8S20748C1D0Ev,_ZThn1080_N8S20748C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20748C1D1Ev,_ZTv0_n28_N8S20748C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N8S20748C1D1Ev,_ZThn1080_N8S20748C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20748C1D0Ev,_ZTv0_n32_N8S20748C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N8S20748C1D0Ev,_ZThn1036_N8S20748C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20748C1D1Ev,_ZTv0_n32_N8S20748C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N8S20748C1D1Ev,_ZThn1036_N8S20748C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20748C1D0Ev,_ZTv0_n36_N8S20748C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S20748C1D0Ev,_ZThn980_N8S20748C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20748C1D1Ev,_ZTv0_n36_N8S20748C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S20748C1D1Ev,_ZThn980_N8S20748C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C1D0Ev,_ZTv0_n24_N8S20748C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4088_N8S20748C1D0Ev,_ZThn2684_N8S20748C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N8S20748C1D0Ev,_ZThn1868_N8S20748C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N8S20748C1D0Ev,_ZThn1856_N8S20748C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N8S20748C1D0Ev,_ZThn1848_N8S20748C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20748C1D0Ev,_ZThn216_N8S20748C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20748C1D1Ev,_ZTv0_n24_N8S20748C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4088_N8S20748C1D1Ev,_ZThn2684_N8S20748C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N8S20748C1D1Ev,_ZThn1868_N8S20748C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N8S20748C1D1Ev,_ZThn1856_N8S20748C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N8S20748C1D1Ev,_ZThn1848_N8S20748C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20748C1D1Ev,_ZThn216_N8S20748C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20748C1 = {  "S20748C1", // class name
  bases_S20748C1, 62,
  &(vtc_S20748C1[0]), // expected_vtbl_contents
  &(vtt_S20748C1[0]), // expected_vtt_contents
  ABISELECT(4112,2696), // object size
  NSPAIRA(_ZTI8S20748C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20748C1),222, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20748C1),159, //virtual table table var
  46, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S20749C6C1Ev();
extern void _ZN8S20749C6D1Ev();
Name_Map name_map_S20749C6[] = {
  NSPAIR(_ZN8S20749C6C1Ev),
  NSPAIR(_ZN8S20749C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20749C6[];
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C6[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
Class_Descriptor cd_S20749C6 = {  "S20749C6", // class name
  0,0,//no base classes
  &(vtc_S20749C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20749C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20749C6),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  S20749C4  : virtual S20997C6 , virtual S20749C6 , S4227C37 {
  virtual  ~S20749C4(); // _ZN8S20749C4D2Ev
  S20749C4(); // tgen
};
//SIG(-1 S20749C4) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S20749C4()
{
  extern Class_Descriptor cd_S20749C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20749C4, buf);
    S20749C4 *dp, &lv = *(dp=new (buf) S20749C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20749C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C4)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20749C4");
    check_base_class_offset(lv, (S20749C6*), 0, "S20749C4");
    check_base_class_offset(lv, (S4227C37*), 0, "S20749C4");
    test_class_info(&lv, &cd_S20749C4);
    dp->~S20749C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C4(Test_S20749C4, "S20749C4", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S20749C4C1Ev();
extern void _ZN8S20749C4D2Ev();
Name_Map name_map_S20749C4[] = {
  NSPAIR(_ZN8S20749C4C1Ev),
  NSPAIR(_ZN8S20749C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S20749C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20749C6,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20749C4[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY vtc_S20749C4[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern VTBL_ENTRY _ZTV8S20749C4[];
static  VTT_ENTRY vtt_S20749C4[] = {
  {&(_ZTV8S20749C4[5]),  5,8},
  {&(_ZTV8S20749C4[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
Class_Descriptor cd_S20749C4 = {  "S20749C4", // class name
  bases_S20749C4, 3,
  &(vtc_S20749C4[0]), // expected_vtbl_contents
  &(vtt_S20749C4[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S20749C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20749C4),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20749C4),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  S20749C2  : virtual S4227C37 , virtual S20749C4 {
  virtual void  v2(); // _ZN8S20749C22v2Ev
  ~S20749C2(); // tgen
  S20749C2(); // tgen
};
//SIG(-1 S20749C2) C1{ VBC2{ m} VBC3{ VBC4{ m FL[5]} VBC5{ v2} BC2 vd} v1}


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

static void Test_S20749C2()
{
  extern Class_Descriptor cd_S20749C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20749C2, buf);
    S20749C2 *dp, &lv = *(dp=new (buf) S20749C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20749C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C2)");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), ABISELECT(8,4), "S20749C2");
    check_base_class_offset(lv, (S20997C6*)(S20749C4*), ABISELECT(8,4), "S20749C2");
    check_base_class_offset(lv, (S20749C6*)(S20749C4*), 0, "S20749C2");
    check_base_class_offset(lv, (S4227C37*)(S20749C4*), 0, "S20749C2");
    check_base_class_offset(lv, (S20749C4*), 0, "S20749C2");
    test_class_info(&lv, &cd_S20749C2);
    dp->~S20749C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C2(Test_S20749C2, "S20749C2", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S20749C2C1Ev();
extern void _ZN8S20749C2D1Ev();
Name_Map name_map_S20749C2[] = {
  NSPAIR(_ZN8S20749C2C1Ev),
  NSPAIR(_ZN8S20749C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
static Base_Class bases_S20749C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20749C6,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20749C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20749C2[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C2D1Ev();
extern void _ZN8S20749C2D0Ev();
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY vtc_S20749C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern VTBL_ENTRY _ZTV8S20749C2[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C4__8S20749C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
static  VTT_ENTRY vtt_S20749C2[] = {
  {&(_ZTV8S20749C2[8]),  8,12},
  {&(_ZTV8S20749C2[8]),  8,12},
  {&(_ZTV8S20749C2[8]),  8,12},
  {&(_tg__ZTV8S20749C4__8S20749C2[5]),  5,8},
  {&(_tg__ZTV8S20749C4__8S20749C2[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
Class_Descriptor cd_S20749C2 = {  "S20749C2", // class name
  bases_S20749C2, 5,
  &(vtc_S20749C2[0]), // expected_vtbl_contents
  &(vtt_S20749C2[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S20749C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20749C2),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20749C2),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C9  : S20749C6 , virtual S20997C6 , S4227C37 {
  void *s20749c9f0[10];
  ~S20749C9(); // tgen
  S20749C9(); // tgen
};
//SIG(-1 S20749C9) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S20749C9()
{
  extern Class_Descriptor cd_S20749C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S20749C9, buf);
    S20749C9 *dp, &lv = *(dp=new (buf) S20749C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S20749C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C9)");
    check_base_class_offset(lv, (S20749C6*), 0, "S20749C9");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S20749C9");
    check_base_class_offset(lv, (S4227C37*), 0, "S20749C9");
    check_field_offset(lv, s20749c9f0, ABISELECT(8,4), "S20749C9.s20749c9f0");
    test_class_info(&lv, &cd_S20749C9);
    dp->~S20749C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C9(Test_S20749C9, "S20749C9", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN8S20749C9C1Ev();
extern void _ZN8S20749C9D1Ev();
Name_Map name_map_S20749C9[] = {
  NSPAIR(_ZN8S20749C9C1Ev),
  NSPAIR(_ZN8S20749C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S20749C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20749C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20749C9[];
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C9[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S20749C9[];
static  VTT_ENTRY vtt_S20749C9[] = {
  {&(_ZTV8S20749C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
Class_Descriptor cd_S20749C9 = {  "S20749C9", // class name
  bases_S20749C9, 3,
  &(vtc_S20749C9[0]), // expected_vtbl_contents
  &(vtt_S20749C9[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI8S20749C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20749C9),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20749C9),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  S20749C8  : virtual S20749C9 {
  ~S20749C8(); // tgen
  S20749C8(); // tgen
};
//SIG(-1 S20749C8) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]}}


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

static void Test_S20749C8()
{
  extern Class_Descriptor cd_S20749C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S20749C8, buf);
    S20749C8 *dp, &lv = *(dp=new (buf) S20749C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S20749C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C8)");
    check_base_class_offset(lv, (S20749C6*)(S20749C9*), ABISELECT(8,4), "S20749C8");
    check_base_class_offset(lv, (S20997C6*)(S20749C9*), ABISELECT(96,48), "S20749C8");
    check_base_class_offset(lv, (S4227C37*)(S20749C9*), ABISELECT(8,4), "S20749C8");
    check_base_class_offset(lv, (S20749C9*), ABISELECT(8,4), "S20749C8");
    test_class_info(&lv, &cd_S20749C8);
    dp->~S20749C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C8(Test_S20749C8, "S20749C8", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN8S20749C8C1Ev();
extern void _ZN8S20749C8D1Ev();
Name_Map name_map_S20749C8[] = {
  NSPAIR(_ZN8S20749C8C1Ev),
  NSPAIR(_ZN8S20749C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
static Base_Class bases_S20749C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20749C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C9,    ABISELECT(8,4), //bcp->offset
    4, //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 _ZTI8S20749C8[];
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C8[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C8[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20749C8[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S20749C8[];
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__8S20749C8[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
static  VTT_ENTRY vtt_S20749C8[] = {
  {&(_ZTV8S20749C8[4]),  4,9},
  {&(_ZTV8S20749C8[8]),  8,9},
  {&(_tg__ZTV8S20749C9__8S20749C8[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20749C8[];
extern  VTBL_ENTRY _ZTV8S20749C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C8[];
Class_Descriptor cd_S20749C8 = {  "S20749C8", // class name
  bases_S20749C8, 4,
  &(vtc_S20749C8[0]), // expected_vtbl_contents
  &(vtt_S20749C8[0]), // expected_vtt_contents
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI8S20749C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20749C8),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20749C8),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C12  : virtual S20749C6 {
  ::S20749C9 s20749c12f0[9];
  ~S20749C12(); // tgen
  S20749C12(); // tgen
};
//SIG(-1 S20749C12) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S20749C12()
{
  extern Class_Descriptor cd_S20749C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S20749C12, buf);
    S20749C12 *dp, &lv = *(dp=new (buf) S20749C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S20749C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C12)");
    check_base_class_offset(lv, (S20749C6*), 0, "S20749C12");
    check_field_offset(lv, s20749c12f0, ABISELECT(8,4), "S20749C12.s20749c12f0");
    test_class_info(&lv, &cd_S20749C12);
    dp->~S20749C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C12(Test_S20749C12, "S20749C12", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN9S20749C12C1Ev();
extern void _ZN9S20749C12D1Ev();
Name_Map name_map_S20749C12[] = {
  NSPAIR(_ZN9S20749C12C1Ev),
  NSPAIR(_ZN9S20749C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
static Base_Class bases_S20749C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20749C6,    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 _ZTI9S20749C12[];
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20749C12[];
static  VTT_ENTRY vtt_S20749C12[] = {
  {&(_ZTV9S20749C12[4]),  4,5},
  {&(_ZTV9S20749C12[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
Class_Descriptor cd_S20749C12 = {  "S20749C12", // class name
  bases_S20749C12, 1,
  &(vtc_S20749C12[0]), // expected_vtbl_contents
  &(vtt_S20749C12[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI9S20749C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20749C12),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C12),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  S20749C11  : virtual S20749C6 , virtual S20749C4 , virtual S10258C6_nt , virtual S20749C2 , virtual S20749C12 {
  virtual  ~S20749C11(); // _ZN9S20749C11D2Ev
  S20749C11(); // tgen
};
//SIG(-1 S20749C11) C1{ VBC2{ v1} VBC3{ VBC4{ m FL[5]} VBC2 BC5{ m} vd} VBC6{ m FL[4]} VBC7{ VBC5 VBC3 v2} VBC8{ VBC2 FC9{ BC2 VBC4 BC5 Fp[10]}[9]} vd}


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

static void Test_S20749C11()
{
  extern Class_Descriptor cd_S20749C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(156,210)];
    init_test(&cd_S20749C11, buf);
    S20749C11 *dp, &lv = *(dp=new (buf) S20749C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1240,836), "sizeof(S20749C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C11)");
    check_base_class_offset(lv, (S20749C6*), 0, "S20749C11");
    check_base_class_offset(lv, (S20749C6*)(S20749C4*), 0, "S20749C11");
    check_base_class_offset(lv, (S20749C6*)(S20749C12*), 0, "S20749C11");
    check_base_class_offset(lv, (S20997C6*)(S20749C4*), ABISELECT(8,4), "S20749C11");
    check_base_class_offset(lv, (S4227C37*)(S20749C4*), 0, "S20749C11");
    check_base_class_offset(lv, (S20749C4*), 0, "S20749C11");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*), 0, "S20749C11");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(48,44), "S20749C11");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*), ABISELECT(80,76), "S20749C11");
    check_base_class_offset(lv, (S20749C2*), 0, "S20749C11");
    check_base_class_offset(lv, (S20749C12*), ABISELECT(80,76), "S20749C11");
    test_class_info(&lv, &cd_S20749C11);
    dp->~S20749C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C11(Test_S20749C11, "S20749C11", ABISELECT(1240,836));

#else // __cplusplus

extern void _ZN9S20749C11C1Ev();
extern void _ZN9S20749C11D2Ev();
Name_Map name_map_S20749C11[] = {
  NSPAIR(_ZN9S20749C11C1Ev),
  NSPAIR(_ZN9S20749C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
static Base_Class bases_S20749C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20749C6,    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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(80,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20749C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20749C12,    ABISELECT(80,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C11[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C11D1Ev();
extern void _ZN9S20749C11D0Ev();
extern void _ZN8S20749C22v2Ev();
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C11[] = {
  ABISELECT(80,76),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C11D0Ev,
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20749C11[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C11[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__9S20749C11[] = {
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__9S20749C11[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C12__9S20749C11[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
static  VTT_ENTRY vtt_S20749C11[] = {
  {&(_ZTV9S20749C11[12]),  12,21},
  {&(_ZTV9S20749C11[12]),  12,21},
  {&(_ZTV9S20749C11[12]),  12,21},
  {&(_ZTV9S20749C11[12]),  12,21},
  {&(_ZTV9S20749C11[20]),  20,21},
  {&(_tg__ZTV8S20749C4__9S20749C11[5]),  5,8},
  {&(_tg__ZTV8S20749C4__9S20749C11[5]),  5,8},
  {&(_tg__ZTV8S20749C2__9S20749C11[8]),  8,12},
  {&(_tg__ZTV8S20749C2__9S20749C11[8]),  8,12},
  {&(_tg__ZTV8S20749C2__9S20749C11[8]),  8,12},
  {&(_tg__ZTV9S20749C12__9S20749C11[4]),  4,5},
  {&(_tg__ZTV8S20749C6__9S20749C12__9S20749C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20749C11[];
extern  VTBL_ENTRY _ZTV9S20749C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C11[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20749C11 = {  "S20749C11", // class name
  bases_S20749C11, 8,
  &(vtc_S20749C11[0]), // expected_vtbl_contents
  &(vtt_S20749C11[0]), // expected_vtt_contents
  ABISELECT(1240,836), // object size
  NSPAIRA(_ZTI9S20749C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20749C11),21, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C11),12, //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  S20749C14  : S20997C6 , S20749C6 {
  ~S20749C14(); // tgen
  S20749C14(); // tgen
};
//SIG(-1 S20749C14) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S20749C14()
{
  extern Class_Descriptor cd_S20749C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20749C14, buf);
    S20749C14 *dp, &lv = *(dp=new (buf) S20749C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20749C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C14)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20749C14");
    check_base_class_offset(lv, (S20749C6*), 0, "S20749C14");
    test_class_info(&lv, &cd_S20749C14);
    dp->~S20749C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C14(Test_S20749C14, "S20749C14", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S20749C14C1Ev();
extern void _ZN9S20749C14D1Ev();
Name_Map name_map_S20749C14[] = {
  NSPAIR(_ZN9S20749C14C1Ev),
  NSPAIR(_ZN9S20749C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
static Base_Class bases_S20749C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20749C6,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C14[];
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C14[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
Class_Descriptor cd_S20749C14 = {  "S20749C14", // class name
  bases_S20749C14, 2,
  &(vtc_S20749C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S20749C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20749C14),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C13  : S20749C14 , S20749C9 {
  ~S20749C13(); // tgen
  S20749C13(); // tgen
};
//SIG(-1 S20749C13) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} BC5{ BC4 VBC3 BC6{ m} Fp[10]}}


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

static void Test_S20749C13()
{
  extern Class_Descriptor cd_S20749C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S20749C13, buf);
    S20749C13 *dp, &lv = *(dp=new (buf) S20749C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S20749C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C13)");
    check_base_class_offset(lv, (S20997C6*)(S20749C14*), ABISELECT(8,4), "S20749C13");
    check_base_class_offset(lv, (S20749C6*)(S20749C14*), 0, "S20749C13");
    check_base_class_offset(lv, (S20749C14*), 0, "S20749C13");
    check_base_class_offset(lv, (S20749C6*)(S20749C9*), ABISELECT(48,44), "S20749C13");
    check_base_class_offset(lv, (S20997C6*)(S20749C9*), ABISELECT(136,88), "S20749C13");
    check_base_class_offset(lv, (S4227C37*)(S20749C9*), ABISELECT(48,44), "S20749C13");
    check_base_class_offset(lv, (S20749C9*), ABISELECT(48,44), "S20749C13");
    test_class_info(&lv, &cd_S20749C13);
    dp->~S20749C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C13(Test_S20749C13, "S20749C13", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN9S20749C13C1Ev();
extern void _ZN9S20749C13D1Ev();
Name_Map name_map_S20749C13[] = {
  NSPAIR(_ZN9S20749C13C1Ev),
  NSPAIR(_ZN9S20749C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
static Base_Class bases_S20749C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20749C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20749C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S20749C6,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    6, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20749C9,    ABISELECT(48,44), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C13[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C13[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C13[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  ABISELECT(88,44),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20749C13[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20749C13[];
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__9S20749C13[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
static  VTT_ENTRY vtt_S20749C13[] = {
  {&(_ZTV9S20749C13[3]),  3,8},
  {&(_tg__ZTV8S20749C9__9S20749C13[3]),  3,4},
  {&(_ZTV9S20749C13[7]),  7,8},
};
extern VTBL_ENTRY _ZTI9S20749C13[];
extern  VTBL_ENTRY _ZTV9S20749C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C13[];
Class_Descriptor cd_S20749C13 = {  "S20749C13", // class name
  bases_S20749C13, 7,
  &(vtc_S20749C13[0]), // expected_vtbl_contents
  &(vtt_S20749C13[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI9S20749C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20749C13),8, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C13),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  S20749C7  : virtual S20749C8 , S20749C6 , virtual S10258C6_nt , virtual S20749C11 , S20749C13 {
  ~S20749C7(); // tgen
  S20749C7(); // tgen
};
//SIG(-1 S20749C7) C1{ VBC2{ VBC3{ BC4{ v1} VBC5{ m FL[5]} BC6{ m} Fp[10]}} BC4 VBC7{ m FL[4]} VBC8{ VBC4 VBC9{ VBC5 VBC4 BC6 vd} VBC7 VBC10{ VBC6 VBC9 v2} VBC11{ VBC4 FC3[9]} vd} BC12{ BC13{ BC5 BC4} BC3}}


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

static void Test_S20749C7()
{
  extern Class_Descriptor cd_S20749C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(186,245)];
    init_test(&cd_S20749C7, buf);
    S20749C7 *dp, &lv = *(dp=new (buf) S20749C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1480,976), "sizeof(S20749C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C7)");
    /*is_ambiguous_... S20749C7::S20749C9 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C9*), ABISELECT(152,96), "S20749C7");
    /*is_ambiguous_... S20749C7::S20749C9 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C9*), ABISELECT(240,140), "S20749C7");
    check_base_class_offset(lv, (S20997C6*)(S20749C4*), ABISELECT(240,140), "S20749C7");
    check_base_class_offset(lv, (S20997C6*)(S20749C9*)(S20749C13*), ABISELECT(240,140), "S20749C7");
    /*is_ambiguous_... S20749C7::S20749C9 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C9*), ABISELECT(152,96), "S20749C7");
    check_base_class_offset(lv, (S20749C9*)(S20749C8*), ABISELECT(152,96), "S20749C7");
    check_base_class_offset(lv, (S20749C8*), ABISELECT(144,92), "S20749C7");
    /*is_ambiguous_... S20749C7::S20749C6 */ AMB_check_base_class_offset(lv, (S20749C6*), 0, "S20749C7");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(280,180), "S20749C7");
    check_base_class_offset(lv, (S10258C6_nt*)(S20749C11*), ABISELECT(280,180), "S20749C7");
    check_base_class_offset(lv, (S20749C6*)(S20749C11*), ABISELECT(312,212), "S20749C7");
    check_base_class_offset(lv, (S20749C6*)(S20749C4*), ABISELECT(312,212), "S20749C7");
    check_base_class_offset(lv, (S20749C6*)(S20749C12*), ABISELECT(312,212), "S20749C7");
    check_base_class_offset(lv, (S4227C37*)(S20749C4*), ABISELECT(312,212), "S20749C7");
    check_base_class_offset(lv, (S20749C4*)(S20749C11*), ABISELECT(312,212), "S20749C7");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*), ABISELECT(312,212), "S20749C7");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*), 0, "S20749C7");
    check_base_class_offset(lv, (S20749C2*)(S20749C11*), ABISELECT(312,212), "S20749C7");
    check_base_class_offset(lv, (S20749C12*)(S20749C11*), ABISELECT(320,216), "S20749C7");
    check_base_class_offset(lv, (S20749C11*), ABISELECT(312,212), "S20749C7");
    check_base_class_offset(lv, (S20997C6*)(S20749C14*)(S20749C13*), ABISELECT(16,8), "S20749C7");
    check_base_class_offset(lv, (S20749C6*)(S20749C14*)(S20749C13*), ABISELECT(8,4), "S20749C7");
    check_base_class_offset(lv, (S20749C14*)(S20749C13*), ABISELECT(8,4), "S20749C7");
    check_base_class_offset(lv, (S20749C6*)(S20749C9*)(S20749C13*), ABISELECT(56,48), "S20749C7");
    check_base_class_offset(lv, (S4227C37*)(S20749C9*)(S20749C13*), ABISELECT(56,48), "S20749C7");
    check_base_class_offset(lv, (S20749C9*)(S20749C13*), ABISELECT(56,48), "S20749C7");
    check_base_class_offset(lv, (S20749C13*), ABISELECT(8,4), "S20749C7");
    test_class_info(&lv, &cd_S20749C7);
    dp->~S20749C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C7(Test_S20749C7, "S20749C7", ABISELECT(1480,976));

#else // __cplusplus

extern void _ZN8S20749C7C1Ev();
extern void _ZN8S20749C7D1Ev();
Name_Map name_map_S20749C7[] = {
  NSPAIR(_ZN8S20749C7C1Ev),
  NSPAIR(_ZN8S20749C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
extern Class_Descriptor cd_S20749C8;
extern VTBL_ENTRY _ZTI8S20749C8[];
extern  VTBL_ENTRY _ZTV8S20749C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C8[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S20749C11;
extern VTBL_ENTRY _ZTI9S20749C11[];
extern  VTBL_ENTRY _ZTV9S20749C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C11[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
extern Class_Descriptor cd_S20749C13;
extern VTBL_ENTRY _ZTI9S20749C13[];
extern  VTBL_ENTRY _ZTV9S20749C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C13[];
static Base_Class bases_S20749C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20749C6,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20749C9,    ABISELECT(152,96), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20749C8,    ABISELECT(144,92), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20749C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10258C6_nt,    ABISELECT(280,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20749C6,    ABISELECT(312,212), //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
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(312,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
    9, //immediately_derived
  0, 0},
  {&cd_S20749C4,    ABISELECT(312,212), //bcp->offset
    -1, //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
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C2,    ABISELECT(312,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20749C12,    ABISELECT(320,216), //bcp->offset
    48, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20749C11,    ABISELECT(312,212), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20749C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20749C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20749C6,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20749C9,    ABISELECT(56,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20749C13,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //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 _ZTI8S20749C7[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C7D1Ev();
extern void _ZN8S20749C7D0Ev();
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C7D1Ev,_ZTv0_n24_N8S20749C7D1Ev)();
extern void ABISELECT(_ZThn312_N8S20749C7D1Ev,_ZThn212_N8S20749C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C7D0Ev,_ZTv0_n24_N8S20749C7D0Ev)();
extern void ABISELECT(_ZThn312_N8S20749C7D0Ev,_ZThn212_N8S20749C7D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C7[] = {
  ABISELECT(320,216),
  0,
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(280,180),
  ABISELECT(240,140),
  ABISELECT(152,96),
  ABISELECT(144,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C7D0Ev,
  ABISELECT(232,136),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  ABISELECT(184,92),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  ABISELECT(96,48),
  ABISELECT(8,4),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-312,-212),
  ABISELECT(-312,-212),
  0,
  -72,
  0,
  ABISELECT(-312,-212),
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C7D1Ev,_ZTv0_n24_N8S20749C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C7D0Ev,_ZTv0_n24_N8S20749C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTV8S20749C7[];
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C13__8S20749C7[] = {
  ABISELECT(232,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C13[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C99S20749C13__A1__8S20749C7[] = {
  ABISELECT(184,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__9S20749C13__8S20749C7[] = {
  ABISELECT(184,92),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20749C13[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20749C8__8S20749C7[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C8[0]),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__8S20749C8__8S20749C7[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20749C8[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__8S20749C7[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev)();
extern void _ZN9S20749C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev)();
extern void _ZN9S20749C11D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C11__8S20749C7[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-312,-212),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__9S20749C11__8S20749C7[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C4__8S20749C7[] = {
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__8S20749C7[] = {
  0,
  ABISELECT(-312,-212),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__8S20749C7[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C12__8S20749C7[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
static  VTT_ENTRY vtt_S20749C7[] = {
  {&(_ZTV8S20749C7[12]),  12,53},
  {&(_tg__ZTV9S20749C13__8S20749C7[3]),  3,4},
  {&(_tg__ZTV8S20749C99S20749C13__A1__8S20749C7[3]),  3,4},
  {&(_tg__ZTV8S20749C9__9S20749C13__8S20749C7[3]),  3,4},
  {&(_ZTV8S20749C7[27]),  27,53},
  {&(_ZTV8S20749C7[31]),  31,53},
  {&(_ZTV8S20749C7[44]),  44,53},
  {&(_ZTV8S20749C7[44]),  44,53},
  {&(_ZTV8S20749C7[44]),  44,53},
  {&(_ZTV8S20749C7[44]),  44,53},
  {&(_ZTV8S20749C7[52]),  52,53},
  {&(_ZTV8S20749C7[18]),  18,53},
  {&(_ZTV8S20749C7[22]),  22,53},
  {&(_tg__ZTV8S20749C8__8S20749C7[4]),  4,4},
  {&(_tg__ZTV8S20749C9__8S20749C8__8S20749C7[4]),  4,5},
  {&(_tg__ZTV8S20749C9__8S20749C7[3]),  3,4},
  {&(_tg__ZTV9S20749C11__8S20749C7[12]),  12,16},
  {&(_tg__ZTV9S20749C11__8S20749C7[12]),  12,16},
  {&(_tg__ZTV9S20749C11__8S20749C7[12]),  12,16},
  {&(_tg__ZTV9S20749C11__8S20749C7[12]),  12,16},
  {&(_tg__ZTV9S20749C12__9S20749C11__8S20749C7[4]),  4,5},
  {&(_tg__ZTV8S20749C4__8S20749C7[5]),  5,8},
  {&(_tg__ZTV8S20749C4__8S20749C7[5]),  5,8},
  {&(_tg__ZTV8S20749C2__8S20749C7[8]),  8,12},
  {&(_tg__ZTV8S20749C2__8S20749C7[8]),  8,12},
  {&(_tg__ZTV8S20749C2__8S20749C7[8]),  8,12},
  {&(_tg__ZTV9S20749C12__8S20749C7[4]),  4,5},
  {&(_tg__ZTV8S20749C6__9S20749C12__8S20749C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20749C7[];
extern  VTBL_ENTRY _ZTV8S20749C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C7[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev), // 
  (VTBL_ENTRY)_ZN9S20749C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev), // 
  (VTBL_ENTRY)_ZN9S20749C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C7D0Ev,_ZTv0_n24_N8S20749C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20749C7D0Ev,_ZThn212_N8S20749C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C7D1Ev,_ZTv0_n24_N8S20749C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20749C7D1Ev,_ZThn212_N8S20749C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20749C7 = {  "S20749C7", // class name
  bases_S20749C7, 21,
  &(vtc_S20749C7[0]), // expected_vtbl_contents
  &(vtt_S20749C7[0]), // expected_vtt_contents
  ABISELECT(1480,976), // object size
  NSPAIRA(_ZTI8S20749C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20749C7),53, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20749C7),28, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C19  : S20749C4 {
  virtual  ~S20749C19(); // _ZN9S20749C19D2Ev
  S20749C19(); // tgen
};
//SIG(-1 S20749C19) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S20749C19()
{
  extern Class_Descriptor cd_S20749C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20749C19, buf);
    S20749C19 *dp, &lv = *(dp=new (buf) S20749C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20749C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C19)");
    check_base_class_offset(lv, (S20997C6*)(S20749C4*), ABISELECT(8,4), "S20749C19");
    check_base_class_offset(lv, (S20749C6*)(S20749C4*), 0, "S20749C19");
    check_base_class_offset(lv, (S4227C37*)(S20749C4*), 0, "S20749C19");
    check_base_class_offset(lv, (S20749C4*), 0, "S20749C19");
    test_class_info(&lv, &cd_S20749C19);
    dp->~S20749C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C19(Test_S20749C19, "S20749C19", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S20749C19C1Ev();
extern void _ZN9S20749C19D2Ev();
Name_Map name_map_S20749C19[] = {
  NSPAIR(_ZN9S20749C19C1Ev),
  NSPAIR(_ZN9S20749C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
static Base_Class bases_S20749C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C19[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C19D1Ev();
extern void _ZN9S20749C19D0Ev();
static  VTBL_ENTRY vtc_S20749C19[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D0Ev,
};
extern VTBL_ENTRY _ZTV9S20749C19[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C19[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
static  VTT_ENTRY vtt_S20749C19[] = {
  {&(_ZTV9S20749C19[5]),  5,8},
  {&(_tg__ZTV8S20749C4__9S20749C19[5]),  5,8},
  {&(_tg__ZTV8S20749C4__9S20749C19[5]),  5,8},
  {&(_ZTV9S20749C19[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20749C19[];
extern  VTBL_ENTRY _ZTV9S20749C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C19[];
Class_Descriptor cd_S20749C19 = {  "S20749C19", // class name
  bases_S20749C19, 4,
  &(vtc_S20749C19[0]), // expected_vtbl_contents
  &(vtt_S20749C19[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S20749C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20749C19),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C19),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  S20749C18  : virtual S4227C37 , S20749C12 , S20749C4 , S20749C19 {
  ~S20749C18(); // tgen
  S20749C18(); // tgen
};
//SIG(-1 S20749C18) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S20749C18()
{
  extern Class_Descriptor cd_S20749C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S20749C18, buf);
    S20749C18 *dp, &lv = *(dp=new (buf) S20749C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S20749C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C18)");
    /*is_ambiguous_... S20749C18::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S20749C18");
    check_base_class_offset(lv, (S20749C6*)(S20749C12*), 0, "S20749C18");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*), 0, "S20749C18");
    check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C19*), 0, "S20749C18");
    check_base_class_offset(lv, (S20749C12*), 0, "S20749C18");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*), ABISELECT(1176,768), "S20749C18");
    check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C19*), ABISELECT(1176,768), "S20749C18");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*), ABISELECT(1160,760), "S20749C18");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C4*), ABISELECT(1160,760), "S20749C18");
    check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C19*), ABISELECT(1168,764), "S20749C18");
    check_base_class_offset(lv, (S20749C4*)(S20749C19*), ABISELECT(1168,764), "S20749C18");
    check_base_class_offset(lv, (S20749C19*), ABISELECT(1168,764), "S20749C18");
    test_class_info(&lv, &cd_S20749C18);
    dp->~S20749C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C18(Test_S20749C18, "S20749C18", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN9S20749C18C1Ev();
extern void _ZN9S20749C18D1Ev();
Name_Map name_map_S20749C18[] = {
  NSPAIR(_ZN9S20749C18C1Ev),
  NSPAIR(_ZN9S20749C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C19;
extern VTBL_ENTRY _ZTI9S20749C19[];
extern  VTBL_ENTRY _ZTV9S20749C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C19[];
static Base_Class bases_S20749C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20749C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20749C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20749C19,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C18[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C18D1Ev();
extern void _ZN9S20749C18D0Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev)();
static  VTBL_ENTRY vtc_S20749C18[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20749C18[];
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__9S20749C18[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C18[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C4__9S20749C18[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C19D1Ev();
extern void _ZN9S20749C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C19__9S20749C18[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C19__A1__9S20749C18[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C19__A1__9S20749C18[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C19__9S20749C18[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
static  VTT_ENTRY vtt_S20749C18[] = {
  {&(_ZTV9S20749C18[6]),  6,25},
  {&(_tg__ZTV9S20749C12__9S20749C18[4]),  4,5},
  {&(_tg__ZTV9S20749C12__9S20749C18[4]),  4,5},
  {&(_tg__ZTV8S20749C4__9S20749C18[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C4__9S20749C18[3]),  3,4},
  {&(_tg__ZTV9S20749C19__9S20749C18[5]),  5,8},
  {&(_tg__ZTV8S20749C49S20749C19__A1__9S20749C18[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C19__A1__9S20749C18[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C19__9S20749C18[3]),  3,4},
  {&(_ZTV9S20749C18[6]),  6,25},
  {&(_ZTV9S20749C18[14]),  14,25},
  {&(_ZTV9S20749C18[22]),  22,25},
};
extern VTBL_ENTRY _ZTI9S20749C18[];
extern  VTBL_ENTRY _ZTV9S20749C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C18[];
Class_Descriptor cd_S20749C18 = {  "S20749C18", // class name
  bases_S20749C18, 9,
  &(vtc_S20749C18[0]), // expected_vtbl_contents
  &(vtt_S20749C18[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI9S20749C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20749C18),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C18),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  S20749C17  : virtual S20749C6 , S20749C9 , virtual S20749C18 {
  virtual  ~S20749C17(); // _ZN9S20749C17D2Ev
  S20749C17(); // tgen
};
//SIG(-1 S20749C17) C1{ VBC2{ v1} BC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC5 BC7{ VBC2 FC3[9]} BC8{ VBC4 VBC2 BC5 vd} BC9{ BC8 vd}} vd}


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

static void Test_S20749C17()
{
  extern Class_Descriptor cd_S20749C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(165,215)];
    init_test(&cd_S20749C17, buf);
    S20749C17 *dp, &lv = *(dp=new (buf) S20749C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1312,856), "sizeof(S20749C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C17)");
    /*is_ambiguous_... S20749C17::S20749C6 */ AMB_check_base_class_offset(lv, (S20749C6*), ABISELECT(128,84), "S20749C17");
    check_base_class_offset(lv, (S20749C6*)(S20749C12*)(S20749C18*), ABISELECT(128,84), "S20749C17");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C18*), ABISELECT(128,84), "S20749C17");
    check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(128,84), "S20749C17");
    check_base_class_offset(lv, (S20749C6*)(S20749C9*), 0, "S20749C17");
    check_base_class_offset(lv, (S20997C6*)(S20749C9*), ABISELECT(88,44), "S20749C17");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C18*), ABISELECT(88,44), "S20749C17");
    check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(88,44), "S20749C17");
    check_base_class_offset(lv, (S4227C37*)(S20749C9*), 0, "S20749C17");
    check_base_class_offset(lv, (S20749C9*), 0, "S20749C17");
    /*is_ambiguous_... S20749C18::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C18*), ABISELECT(1304,852), "S20749C17");
    check_base_class_offset(lv, (S20749C12*)(S20749C18*), ABISELECT(128,84), "S20749C17");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C18*), ABISELECT(1288,844), "S20749C17");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C18*), ABISELECT(1288,844), "S20749C17");
    check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(1296,848), "S20749C17");
    check_base_class_offset(lv, (S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(1296,848), "S20749C17");
    check_base_class_offset(lv, (S20749C19*)(S20749C18*), ABISELECT(1296,848), "S20749C17");
    check_base_class_offset(lv, (S20749C18*), ABISELECT(128,84), "S20749C17");
    test_class_info(&lv, &cd_S20749C17);
    dp->~S20749C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C17(Test_S20749C17, "S20749C17", ABISELECT(1312,856));

#else // __cplusplus

extern void _ZN9S20749C17C1Ev();
extern void _ZN9S20749C17D2Ev();
Name_Map name_map_S20749C17[] = {
  NSPAIR(_ZN9S20749C17C1Ev),
  NSPAIR(_ZN9S20749C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C19;
extern VTBL_ENTRY _ZTI9S20749C19[];
extern  VTBL_ENTRY _ZTV9S20749C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C19[];
extern Class_Descriptor cd_S20749C18;
extern VTBL_ENTRY _ZTI9S20749C18[];
extern  VTBL_ENTRY _ZTV9S20749C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C18[];
static Base_Class bases_S20749C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20749C6,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20749C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20749C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C12,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1288,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(1288,844), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(1296,848), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20749C19,    ABISELECT(1296,848), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S20749C18,    ABISELECT(128,84), //bcp->offset
    9, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C17[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C17D1Ev();
extern void _ZN9S20749C17D0Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S20749C17D1Ev,_ZThn84_N9S20749C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S20749C17D0Ev,_ZThn84_N9S20749C17D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C17D1Ev,_ZTvn760_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C17D0Ev,_ZTvn760_n28_N9S20749C17D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C17D1Ev,_ZTvn764_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C17D0Ev,_ZTvn764_n28_N9S20749C17D0Ev)();
static  VTBL_ENTRY vtc_S20749C17[] = {
  ABISELECT(1304,852),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C17D0Ev,
  ABISELECT(-128,-84),
  -40,
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C17D1Ev,_ZTvn760_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C17D0Ev,_ZTvn760_n28_N9S20749C17D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C17D1Ev,_ZTvn764_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C17D0Ev,_ZTvn764_n28_N9S20749C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S20749C17[];
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__9S20749C17[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C18D1Ev();
extern void _ZN9S20749C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C17[] = {
  -40,
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C129S20749C18__9S20749C17[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C17[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C18__9S20749C17[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C19D1Ev();
extern void _ZN9S20749C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C17[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C199S20749C18__A1__9S20749C17[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A1__9S20749C17[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C199S20749C18__9S20749C17[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C18__9S20749C17[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C19__9S20749C18__9S20749C17[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev),
};
static  VTT_ENTRY vtt_S20749C17[] = {
  {&(_ZTV9S20749C17[6]),  6,35},
  {&(_tg__ZTV8S20749C9__9S20749C17[3]),  3,4},
  {&(_ZTV9S20749C17[16]),  16,35},
  {&(_ZTV9S20749C17[16]),  16,35},
  {&(_ZTV9S20749C17[24]),  24,35},
  {&(_ZTV9S20749C17[32]),  32,35},
  {&(_tg__ZTV9S20749C18__9S20749C17[6]),  6,9},
  {&(_tg__ZTV9S20749C129S20749C18__9S20749C17[4]),  4,5},
  {&(_tg__ZTV9S20749C129S20749C18__9S20749C17[4]),  4,5},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C17[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C18__9S20749C17[3]),  3,4},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C17[5]),  5,8},
  {&(_tg__ZTV8S20749C49S20749C199S20749C18__A1__9S20749C17[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A1__9S20749C17[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C199S20749C18__9S20749C17[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C17[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C18__9S20749C17[5]),  5,8},
  {&(_tg__ZTV9S20749C19__9S20749C18__9S20749C17[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20749C17[];
extern  VTBL_ENTRY _ZTV9S20749C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C17[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20749C17D0Ev,_ZThn84_N9S20749C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20749C17D1Ev,_ZThn84_N9S20749C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20749C17 = {  "S20749C17", // class name
  bases_S20749C17, 13,
  &(vtc_S20749C17[0]), // expected_vtbl_contents
  &(vtt_S20749C17[0]), // expected_vtt_contents
  ABISELECT(1312,856), // object size
  NSPAIRA(_ZTI9S20749C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20749C17),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C17),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C20  : S20749C14 {
  long double s20749c20f0;
  ~S20749C20(); // tgen
  S20749C20(); // tgen
};
//SIG(-1 S20749C20) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} FD}


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

static void Test_S20749C20()
{
  extern Class_Descriptor cd_S20749C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,15)];
    init_test(&cd_S20749C20, buf);
    S20749C20 *dp, &lv = *(dp=new (buf) S20749C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S20749C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20749C20)");
    check_base_class_offset(lv, (S20997C6*)(S20749C14*), ABISELECT(8,4), "S20749C20");
    check_base_class_offset(lv, (S20749C6*)(S20749C14*), 0, "S20749C20");
    check_base_class_offset(lv, (S20749C14*), 0, "S20749C20");
    check_field_offset(lv, s20749c20f0, ABISELECT(48,44), "S20749C20.s20749c20f0");
    test_class_info(&lv, &cd_S20749C20);
    dp->~S20749C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C20(Test_S20749C20, "S20749C20", ABISELECT(64,56));

#else // __cplusplus

extern void _ZN9S20749C20C1Ev();
extern void _ZN9S20749C20D1Ev();
Name_Map name_map_S20749C20[] = {
  NSPAIR(_ZN9S20749C20C1Ev),
  NSPAIR(_ZN9S20749C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
static Base_Class bases_S20749C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20749C6,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20749C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20749C20[];
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C20[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C20[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTI9S20749C20[];
extern  VTBL_ENTRY _ZTV9S20749C20[];
Class_Descriptor cd_S20749C20 = {  "S20749C20", // class name
  bases_S20749C20, 3,
  &(vtc_S20749C20[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,56), // object size
  NSPAIRA(_ZTI9S20749C20),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20749C20),3, //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  S20749C16  : virtual S20749C17 , S20749C20 {
  ~S20749C16(); // tgen
  S20749C16(); // tgen
};
//SIG(-1 S20749C16) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} BC11{ BC12{ BC5 BC3} FD}}


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

static void Test_S20749C16()
{
  extern Class_Descriptor cd_S20749C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S20749C16, buf);
    S20749C16 *dp, &lv = *(dp=new (buf) S20749C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S20749C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20749C16)");
    /*is_ambiguous_... S20749C17::S20749C6 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C17*), ABISELECT(192,140), "S20749C16");
    check_base_class_offset(lv, (S20749C6*)(S20749C12*)(S20749C18*), ABISELECT(192,140), "S20749C16");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C18*), ABISELECT(192,140), "S20749C16");
    check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(192,140), "S20749C16");
    check_base_class_offset(lv, (S20749C6*)(S20749C9*)(S20749C17*), ABISELECT(64,56), "S20749C16");
    check_base_class_offset(lv, (S20997C6*)(S20749C9*)(S20749C17*), ABISELECT(152,100), "S20749C16");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C18*), ABISELECT(152,100), "S20749C16");
    check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(152,100), "S20749C16");
    check_base_class_offset(lv, (S4227C37*)(S20749C9*)(S20749C17*), ABISELECT(64,56), "S20749C16");
    check_base_class_offset(lv, (S20749C9*)(S20749C17*), ABISELECT(64,56), "S20749C16");
    /*is_ambiguous_... S20749C18::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C18*), 0, "S20749C16");
    check_base_class_offset(lv, (S20749C12*)(S20749C18*), ABISELECT(192,140), "S20749C16");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C18*), ABISELECT(1352,900), "S20749C16");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C18*), ABISELECT(1352,900), "S20749C16");
    check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(1360,904), "S20749C16");
    check_base_class_offset(lv, (S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(1360,904), "S20749C16");
    check_base_class_offset(lv, (S20749C19*)(S20749C18*), ABISELECT(1360,904), "S20749C16");
    check_base_class_offset(lv, (S20749C18*)(S20749C17*), ABISELECT(192,140), "S20749C16");
    check_base_class_offset(lv, (S20749C17*), ABISELECT(64,56), "S20749C16");
    check_base_class_offset(lv, (S20997C6*)(S20749C14*)(S20749C20*), ABISELECT(8,4), "S20749C16");
    check_base_class_offset(lv, (S20749C6*)(S20749C14*)(S20749C20*), 0, "S20749C16");
    check_base_class_offset(lv, (S20749C14*)(S20749C20*), 0, "S20749C16");
    check_base_class_offset(lv, (S20749C20*), 0, "S20749C16");
    test_class_info(&lv, &cd_S20749C16);
    dp->~S20749C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C16(Test_S20749C16, "S20749C16", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN9S20749C16C1Ev();
extern void _ZN9S20749C16D1Ev();
Name_Map name_map_S20749C16[] = {
  NSPAIR(_ZN9S20749C16C1Ev),
  NSPAIR(_ZN9S20749C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C19;
extern VTBL_ENTRY _ZTI9S20749C19[];
extern  VTBL_ENTRY _ZTV9S20749C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C19[];
extern Class_Descriptor cd_S20749C18;
extern VTBL_ENTRY _ZTI9S20749C18[];
extern  VTBL_ENTRY _ZTV9S20749C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C18[];
extern Class_Descriptor cd_S20749C17;
extern VTBL_ENTRY _ZTI9S20749C17[];
extern  VTBL_ENTRY _ZTV9S20749C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C17[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
extern Class_Descriptor cd_S20749C20;
extern VTBL_ENTRY _ZTI9S20749C20[];
extern  VTBL_ENTRY _ZTV9S20749C20[];
static Base_Class bases_S20749C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20749C6,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20749C6,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S20749C9,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C12,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20749C4,    ABISELECT(1352,900), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20749C19,    ABISELECT(1360,904), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20749C18,    ABISELECT(192,140), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20749C17,    ABISELECT(64,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20749C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20749C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C16[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C16D1Ev();
extern void _ZN9S20749C16D0Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20749C16D1Ev,_ZThn56_N9S20749C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20749C16D0Ev,_ZThn56_N9S20749C16D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZThn192_N9S20749C16D1Ev,_ZThn140_N9S20749C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev)();
extern void ABISELECT(_ZThn192_N9S20749C16D0Ev,_ZThn140_N9S20749C16D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C16D1Ev,_ZTvn760_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C16D0Ev,_ZTvn760_n28_N9S20749C16D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C16D1Ev,_ZTvn764_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C16D0Ev,_ZTvn764_n28_N9S20749C16D0Ev)();
static  VTBL_ENTRY vtc_S20749C16[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C16D0Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C16D1Ev,_ZTvn760_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C16D0Ev,_ZTvn760_n28_N9S20749C16D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C16D1Ev,_ZTvn764_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C16D0Ev,_ZTvn764_n28_N9S20749C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S20749C16[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C17D1Ev();
extern void _ZN9S20749C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C16[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C17D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C99S20749C17__9S20749C16[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S20749C17D1Ev,_ZThn84_N9S20749C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S20749C17D0Ev,_ZThn84_N9S20749C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C17__9S20749C16[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C17D1Ev,_ZTvn760_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C17D0Ev,_ZTvn760_n28_N9S20749C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C17__9S20749C16[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C17D1Ev,_ZTvn760_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C17D0Ev,_ZTvn760_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C17D1Ev,_ZTvn764_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C17D0Ev,_ZTvn764_n28_N9S20749C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C17__9S20749C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C17D1Ev,_ZTvn764_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C17D0Ev,_ZTvn764_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C18D1Ev();
extern void _ZN9S20749C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C16[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C129S20749C18__9S20749C16[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C16[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C18__9S20749C16[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C19D1Ev();
extern void _ZN9S20749C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C199S20749C18__A1__9S20749C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A1__9S20749C16[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C199S20749C18__9S20749C16[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C18__9S20749C16[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C19__9S20749C18__9S20749C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev),
};
static  VTT_ENTRY vtt_S20749C16[] = {
  {&(_ZTV9S20749C16[7]),  7,47},
  {&(_ZTV9S20749C16[18]),  18,47},
  {&(_ZTV9S20749C16[28]),  28,47},
  {&(_ZTV9S20749C16[28]),  28,47},
  {&(_ZTV9S20749C16[36]),  36,47},
  {&(_ZTV9S20749C16[44]),  44,47},
  {&(_tg__ZTV9S20749C17__9S20749C16[6]),  6,9},
  {&(_tg__ZTV8S20749C99S20749C17__9S20749C16[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C17__9S20749C16[7]),  7,10},
  {&(_tg__ZTV9S20749C18__9S20749C17__9S20749C16[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C17__9S20749C16[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C17__9S20749C16[5]),  5,8},
  {&(_tg__ZTV9S20749C18__9S20749C16[6]),  6,9},
  {&(_tg__ZTV9S20749C129S20749C18__9S20749C16[4]),  4,5},
  {&(_tg__ZTV9S20749C129S20749C18__9S20749C16[4]),  4,5},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C16[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C18__9S20749C16[3]),  3,4},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C16[5]),  5,8},
  {&(_tg__ZTV8S20749C49S20749C199S20749C18__A1__9S20749C16[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A1__9S20749C16[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C199S20749C18__9S20749C16[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C16[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C18__9S20749C16[5]),  5,8},
  {&(_tg__ZTV9S20749C19__9S20749C18__9S20749C16[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20749C16[];
extern  VTBL_ENTRY _ZTV9S20749C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C16[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20749C17D0Ev,_ZThn84_N9S20749C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20749C17D1Ev,_ZThn84_N9S20749C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20749C16D0Ev,_ZThn140_N9S20749C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20749C16D1Ev,_ZThn140_N9S20749C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C16D0Ev,_ZThn56_N9S20749C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C16D1Ev,_ZThn56_N9S20749C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20749C16 = {  "S20749C16", // class name
  bases_S20749C16, 18,
  &(vtc_S20749C16[0]), // expected_vtbl_contents
  &(vtt_S20749C16[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI9S20749C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20749C16),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C16),24, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C15  : S20749C16 {
  virtual  ~S20749C15(); // _ZN9S20749C15D2Ev
  virtual void  v4(); // _ZN9S20749C152v4Ev
  S20749C15(); // tgen
};
//SIG(-1 S20749C15) C1{ BC2{ VBC3{ VBC4{ v2} BC5{ BC4 VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC7 BC9{ VBC4 FC5[9]} BC10{ VBC6 VBC4 BC7 vd} BC11{ BC10 vd}} vd} BC12{ BC13{ BC6 BC4} FD}} vd v1}


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

static void Test_S20749C15()
{
  extern Class_Descriptor cd_S20749C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S20749C15, buf);
    S20749C15 *dp, &lv = *(dp=new (buf) S20749C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S20749C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20749C15)");
    /*is_ambiguous_... S20749C17::S20749C6 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C17*), ABISELECT(192,140), "S20749C15");
    check_base_class_offset(lv, (S20749C6*)(S20749C12*)(S20749C18*), ABISELECT(192,140), "S20749C15");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C18*), ABISELECT(192,140), "S20749C15");
    check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(192,140), "S20749C15");
    check_base_class_offset(lv, (S20749C6*)(S20749C9*)(S20749C17*), ABISELECT(64,56), "S20749C15");
    check_base_class_offset(lv, (S20997C6*)(S20749C9*)(S20749C17*), ABISELECT(152,100), "S20749C15");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C18*), ABISELECT(152,100), "S20749C15");
    check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(152,100), "S20749C15");
    check_base_class_offset(lv, (S4227C37*)(S20749C9*)(S20749C17*), ABISELECT(64,56), "S20749C15");
    check_base_class_offset(lv, (S20749C9*)(S20749C17*), ABISELECT(64,56), "S20749C15");
    /*is_ambiguous_... S20749C18::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C18*), 0, "S20749C15");
    check_base_class_offset(lv, (S20749C12*)(S20749C18*), ABISELECT(192,140), "S20749C15");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C18*), ABISELECT(1352,900), "S20749C15");
    /*is_ambiguous_... S20749C18::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C18*), ABISELECT(1352,900), "S20749C15");
    check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(1360,904), "S20749C15");
    check_base_class_offset(lv, (S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(1360,904), "S20749C15");
    check_base_class_offset(lv, (S20749C19*)(S20749C18*), ABISELECT(1360,904), "S20749C15");
    check_base_class_offset(lv, (S20749C18*)(S20749C17*), ABISELECT(192,140), "S20749C15");
    check_base_class_offset(lv, (S20749C17*)(S20749C16*), ABISELECT(64,56), "S20749C15");
    check_base_class_offset(lv, (S20997C6*)(S20749C14*)(S20749C20*)(S20749C16*), ABISELECT(8,4), "S20749C15");
    check_base_class_offset(lv, (S20749C6*)(S20749C14*)(S20749C20*)(S20749C16*), 0, "S20749C15");
    check_base_class_offset(lv, (S20749C14*)(S20749C20*)(S20749C16*), 0, "S20749C15");
    check_base_class_offset(lv, (S20749C20*)(S20749C16*), 0, "S20749C15");
    check_base_class_offset(lv, (S20749C16*), 0, "S20749C15");
    test_class_info(&lv, &cd_S20749C15);
    dp->~S20749C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C15(Test_S20749C15, "S20749C15", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN9S20749C15C1Ev();
extern void _ZN9S20749C15D2Ev();
Name_Map name_map_S20749C15[] = {
  NSPAIR(_ZN9S20749C15C1Ev),
  NSPAIR(_ZN9S20749C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C19;
extern VTBL_ENTRY _ZTI9S20749C19[];
extern  VTBL_ENTRY _ZTV9S20749C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C19[];
extern Class_Descriptor cd_S20749C18;
extern VTBL_ENTRY _ZTI9S20749C18[];
extern  VTBL_ENTRY _ZTV9S20749C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C18[];
extern Class_Descriptor cd_S20749C17;
extern VTBL_ENTRY _ZTI9S20749C17[];
extern  VTBL_ENTRY _ZTV9S20749C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C17[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
extern Class_Descriptor cd_S20749C20;
extern VTBL_ENTRY _ZTI9S20749C20[];
extern  VTBL_ENTRY _ZTV9S20749C20[];
extern Class_Descriptor cd_S20749C16;
extern VTBL_ENTRY _ZTI9S20749C16[];
extern  VTBL_ENTRY _ZTV9S20749C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C16[];
static Base_Class bases_S20749C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20749C6,    ABISELECT(192,140), //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
    6, //immediately_derived
  0, 1},
  {&cd_S20749C6,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S20749C9,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C12,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20749C4,    ABISELECT(1352,900), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20749C19,    ABISELECT(1360,904), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20749C18,    ABISELECT(192,140), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20749C17,    ABISELECT(64,56), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20749C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20749C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20749C16,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C15[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C15D1Ev();
extern void _ZN9S20749C15D0Ev();
extern void _ZN9S20749C152v4Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C15D1Ev,_ZTv0_n32_N9S20749C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S20749C15D1Ev,_ZThn56_N9S20749C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20749C15D0Ev,_ZTv0_n32_N9S20749C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S20749C15D0Ev,_ZThn56_N9S20749C15D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C15D1Ev,_ZTv0_n28_N9S20749C15D1Ev)();
extern void ABISELECT(_ZThn192_N9S20749C15D1Ev,_ZThn140_N9S20749C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C15D0Ev,_ZTv0_n28_N9S20749C15D0Ev)();
extern void ABISELECT(_ZThn192_N9S20749C15D0Ev,_ZThn140_N9S20749C15D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C15D1Ev,_ZTvn760_n28_N9S20749C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C15D0Ev,_ZTvn760_n28_N9S20749C15D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C15D1Ev,_ZTvn764_n28_N9S20749C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C15D0Ev,_ZTvn764_n28_N9S20749C15D0Ev)();
static  VTBL_ENTRY vtc_S20749C15[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20749C152v4Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C15D1Ev,_ZTv0_n32_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C15D0Ev,_ZTv0_n32_N9S20749C15D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C15D1Ev,_ZTv0_n28_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C15D0Ev,_ZTv0_n28_N9S20749C15D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C15D1Ev,_ZTvn760_n28_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C15D0Ev,_ZTvn760_n28_N9S20749C15D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C15D1Ev,_ZTvn764_n28_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C15D0Ev,_ZTvn764_n28_N9S20749C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S20749C15[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C16D1Ev();
extern void _ZN9S20749C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C16__9S20749C15[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C16D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20749C16D1Ev,_ZThn56_N9S20749C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20749C16D0Ev,_ZThn56_N9S20749C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C16__9S20749C15[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZThn192_N9S20749C16D1Ev,_ZThn140_N9S20749C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev)();
extern void ABISELECT(_ZThn192_N9S20749C16D0Ev,_ZThn140_N9S20749C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C16__9S20749C15[] = {
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C16D1Ev,_ZTvn760_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C16D0Ev,_ZTvn760_n28_N9S20749C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C16__9S20749C15[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C16D1Ev,_ZTvn760_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C16D0Ev,_ZTvn760_n28_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C16D1Ev,_ZTvn764_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C16D0Ev,_ZTvn764_n28_N9S20749C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C16__9S20749C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C16D1Ev,_ZTvn764_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C16D0Ev,_ZTvn764_n28_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C17D1Ev();
extern void _ZN9S20749C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C15[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C17D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C99S20749C17__9S20749C15[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZThn128_N9S20749C17D1Ev,_ZThn84_N9S20749C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev)();
extern void ABISELECT(_ZThn128_N9S20749C17D0Ev,_ZThn84_N9S20749C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C17__9S20749C15[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C17D1Ev,_ZTvn760_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C17D0Ev,_ZTvn760_n28_N9S20749C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C17__9S20749C15[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C17D1Ev,_ZTvn760_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C17D0Ev,_ZTvn760_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C17D1Ev,_ZTvn764_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C17D0Ev,_ZTvn764_n28_N9S20749C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C17__9S20749C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C17D1Ev,_ZTvn764_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C17D0Ev,_ZTvn764_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C18D1Ev();
extern void _ZN9S20749C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C15[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C129S20749C18__9S20749C15[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C15[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C18__9S20749C15[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C19D1Ev();
extern void _ZN9S20749C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C199S20749C18__A1__9S20749C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A1__9S20749C15[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C199S20749C18__9S20749C15[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C18__9S20749C15[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C19__9S20749C18__9S20749C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev),
};
static  VTT_ENTRY vtt_S20749C15[] = {
  {&(_ZTV9S20749C15[7]),  7,48},
  {&(_tg__ZTV9S20749C16__9S20749C15[7]),  7,10},
  {&(_tg__ZTV9S20749C17__9S20749C16__9S20749C15[8]),  8,11},
  {&(_tg__ZTV9S20749C18__9S20749C16__9S20749C15[7]),  7,10},
  {&(_tg__ZTV9S20749C18__9S20749C16__9S20749C15[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C16__9S20749C15[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C16__9S20749C15[5]),  5,8},
  {&(_ZTV9S20749C15[19]),  19,48},
  {&(_ZTV9S20749C15[29]),  29,48},
  {&(_ZTV9S20749C15[29]),  29,48},
  {&(_ZTV9S20749C15[37]),  37,48},
  {&(_ZTV9S20749C15[45]),  45,48},
  {&(_tg__ZTV9S20749C17__9S20749C15[6]),  6,9},
  {&(_tg__ZTV8S20749C99S20749C17__9S20749C15[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C17__9S20749C15[7]),  7,10},
  {&(_tg__ZTV9S20749C18__9S20749C17__9S20749C15[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C17__9S20749C15[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C17__9S20749C15[5]),  5,8},
  {&(_tg__ZTV9S20749C18__9S20749C15[6]),  6,9},
  {&(_tg__ZTV9S20749C129S20749C18__9S20749C15[4]),  4,5},
  {&(_tg__ZTV9S20749C129S20749C18__9S20749C15[4]),  4,5},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C15[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C18__9S20749C15[3]),  3,4},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C15[5]),  5,8},
  {&(_tg__ZTV8S20749C49S20749C199S20749C18__A1__9S20749C15[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A1__9S20749C15[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C199S20749C18__9S20749C15[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C15[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C18__9S20749C15[5]),  5,8},
  {&(_tg__ZTV9S20749C19__9S20749C18__9S20749C15[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20749C15[];
extern  VTBL_ENTRY _ZTV9S20749C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C15[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20749C17D0Ev,_ZThn84_N9S20749C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20749C17D1Ev,_ZThn84_N9S20749C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20749C16D0Ev,_ZThn140_N9S20749C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20749C16D1Ev,_ZThn140_N9S20749C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C16D0Ev,_ZThn56_N9S20749C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C16D1Ev,_ZThn56_N9S20749C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C15D0Ev,_ZTv0_n28_N9S20749C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20749C15D0Ev,_ZThn140_N9S20749C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C15D1Ev,_ZTv0_n28_N9S20749C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20749C15D1Ev,_ZThn140_N9S20749C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C15D0Ev,_ZTv0_n32_N9S20749C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C15D0Ev,_ZThn56_N9S20749C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C15D1Ev,_ZTv0_n32_N9S20749C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C15D1Ev,_ZThn56_N9S20749C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20749C15 = {  "S20749C15", // class name
  bases_S20749C15, 19,
  &(vtc_S20749C15[0]), // expected_vtbl_contents
  &(vtt_S20749C15[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI9S20749C15),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20749C15),48, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C15),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C23  : S20749C2 {
  virtual  ~S20749C23(); // _ZN9S20749C23D2Ev
  S20749C23(); // tgen
};
//SIG(-1 S20749C23) C1{ BC2{ VBC3{ m} VBC4{ VBC5{ m FL[5]} VBC6{ v1} BC3 vd} v2} vd}


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

static void Test_S20749C23()
{
  extern Class_Descriptor cd_S20749C23;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20749C23, buf);
    S20749C23 *dp, &lv = *(dp=new (buf) S20749C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20749C23)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C23)");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*), ABISELECT(8,4), "S20749C23");
    check_base_class_offset(lv, (S20997C6*)(S20749C4*), ABISELECT(8,4), "S20749C23");
    check_base_class_offset(lv, (S20749C6*)(S20749C4*), 0, "S20749C23");
    check_base_class_offset(lv, (S4227C37*)(S20749C4*), 0, "S20749C23");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*), 0, "S20749C23");
    check_base_class_offset(lv, (S20749C2*), 0, "S20749C23");
    test_class_info(&lv, &cd_S20749C23);
    dp->~S20749C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C23(Test_S20749C23, "S20749C23", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S20749C23C1Ev();
extern void _ZN9S20749C23D2Ev();
Name_Map name_map_S20749C23[] = {
  NSPAIR(_ZN9S20749C23C1Ev),
  NSPAIR(_ZN9S20749C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
static Base_Class bases_S20749C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20749C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20749C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20749C2,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C23[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C23D1Ev();
extern void _ZN9S20749C23D0Ev();
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY vtc_S20749C23[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C23[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C23D0Ev,
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern VTBL_ENTRY _ZTV9S20749C23[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C2D1Ev();
extern void _ZN8S20749C2D0Ev();
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__9S20749C23[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C23[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
static  VTT_ENTRY vtt_S20749C23[] = {
  {&(_ZTV9S20749C23[8]),  8,12},
  {&(_tg__ZTV8S20749C2__9S20749C23[8]),  8,12},
  {&(_tg__ZTV8S20749C2__9S20749C23[8]),  8,12},
  {&(_tg__ZTV8S20749C2__9S20749C23[8]),  8,12},
  {&(_ZTV9S20749C23[8]),  8,12},
  {&(_ZTV9S20749C23[8]),  8,12},
  {&(_tg__ZTV8S20749C4__9S20749C23[5]),  5,8},
  {&(_tg__ZTV8S20749C4__9S20749C23[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20749C23[];
extern  VTBL_ENTRY _ZTV9S20749C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C23[];
Class_Descriptor cd_S20749C23 = {  "S20749C23", // class name
  bases_S20749C23, 6,
  &(vtc_S20749C23[0]), // expected_vtbl_contents
  &(vtt_S20749C23[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S20749C23),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20749C23),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C23),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C22  : S20749C23 {
  char s20749c22f0;
  virtual  ~S20749C22(); // _ZN9S20749C22D2Ev
  S20749C22(); // tgen
};
//SIG(-1 S20749C22) C1{ BC2{ BC3{ VBC4{ m} VBC5{ VBC6{ m FL[5]} VBC7{ v1} BC4 vd} v2} vd} vd Fc}


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

static void Test_S20749C22()
{
  extern Class_Descriptor cd_S20749C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S20749C22, buf);
    S20749C22 *dp, &lv = *(dp=new (buf) S20749C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S20749C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C22)");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*)(S20749C23*), ABISELECT(9,5), "S20749C22");
    check_base_class_offset(lv, (S20997C6*)(S20749C4*), ABISELECT(16,8), "S20749C22");
    check_base_class_offset(lv, (S20749C6*)(S20749C4*), 0, "S20749C22");
    check_base_class_offset(lv, (S4227C37*)(S20749C4*), 0, "S20749C22");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*)(S20749C23*), 0, "S20749C22");
    check_base_class_offset(lv, (S20749C2*)(S20749C23*), 0, "S20749C22");
    check_base_class_offset(lv, (S20749C23*), 0, "S20749C22");
    check_field_offset(lv, s20749c22f0, ABISELECT(8,4), "S20749C22.s20749c22f0");
    test_class_info(&lv, &cd_S20749C22);
    dp->~S20749C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C22(Test_S20749C22, "S20749C22", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN9S20749C22C1Ev();
extern void _ZN9S20749C22D2Ev();
Name_Map name_map_S20749C22[] = {
  NSPAIR(_ZN9S20749C22C1Ev),
  NSPAIR(_ZN9S20749C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20749C23;
extern VTBL_ENTRY _ZTI9S20749C23[];
extern  VTBL_ENTRY _ZTV9S20749C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C23[];
static Base_Class bases_S20749C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20749C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20749C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20749C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20749C23,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C22[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C22D1Ev();
extern void _ZN9S20749C22D0Ev();
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY vtc_S20749C22[] = {
  0,
  ABISELECT(9,5),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C22[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C22D0Ev,
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern VTBL_ENTRY _ZTV9S20749C22[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C23D1Ev();
extern void _ZN9S20749C23D0Ev();
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C23__9S20749C22[] = {
  0,
  ABISELECT(9,5),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C23[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C23D0Ev,
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C29S20749C23__9S20749C22[] = {
  0,
  ABISELECT(9,5),
  0,
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C22[] = {
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
static  VTT_ENTRY vtt_S20749C22[] = {
  {&(_ZTV9S20749C22[8]),  8,12},
  {&(_tg__ZTV9S20749C23__9S20749C22[8]),  8,12},
  {&(_tg__ZTV8S20749C29S20749C23__9S20749C22[8]),  8,12},
  {&(_tg__ZTV8S20749C29S20749C23__9S20749C22[8]),  8,12},
  {&(_tg__ZTV8S20749C29S20749C23__9S20749C22[8]),  8,12},
  {&(_tg__ZTV9S20749C23__9S20749C22[8]),  8,12},
  {&(_tg__ZTV9S20749C23__9S20749C22[8]),  8,12},
  {&(_ZTV9S20749C22[8]),  8,12},
  {&(_ZTV9S20749C22[8]),  8,12},
  {&(_tg__ZTV8S20749C4__9S20749C22[5]),  5,8},
  {&(_tg__ZTV8S20749C4__9S20749C22[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20749C22[];
extern  VTBL_ENTRY _ZTV9S20749C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C22[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20749C22 = {  "S20749C22", // class name
  bases_S20749C22, 7,
  &(vtc_S20749C22[0]), // expected_vtbl_contents
  &(vtt_S20749C22[0]), // expected_vtt_contents
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI9S20749C22),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20749C22),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C22),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C25  : virtual S20997C6 , S20749C2 , virtual S20749C14 {
  ~S20749C25(); // tgen
  S20749C25(); // tgen
};
//SIG(-1 S20749C25) C1{ VBC2{ m FL[5]} BC3{ VBC4{ m} VBC5{ VBC2 VBC6{ v1} BC4 vd} v2} VBC7{ BC2 BC6}}


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

static void Test_S20749C25()
{
  extern Class_Descriptor cd_S20749C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,23)];
    init_test(&cd_S20749C25, buf);
    S20749C25 *dp, &lv = *(dp=new (buf) S20749C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,88), "sizeof(S20749C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C25)");
    /*is_ambiguous_... S20749C25::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20749C25");
    check_base_class_offset(lv, (S20997C6*)(S20749C4*), ABISELECT(8,4), "S20749C25");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*), ABISELECT(48,44), "S20749C25");
    check_base_class_offset(lv, (S20749C6*)(S20749C4*), 0, "S20749C25");
    check_base_class_offset(lv, (S4227C37*)(S20749C4*), 0, "S20749C25");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*), 0, "S20749C25");
    check_base_class_offset(lv, (S20749C2*), 0, "S20749C25");
    check_base_class_offset(lv, (S20997C6*)(S20749C14*), ABISELECT(56,48), "S20749C25");
    check_base_class_offset(lv, (S20749C6*)(S20749C14*), ABISELECT(48,44), "S20749C25");
    check_base_class_offset(lv, (S20749C14*), ABISELECT(48,44), "S20749C25");
    test_class_info(&lv, &cd_S20749C25);
    dp->~S20749C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C25(Test_S20749C25, "S20749C25", ABISELECT(96,88));

#else // __cplusplus

extern void _ZN9S20749C25C1Ev();
extern void _ZN9S20749C25D1Ev();
Name_Map name_map_S20749C25[] = {
  NSPAIR(_ZN9S20749C25C1Ev),
  NSPAIR(_ZN9S20749C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
static Base_Class bases_S20749C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20749C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20749C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20749C2,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20749C6,    ABISELECT(48,44), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20749C14,    ABISELECT(48,44), //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C25[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C25D1Ev();
extern void _ZN9S20749C25D0Ev();
extern void _ZN8S20749C22v2Ev();
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C25[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C25[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C25D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C25D0Ev,
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20749C25[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20749C25[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C2D1Ev();
extern void _ZN8S20749C2D0Ev();
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__9S20749C25[] = {
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C25[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
static  VTT_ENTRY vtt_S20749C25[] = {
  {&(_ZTV9S20749C25[9]),  9,17},
  {&(_tg__ZTV8S20749C2__9S20749C25[8]),  8,12},
  {&(_tg__ZTV8S20749C2__9S20749C25[8]),  8,12},
  {&(_tg__ZTV8S20749C2__9S20749C25[8]),  8,12},
  {&(_ZTV9S20749C25[9]),  9,17},
  {&(_ZTV9S20749C25[9]),  9,17},
  {&(_ZTV9S20749C25[16]),  16,17},
  {&(_tg__ZTV8S20749C4__9S20749C25[5]),  5,8},
  {&(_tg__ZTV8S20749C4__9S20749C25[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20749C25[];
extern  VTBL_ENTRY _ZTV9S20749C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C25[];
Class_Descriptor cd_S20749C25 = {  "S20749C25", // class name
  bases_S20749C25, 9,
  &(vtc_S20749C25[0]), // expected_vtbl_contents
  &(vtt_S20749C25[0]), // expected_vtt_contents
  ABISELECT(96,88), // object size
  NSPAIRA(_ZTI9S20749C25),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20749C25),17, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C25),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C24  : virtual S20749C25 , S20749C11 {
  virtual void  v3(); // _ZN9S20749C242v3Ev
  ~S20749C24(); // tgen
  S20749C24(); // tgen
};
//SIG(-1 S20749C24) C1{ VBC2{ VBC3{ m FL[5]} BC4{ VBC5{ m} VBC6{ VBC3 VBC7{ v2} BC5 vd} v3} VBC8{ BC3 BC7}} BC9{ VBC7 VBC6 VBC10{ m FL[4]} VBC4 VBC11{ VBC7 FC12{ BC7 VBC3 BC5 Fp[10]}[9]} vd} v1}


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

static void Test_S20749C24()
{
  extern Class_Descriptor cd_S20749C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(163,222)];
    init_test(&cd_S20749C24, buf);
    S20749C24 *dp, &lv = *(dp=new (buf) S20749C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1296,884), "sizeof(S20749C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20749C24)");
    /*is_ambiguous_... S20749C25::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C25*), ABISELECT(16,8), "S20749C24");
    check_base_class_offset(lv, (S20997C6*)(S20749C4*), ABISELECT(16,8), "S20749C24");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*)(S20749C25*), 0, "S20749C24");
    /*is_ambiguous_... S20749C24::S20749C2 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*), 0, "S20749C24");
    check_base_class_offset(lv, (S20749C6*)(S20749C4*), ABISELECT(8,4), "S20749C24");
    check_base_class_offset(lv, (S20749C6*)(S20749C11*), ABISELECT(8,4), "S20749C24");
    check_base_class_offset(lv, (S20749C6*)(S20749C12*), ABISELECT(8,4), "S20749C24");
    check_base_class_offset(lv, (S4227C37*)(S20749C4*), ABISELECT(8,4), "S20749C24");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*)(S20749C25*), ABISELECT(8,4), "S20749C24");
    check_base_class_offset(lv, (S20749C4*)(S20749C11*), ABISELECT(8,4), "S20749C24");
    /*is_ambiguous_... S20749C24::S20749C2 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C2*), ABISELECT(8,4), "S20749C24");
    check_base_class_offset(lv, (S20749C2*)(S20749C25*), ABISELECT(8,4), "S20749C24");
    check_base_class_offset(lv, (S20997C6*)(S20749C14*), ABISELECT(64,52), "S20749C24");
    check_base_class_offset(lv, (S20749C6*)(S20749C14*), ABISELECT(56,48), "S20749C24");
    check_base_class_offset(lv, (S20749C14*)(S20749C25*), ABISELECT(56,48), "S20749C24");
    check_base_class_offset(lv, (S20749C25*), ABISELECT(8,4), "S20749C24");
    check_base_class_offset(lv, (S10258C6_nt*)(S20749C11*), ABISELECT(104,92), "S20749C24");
    check_base_class_offset(lv, (S20749C2*)(S20749C11*), 0, "S20749C24");
    check_base_class_offset(lv, (S20749C12*)(S20749C11*), ABISELECT(136,124), "S20749C24");
    check_base_class_offset(lv, (S20749C11*), 0, "S20749C24");
    test_class_info(&lv, &cd_S20749C24);
    dp->~S20749C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C24(Test_S20749C24, "S20749C24", ABISELECT(1296,884));

#else // __cplusplus

extern void _ZN9S20749C24C1Ev();
extern void _ZN9S20749C24D1Ev();
Name_Map name_map_S20749C24[] = {
  NSPAIR(_ZN9S20749C24C1Ev),
  NSPAIR(_ZN9S20749C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
extern Class_Descriptor cd_S20749C25;
extern VTBL_ENTRY _ZTI9S20749C25[];
extern  VTBL_ENTRY _ZTV9S20749C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C25[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S20749C11;
extern VTBL_ENTRY _ZTI9S20749C11[];
extern  VTBL_ENTRY _ZTV9S20749C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C11[];
static Base_Class bases_S20749C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C6,    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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20749C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20749C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //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_S20997C6,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20749C6,    ABISELECT(56,48), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20749C14,    ABISELECT(56,48), //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
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20749C25,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(104,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20749C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20749C12,    ABISELECT(136,124), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20749C11,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C24[];
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev)();
extern void _ZN9S20749C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev)();
extern void _ZN9S20749C24D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN9S20749C242v3Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev)();
extern void ABISELECT(_ZThn8_N9S20749C24D1Ev,_ZThn4_N9S20749C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev)();
extern void ABISELECT(_ZThn8_N9S20749C24D0Ev,_ZThn4_N9S20749C24D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C24[] = {
  ABISELECT(56,48),
  ABISELECT(8,4),
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20749C242v3Ev,
  0,
  ABISELECT(48,44),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20749C24[];
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev)();
extern void _ZN9S20749C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev)();
extern void _ZN9S20749C11D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C11__9S20749C24[] = {
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev)();
extern void ABISELECT(_ZThn8_N9S20749C11D1Ev,_ZThn4_N9S20749C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev)();
extern void ABISELECT(_ZThn8_N9S20749C11D0Ev,_ZThn4_N9S20749C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C11__9S20749C24[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__9S20749C11__9S20749C24[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev)();
extern void _ZN9S20749C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev)();
extern void _ZN9S20749C25D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C25__9S20749C24[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C25[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C29S20749C25__9S20749C24[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C69S20749C14__A1__9S20749C25__9S20749C24[] = {
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20749C25[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C24[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__A1__9S20749C24[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S20749C2D1Ev,_ZThn4_N8S20749C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S20749C2D0Ev,_ZThn4_N8S20749C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20749C4__8S20749C2__A1__9S20749C24[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__9S20749C24[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C12__9S20749C24[] = {
  0,
  ABISELECT(128,120),
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
static  VTT_ENTRY vtt_S20749C24[] = {
  {&(_ZTV9S20749C24[14]),  14,42},
  {&(_tg__ZTV9S20749C11__9S20749C24[12]),  12,16},
  {&(_tg__ZTV8S20749C4__9S20749C11__9S20749C24[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C11__9S20749C24[6]),  6,9},
  {&(_tg__ZTV9S20749C11__9S20749C24[12]),  12,16},
  {&(_tg__ZTV9S20749C12__9S20749C11__9S20749C24[4]),  4,5},
  {&(_ZTV9S20749C24[29]),  29,42},
  {&(_ZTV9S20749C24[29]),  29,42},
  {&(_ZTV9S20749C24[29]),  29,42},
  {&(_ZTV9S20749C24[36]),  36,42},
  {&(_ZTV9S20749C24[14]),  14,42},
  {&(_ZTV9S20749C24[41]),  41,42},
  {&(_tg__ZTV9S20749C25__9S20749C24[9]),  9,13},
  {&(_tg__ZTV8S20749C29S20749C25__9S20749C24[8]),  8,12},
  {&(_tg__ZTV8S20749C29S20749C25__9S20749C24[8]),  8,12},
  {&(_tg__ZTV8S20749C29S20749C25__9S20749C24[8]),  8,12},
  {&(_tg__ZTV9S20749C25__9S20749C24[9]),  9,13},
  {&(_tg__ZTV9S20749C25__9S20749C24[9]),  9,13},
  {&(_tg__ZTV8S20749C69S20749C14__A1__9S20749C25__9S20749C24[3]),  3,4},
  {&(_tg__ZTV8S20749C4__9S20749C24[5]),  5,8},
  {&(_tg__ZTV8S20749C4__9S20749C24[5]),  5,8},
  {&(_tg__ZTV8S20749C2__A1__9S20749C24[8]),  8,12},
  {&(_tg__ZTV8S20749C4__8S20749C2__A1__9S20749C24[6]),  6,9},
  {&(_tg__ZTV8S20749C4__8S20749C2__A1__9S20749C24[6]),  6,9},
  {&(_tg__ZTV9S20749C12__9S20749C24[4]),  4,5},
  {&(_tg__ZTV8S20749C6__9S20749C12__9S20749C24[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20749C24[];
extern  VTBL_ENTRY _ZTV9S20749C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C24[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20749C2D0Ev,_ZThn4_N8S20749C2D0Ev),
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20749C2D1Ev,_ZThn4_N8S20749C2D1Ev),
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev), // 
  (VTBL_ENTRY)_ZN9S20749C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev), // 
  (VTBL_ENTRY)_ZN9S20749C25D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20749C11D0Ev,_ZThn4_N9S20749C11D0Ev),
  (VTBL_ENTRY)_ZN9S20749C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20749C11D1Ev,_ZThn4_N9S20749C11D1Ev),
  (VTBL_ENTRY)_ZN9S20749C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20749C24D0Ev,_ZThn4_N9S20749C24D0Ev),
  (VTBL_ENTRY)_ZN9S20749C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20749C24D1Ev,_ZThn4_N9S20749C24D1Ev),
  (VTBL_ENTRY)_ZN9S20749C24D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20749C24 = {  "S20749C24", // class name
  bases_S20749C24, 14,
  &(vtc_S20749C24[0]), // expected_vtbl_contents
  &(vtt_S20749C24[0]), // expected_vtt_contents
  ABISELECT(1296,884), // object size
  NSPAIRA(_ZTI9S20749C24),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20749C24),42, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C24),26, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C26  : S20749C18 , S20749C2 , virtual S20749C15 , S20749C8 , S4227C27 {
  short s20749c26f0;
  ~S20749C26(); // tgen
  S20749C26(); // tgen
};
//SIG(-1 S20749C26) C1{ BC2{ VBC3{ m} BC4{ VBC5{ v1} FC6{ BC5 VBC7{ m FL[5]} BC3 Fp[10]}[9]} BC8{ VBC7 VBC5 BC3 vd} BC9{ BC8 vd}} BC10{ VBC3 VBC8 v2} VBC11{ BC12{ VBC13{ VBC5 BC6 VBC2 vd} BC14{ BC15{ BC7 BC5} FD}} vd v3} BC16{ VBC6} BC17{ m} Fs}


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

static void Test_S20749C26()
{
  extern Class_Descriptor cd_S20749C26;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(168,434)];
    init_test(&cd_S20749C26, buf);
    S20749C26 *dp, &lv = *(dp=new (buf) S20749C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2672,1732), "sizeof(S20749C26)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20749C26)");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C18*), 0, "S20749C26");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*), 0, "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C18*), 0, "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C12*)(S20749C18*), 0, "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C18*), 0, "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C19*)(S20749C18*), 0, "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*), 0, "S20749C26");
    /*is_ambiguous_... S20749C17::S20749C6 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C17*), 0, "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C12*)(S20749C18*), 0, "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C18*), 0, "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C19*)(S20749C18*), 0, "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C12*)(S20749C18*), 0, "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C18*), ABISELECT(1200,780), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(1200,780), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*), ABISELECT(1200,780), "S20749C26");
    check_base_class_offset(lv, (S20997C6*)(S20749C9*)(S20749C17*), ABISELECT(1200,780), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C18*), ABISELECT(1200,780), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(1200,780), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C9 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C9*), ABISELECT(1200,780), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C18*), ABISELECT(1160,760), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C18*), ABISELECT(1160,760), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(1168,764), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(1168,764), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C19*)(S20749C18*), ABISELECT(1168,764), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C18*), 0, "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*), ABISELECT(1176,768), "S20749C26");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*), ABISELECT(1176,768), "S20749C26");
    check_base_class_offset(lv, (S20749C2*), ABISELECT(1176,768), "S20749C26");
    check_base_class_offset(lv, (S20749C6*)(S20749C9*)(S20749C17*), ABISELECT(1312,876), "S20749C26");
    check_base_class_offset(lv, (S4227C37*)(S20749C9*)(S20749C17*), ABISELECT(1312,876), "S20749C26");
    check_base_class_offset(lv, (S20749C9*)(S20749C17*), ABISELECT(1312,876), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C12*)(S20749C18*), ABISELECT(1400,920), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C18*), ABISELECT(2560,1680), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C18*), ABISELECT(2560,1680), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(2568,1684), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(2568,1684), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C19*)(S20749C18*), ABISELECT(2568,1684), "S20749C26");
    check_base_class_offset(lv, (S20749C18*)(S20749C17*), ABISELECT(1400,920), "S20749C26");
    check_base_class_offset(lv, (S20749C17*)(S20749C16*)(S20749C15*), ABISELECT(1312,876), "S20749C26");
    check_base_class_offset(lv, (S20997C6*)(S20749C14*)(S20749C20*)(S20749C16*)(S20749C15*), ABISELECT(1256,824), "S20749C26");
    check_base_class_offset(lv, (S20749C6*)(S20749C14*)(S20749C20*)(S20749C16*)(S20749C15*), ABISELECT(1248,820), "S20749C26");
    check_base_class_offset(lv, (S20749C14*)(S20749C20*)(S20749C16*)(S20749C15*), ABISELECT(1248,820), "S20749C26");
    check_base_class_offset(lv, (S20749C20*)(S20749C16*)(S20749C15*), ABISELECT(1248,820), "S20749C26");
    check_base_class_offset(lv, (S20749C16*)(S20749C15*), ABISELECT(1248,820), "S20749C26");
    check_base_class_offset(lv, (S20749C15*), ABISELECT(1248,820), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C9 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C9*), ABISELECT(2576,1688), "S20749C26");
    /*is_ambiguous_... S20749C26::S20749C9 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C9*), ABISELECT(2576,1688), "S20749C26");
    check_base_class_offset(lv, (S20749C9*)(S20749C8*), ABISELECT(2576,1688), "S20749C26");
    check_base_class_offset(lv, (S20749C8*), ABISELECT(1184,772), "S20749C26");
    check_base_class_offset(lv, (S4227C27*), 0, "S20749C26");
    check_field_offset(lv, s20749c26f0, ABISELECT(1192,776), "S20749C26.s20749c26f0");
    test_class_info(&lv, &cd_S20749C26);
    dp->~S20749C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C26(Test_S20749C26, "S20749C26", ABISELECT(2672,1732));

#else // __cplusplus

extern void _ZN9S20749C26C1Ev();
extern void _ZN9S20749C26D1Ev();
Name_Map name_map_S20749C26[] = {
  NSPAIR(_ZN9S20749C26C1Ev),
  NSPAIR(_ZN9S20749C26D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C19;
extern VTBL_ENTRY _ZTI9S20749C19[];
extern  VTBL_ENTRY _ZTV9S20749C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C19[];
extern Class_Descriptor cd_S20749C18;
extern VTBL_ENTRY _ZTI9S20749C18[];
extern  VTBL_ENTRY _ZTV9S20749C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C18[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C19;
extern VTBL_ENTRY _ZTI9S20749C19[];
extern  VTBL_ENTRY _ZTV9S20749C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C19[];
extern Class_Descriptor cd_S20749C18;
extern VTBL_ENTRY _ZTI9S20749C18[];
extern  VTBL_ENTRY _ZTV9S20749C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C18[];
extern Class_Descriptor cd_S20749C17;
extern VTBL_ENTRY _ZTI9S20749C17[];
extern  VTBL_ENTRY _ZTV9S20749C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C17[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
extern Class_Descriptor cd_S20749C20;
extern VTBL_ENTRY _ZTI9S20749C20[];
extern  VTBL_ENTRY _ZTV9S20749C20[];
extern Class_Descriptor cd_S20749C16;
extern VTBL_ENTRY _ZTI9S20749C16[];
extern  VTBL_ENTRY _ZTV9S20749C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C16[];
extern Class_Descriptor cd_S20749C15;
extern VTBL_ENTRY _ZTI9S20749C15[];
extern  VTBL_ENTRY _ZTV9S20749C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C15[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
extern Class_Descriptor cd_S20749C8;
extern VTBL_ENTRY _ZTI8S20749C8[];
extern  VTBL_ENTRY _ZTV8S20749C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C8[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
static Base_Class bases_S20749C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20749C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20749C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(1200,780), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(1160,760), //bcp->offset
    14, //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
    19, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20749C19,    ABISELECT(1168,764), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20749C18,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20749C2,    ABISELECT(1176,768), //bcp->offset
    30, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20749C6,    ABISELECT(1312,876), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C9,    ABISELECT(1312,876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20749C12,    ABISELECT(1400,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2560,1680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(2560,1680), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2568,1684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(2568,1684), //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
    5, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20749C19,    ABISELECT(2568,1684), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20749C18,    ABISELECT(1400,920), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20749C17,    ABISELECT(1312,876), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1256,824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20749C6,    ABISELECT(1248,820), //bcp->offset
    -1, //bcp->virtual_function_table_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
    26, //immediately_derived
  0, 0},
  {&cd_S20749C14,    ABISELECT(1248,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20749C20,    ABISELECT(1248,820), //bcp->offset
    -1, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S20749C16,    ABISELECT(1248,820), //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
    14, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20749C15,    ABISELECT(1248,820), //bcp->offset
    46, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20749C6,    ABISELECT(2576,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2576,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20749C9,    ABISELECT(2576,1688), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S20749C8,    ABISELECT(1184,772), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C26[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C26D1Ev();
extern void _ZN9S20749C26D0Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C26D1Ev,_ZThn760_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C26D0Ev,_ZThn760_N9S20749C26D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C26D1Ev,_ZThn764_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C26D0Ev,_ZThn764_N9S20749C26D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1176_N9S20749C26D1Ev,_ZThn768_N9S20749C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev)();
extern void ABISELECT(_ZThn1176_N9S20749C26D0Ev,_ZThn768_N9S20749C26D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S20749C26D1Ev,_ZTv0_n36_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1248_N9S20749C26D1Ev,_ZThn820_N9S20749C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20749C26D0Ev,_ZTv0_n36_N9S20749C26D0Ev)();
extern void ABISELECT(_ZThn1248_N9S20749C26D0Ev,_ZThn820_N9S20749C26D0Ev)() __attribute__((weak));
extern void _ZN9S20749C152v4Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C26D1Ev,_ZTv0_n32_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1312_N9S20749C26D1Ev,_ZThn876_N9S20749C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20749C26D0Ev,_ZTv0_n32_N9S20749C26D0Ev)();
extern void ABISELECT(_ZThn1312_N9S20749C26D0Ev,_ZThn876_N9S20749C26D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C26D1Ev,_ZTv0_n28_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1400_N9S20749C26D1Ev,_ZThn920_N9S20749C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C26D0Ev,_ZTv0_n28_N9S20749C26D0Ev)();
extern void ABISELECT(_ZThn1400_N9S20749C26D0Ev,_ZThn920_N9S20749C26D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C26D1Ev,_ZTvn760_n28_N9S20749C26D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C26D0Ev,_ZTvn760_n28_N9S20749C26D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C26D1Ev,_ZTvn764_n28_N9S20749C26D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C26D0Ev,_ZTvn764_n28_N9S20749C26D0Ev)();
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C26[] = {
  ABISELECT(2576,1688),
  ABISELECT(1400,920),
  ABISELECT(1312,876),
  ABISELECT(1248,820),
  ABISELECT(1176,768),
  ABISELECT(1200,780),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C26D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C26D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(40,20),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C26D1Ev,_ZThn760_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C26D0Ev,_ZThn760_N9S20749C26D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(32,16),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C26D1Ev,_ZThn764_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C26D0Ev,_ZThn764_N9S20749C26D0Ev),
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1176,-768),
  ABISELECT(-1176,-768),
  ABISELECT(24,12),
  ABISELECT(-1176,-768),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  ABISELECT(16,8),
  ABISELECT(1392,916),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  0,
  ABISELECT(-1248,-820),
  0,
  ABISELECT(-1248,-820),
  ABISELECT(152,100),
  ABISELECT(-48,-40),
  ABISELECT(-1248,-820),
  ABISELECT(64,56),
  ABISELECT(-1248,-820),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20749C26D1Ev,_ZTv0_n36_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20749C26D0Ev,_ZTv0_n36_N9S20749C26D0Ev),
  (VTBL_ENTRY)&_ZN9S20749C152v4Ev,
  ABISELECT(-1312,-876),
  0,
  ABISELECT(-1312,-876),
  ABISELECT(88,44),
  ABISELECT(-1312,-876),
  ABISELECT(-112,-96),
  ABISELECT(-1312,-876),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C26D1Ev,_ZTv0_n32_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C26D0Ev,_ZTv0_n32_N9S20749C26D0Ev),
  ABISELECT(-1400,-920),
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C26D1Ev,_ZTv0_n28_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C26D0Ev,_ZTv0_n28_N9S20749C26D0Ev),
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-2560,-1680),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C26D1Ev,_ZTvn760_n28_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C26D0Ev,_ZTvn760_n28_N9S20749C26D0Ev),
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-2568,-1684),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C26D1Ev,_ZTvn764_n28_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C26D0Ev,_ZTvn764_n28_N9S20749C26D0Ev),
  0,
  ABISELECT(-1376,-908),
  ABISELECT(-2576,-1688),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20749C26[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C18D1Ev();
extern void _ZN9S20749C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C18__A__9S20749C26[] = {
  ABISELECT(1200,780),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C129S20749C18__9S20749C26[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C26[] = {
  ABISELECT(-1160,-760),
  ABISELECT(40,20),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C18__9S20749C26[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C19D1Ev();
extern void _ZN9S20749C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C26[] = {
  ABISELECT(-1168,-764),
  ABISELECT(32,16),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C199S20749C18__A1__9S20749C26[] = {
  ABISELECT(-1168,-764),
  ABISELECT(32,16),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A1__9S20749C26[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C199S20749C18__9S20749C26[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C18__A__9S20749C26[] = {
  ABISELECT(-1160,-760),
  ABISELECT(40,20),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C19__9S20749C18__A__9S20749C26[] = {
  ABISELECT(-1168,-764),
  ABISELECT(32,16),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__9S20749C26[] = {
  0,
  ABISELECT(-1176,-768),
  0,
  ABISELECT(-1176,-768),
  ABISELECT(24,12),
  ABISELECT(-1176,-768),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C2__9S20749C26[] = {
  0,
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20749C8__9S20749C26[] = {
  ABISELECT(16,8),
  ABISELECT(1392,916),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C8[0]),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__8S20749C8__9S20749C26[] = {
  0,
  ABISELECT(-1376,-908),
  ABISELECT(-1392,-916),
  (VTBL_ENTRY)&(_ZTI8S20749C8[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C4__A2__9S20749C26[] = {
  ABISELECT(-1176,-768),
  ABISELECT(24,12),
  ABISELECT(-1176,-768),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C4__A2__9S20749C26[] = {
  0,
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C15D1Ev();
extern void _ZN9S20749C15D0Ev();
extern void _ZN9S20749C152v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C15__9S20749C26[] = {
  ABISELECT(-1248,-820),
  ABISELECT(152,100),
  ABISELECT(-48,-40),
  ABISELECT(-1248,-820),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20749C152v4Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C16D1Ev();
extern void _ZN9S20749C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C169S20749C15__9S20749C26[] = {
  ABISELECT(-1248,-820),
  ABISELECT(152,100),
  ABISELECT(-48,-40),
  ABISELECT(-1248,-820),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C16D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20749C16D1Ev,_ZThn56_N9S20749C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20749C16D0Ev,_ZThn56_N9S20749C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C169S20749C15__9S20749C26[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1312,-876),
  ABISELECT(88,44),
  ABISELECT(-1312,-876),
  ABISELECT(-112,-96),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C169S20749C15__9S20749C26[] = {
  0,
  ABISELECT(1248,820),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZThn152_N9S20749C16D1Ev,_ZThn100_N9S20749C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev)();
extern void ABISELECT(_ZThn152_N9S20749C16D0Ev,_ZThn100_N9S20749C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C169S20749C15__9S20749C26[] = {
  ABISELECT(-152,-100),
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C16D1Ev,_ZTvn760_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C16D0Ev,_ZTvn760_n28_N9S20749C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C169S20749C15__9S20749C26[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C16D1Ev,_ZTvn760_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C16D0Ev,_ZTvn760_n28_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C16D1Ev,_ZTvn764_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C16D0Ev,_ZTvn764_n28_N9S20749C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C169S20749C15__9S20749C26[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C16D1Ev,_ZTvn764_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C16D0Ev,_ZTvn764_n28_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C15D1Ev,_ZTv0_n32_N9S20749C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S20749C15D1Ev,_ZThn56_N9S20749C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20749C15D0Ev,_ZTv0_n32_N9S20749C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S20749C15D0Ev,_ZThn56_N9S20749C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C15__9S20749C26[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1312,-876),
  ABISELECT(88,44),
  ABISELECT(-1312,-876),
  ABISELECT(-112,-96),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C15D1Ev,_ZTv0_n32_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C15D0Ev,_ZTv0_n32_N9S20749C15D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C15__9S20749C26[] = {
  0,
  ABISELECT(1248,820),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C15D1Ev,_ZTv0_n28_N9S20749C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20749C15D1Ev,_ZThn100_N9S20749C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C15D0Ev,_ZTv0_n28_N9S20749C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20749C15D0Ev,_ZThn100_N9S20749C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C15__9S20749C26[] = {
  ABISELECT(-152,-100),
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C15D1Ev,_ZTv0_n28_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C15D0Ev,_ZTv0_n28_N9S20749C15D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C15D1Ev,_ZTvn760_n28_N9S20749C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C15D0Ev,_ZTvn760_n28_N9S20749C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C15__9S20749C26[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C15D1Ev,_ZTvn760_n28_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C15D0Ev,_ZTvn760_n28_N9S20749C15D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C15D1Ev,_ZTvn764_n28_N9S20749C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C15D0Ev,_ZTvn764_n28_N9S20749C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C15__9S20749C26[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C15D1Ev,_ZTvn764_n28_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C15D0Ev,_ZTvn764_n28_N9S20749C15D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C17D1Ev();
extern void _ZN9S20749C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C26[] = {
  ABISELECT(-1312,-876),
  ABISELECT(88,44),
  ABISELECT(-1312,-876),
  ABISELECT(-112,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C17D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C99S20749C17__9S20749C26[] = {
  ABISELECT(-112,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C17__9S20749C26[] = {
  0,
  ABISELECT(1312,876),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZThn88_N9S20749C17D1Ev,_ZThn44_N9S20749C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev)();
extern void ABISELECT(_ZThn88_N9S20749C17D0Ev,_ZThn44_N9S20749C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C17__9S20749C26[] = {
  ABISELECT(-88,-44),
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C17D1Ev,_ZTvn760_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C17D0Ev,_ZTvn760_n28_N9S20749C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C17__9S20749C26[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C17D1Ev,_ZTvn760_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C17D0Ev,_ZTvn760_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C17D1Ev,_ZTvn764_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C17D0Ev,_ZTvn764_n28_N9S20749C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C17__9S20749C26[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-1256,-808),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C17D1Ev,_ZTvn764_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C17D0Ev,_ZTvn764_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C18D1Ev();
extern void _ZN9S20749C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C18__A1__9S20749C26[] = {
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C129S20749C18__A1__9S20749C26[] = {
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C129S20749C18__A1__9S20749C26[] = {
  0,
  ABISELECT(1400,920),
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__A3__9S20749C26[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C18__A3__9S20749C26[] = {
  0,
  ABISELECT(2560,1680),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C19D1Ev();
extern void _ZN9S20749C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__A1__9S20749C26[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C199S20749C18__A4__9S20749C26[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A4__9S20749C26[] = {
  0,
  ABISELECT(2568,1684),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C199S20749C18__A1__9S20749C26[] = {
  0,
  ABISELECT(2568,1684),
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C18__A1__9S20749C26[] = {
  0,
  ABISELECT(1400,920),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C18__A1__9S20749C26[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C19__9S20749C18__A1__9S20749C26[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__A1__9S20749C26[] = {
  ABISELECT(-1376,-908),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
static  VTT_ENTRY vtt_S20749C26[] = {
  {&(_ZTV9S20749C26[11]),  11,102},
  {&(_tg__ZTV9S20749C18__A__9S20749C26[6]),  6,9},
  {&(_tg__ZTV9S20749C129S20749C18__9S20749C26[4]),  4,5},
  {&(_tg__ZTV9S20749C129S20749C18__9S20749C26[4]),  4,5},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C26[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C18__9S20749C26[3]),  3,4},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C26[5]),  5,8},
  {&(_tg__ZTV8S20749C49S20749C199S20749C18__A1__9S20749C26[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A1__9S20749C26[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C199S20749C18__9S20749C26[3]),  3,4},
  {&(_tg__ZTV9S20749C18__A__9S20749C26[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C18__A__9S20749C26[5]),  5,8},
  {&(_tg__ZTV9S20749C19__9S20749C18__A__9S20749C26[5]),  5,8},
  {&(_tg__ZTV8S20749C2__9S20749C26[8]),  8,12},
  {&(_tg__ZTV8S20749C2__9S20749C26[8]),  8,12},
  {&(_tg__ZTV8S20749C6__8S20749C2__9S20749C26[3]),  3,4},
  {&(_tg__ZTV8S20749C8__9S20749C26[4]),  4,4},
  {&(_tg__ZTV8S20749C9__8S20749C8__9S20749C26[4]),  4,5},
  {&(_ZTV9S20749C26[11]),  11,102},
  {&(_ZTV9S20749C26[19]),  19,102},
  {&(_ZTV9S20749C26[27]),  27,102},
  {&(_ZTV9S20749C26[38]),  38,102},
  {&(_ZTV9S20749C26[38]),  38,102},
  {&(_ZTV9S20749C26[56]),  56,102},
  {&(_ZTV9S20749C26[68]),  68,102},
  {&(_ZTV9S20749C26[78]),  78,102},
  {&(_ZTV9S20749C26[86]),  86,102},
  {&(_ZTV9S20749C26[94]),  94,102},
  {&(_ZTV9S20749C26[46]),  46,102},
  {&(_ZTV9S20749C26[101]),  101,102},
  {&(_tg__ZTV8S20749C4__A2__9S20749C26[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C4__A2__9S20749C26[3]),  3,4},
  {&(_tg__ZTV9S20749C15__9S20749C26[7]),  7,11},
  {&(_tg__ZTV9S20749C169S20749C15__9S20749C26[7]),  7,10},
  {&(_tg__ZTV9S20749C17__9S20749C169S20749C15__9S20749C26[8]),  8,11},
  {&(_tg__ZTV8S20749C6__9S20749C169S20749C15__9S20749C26[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C169S20749C15__9S20749C26[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C169S20749C15__9S20749C26[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C169S20749C15__9S20749C26[5]),  5,8},
  {&(_tg__ZTV9S20749C17__9S20749C15__9S20749C26[8]),  8,11},
  {&(_tg__ZTV8S20749C6__9S20749C15__9S20749C26[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C15__9S20749C26[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C15__9S20749C26[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C15__9S20749C26[5]),  5,8},
  {&(_tg__ZTV9S20749C17__9S20749C26[6]),  6,9},
  {&(_tg__ZTV8S20749C99S20749C17__9S20749C26[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C17__9S20749C26[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C17__9S20749C26[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C17__9S20749C26[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C17__9S20749C26[5]),  5,8},
  {&(_tg__ZTV9S20749C18__A1__9S20749C26[6]),  6,9},
  {&(_tg__ZTV9S20749C129S20749C18__A1__9S20749C26[4]),  4,5},
  {&(_tg__ZTV8S20749C6__9S20749C129S20749C18__A1__9S20749C26[3]),  3,4},
  {&(_tg__ZTV8S20749C49S20749C18__A3__9S20749C26[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C18__A3__9S20749C26[3]),  3,4},
  {&(_tg__ZTV9S20749C199S20749C18__A1__9S20749C26[5]),  5,8},
  {&(_tg__ZTV8S20749C49S20749C199S20749C18__A4__9S20749C26[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A4__9S20749C26[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C199S20749C18__A1__9S20749C26[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C18__A1__9S20749C26[3]),  3,4},
  {&(_tg__ZTV8S20749C4__9S20749C18__A1__9S20749C26[5]),  5,8},
  {&(_tg__ZTV9S20749C19__9S20749C18__A1__9S20749C26[5]),  5,8},
  {&(_tg__ZTV8S20749C9__A1__9S20749C26[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20749C26[];
extern  VTBL_ENTRY _ZTV9S20749C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C26[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20749C17D0Ev,_ZThn44_N9S20749C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20749C17D1Ev,_ZThn44_N9S20749C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C15D0Ev,_ZTv0_n28_N9S20749C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20749C15D0Ev,_ZThn100_N9S20749C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C15D1Ev,_ZTv0_n28_N9S20749C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20749C15D1Ev,_ZThn100_N9S20749C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C15D0Ev,_ZTv0_n32_N9S20749C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C15D0Ev,_ZThn56_N9S20749C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C15D1Ev,_ZTv0_n32_N9S20749C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C15D1Ev,_ZThn56_N9S20749C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20749C16D0Ev,_ZThn100_N9S20749C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20749C16D1Ev,_ZThn100_N9S20749C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C16D0Ev,_ZThn56_N9S20749C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C16D1Ev,_ZThn56_N9S20749C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C26D0Ev,_ZTv0_n28_N9S20749C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N9S20749C26D0Ev,_ZThn920_N9S20749C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C26D1Ev,_ZTv0_n28_N9S20749C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N9S20749C26D1Ev,_ZThn920_N9S20749C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C26D0Ev,_ZTv0_n32_N9S20749C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N9S20749C26D0Ev,_ZThn876_N9S20749C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C26D1Ev,_ZTv0_n32_N9S20749C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N9S20749C26D1Ev,_ZThn876_N9S20749C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20749C26D0Ev,_ZTv0_n36_N9S20749C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1248_N9S20749C26D0Ev,_ZThn820_N9S20749C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20749C26D1Ev,_ZTv0_n36_N9S20749C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1248_N9S20749C26D1Ev,_ZThn820_N9S20749C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S20749C26D0Ev,_ZThn768_N9S20749C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S20749C26D1Ev,_ZThn768_N9S20749C26D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20749C26 = {  "S20749C26", // class name
  bases_S20749C26, 35,
  &(vtc_S20749C26[0]), // expected_vtbl_contents
  &(vtt_S20749C26[0]), // expected_vtt_contents
  ABISELECT(2672,1732), // object size
  NSPAIRA(_ZTI9S20749C26),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20749C26),102, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C26),63, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C21  : virtual S20749C4 , S20749C22 , S20749C24 , virtual S20749C26 {
  __tsi64 s20749c21f0;
  void *s20749c21f1;
  virtual void  v5(); // _ZN9S20749C212v5Ev
  ~S20749C21(); // tgen
  S20749C21(); // tgen
};
//SIG(-1 S20749C21) C1{ VBC2{ VBC3{ m FL[5]} VBC4{ v2} BC5{ m} vd} BC6{ BC7{ BC8{ VBC5 VBC2 v3} vd} vd Fc} BC9{ VBC10{ VBC3 BC8 VBC11{ BC3 BC4}} BC12{ VBC4 VBC2 VBC13{ m FL[4]} VBC8 VBC14{ VBC4 FC15{ BC4 VBC3 BC5 Fp[10]}[9]} vd} v4} VBC16{ BC17{ VBC5 BC14 BC2 BC18{ BC2 vd}} BC8 VBC19{ BC20{ VBC21{ VBC4 BC15 VBC17 vd} BC22{ BC11 FD}} vd v5} BC23{ VBC15} BC24{ m} Fs} v1 FL Fp}


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

static void Test_S20749C21()
{
  extern Class_Descriptor cd_S20749C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(248,650)];
    init_test(&cd_S20749C21, buf);
    S20749C21 *dp, &lv = *(dp=new (buf) S20749C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3952,2596), "sizeof(S20749C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20749C21)");
    /*is_ambiguous_... S20749C21::S20749C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*), ABISELECT(40,24), "S20749C21");
    /*is_ambiguous_... S20749C25::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C25*), ABISELECT(40,24), "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C18*)(S20749C26*), ABISELECT(40,24), "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C19*)(S20749C18*)(S20749C26*), ABISELECT(40,24), "S20749C21");
    check_base_class_offset(lv, (S20997C6*)(S20749C9*)(S20749C17*), ABISELECT(40,24), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C18*), ABISELECT(40,24), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(40,24), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C9 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C9*), ABISELECT(40,24), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*), 0, "S20749C21");
    check_base_class_offset(lv, (S20749C6*)(S20749C11*)(S20749C24*), 0, "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C12 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C12*), 0, "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C12*)(S20749C18*)(S20749C26*), 0, "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C18*)(S20749C26*), 0, "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C19*)(S20749C18*)(S20749C26*), 0, "S20749C21");
    /*is_ambiguous_... S20749C17::S20749C6 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C17*), 0, "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C12*)(S20749C18*), 0, "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C18*), 0, "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C19*)(S20749C18*), 0, "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*), 0, "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C4*), 0, "S20749C21");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*)(S20749C23*)(S20749C22*), 0, "S20749C21");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*)(S20749C25*), 0, "S20749C21");
    check_base_class_offset(lv, (S20749C4*)(S20749C11*)(S20749C24*), 0, "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C2 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C2*), 0, "S20749C21");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*)(S20749C26*), 0, "S20749C21");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*)(S20749C23*)(S20749C22*), ABISELECT(80,64), "S20749C21");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*)(S20749C25*), ABISELECT(80,64), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C2 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*), ABISELECT(80,64), "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C18*)(S20749C26*), ABISELECT(80,64), "S20749C21");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*)(S20749C26*), ABISELECT(80,64), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C18*), ABISELECT(80,64), "S20749C21");
    check_base_class_offset(lv, (S20749C2*)(S20749C23*)(S20749C22*), 0, "S20749C21");
    check_base_class_offset(lv, (S20749C23*)(S20749C22*), 0, "S20749C21");
    check_base_class_offset(lv, (S20749C22*), 0, "S20749C21");
    check_base_class_offset(lv, (S20749C2*)(S20749C25*), ABISELECT(80,64), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C14 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C14*), ABISELECT(96,72), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C14 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C14*), ABISELECT(88,68), "S20749C21");
    check_base_class_offset(lv, (S20749C14*)(S20749C25*), ABISELECT(88,68), "S20749C21");
    check_base_class_offset(lv, (S20749C25*)(S20749C24*), ABISELECT(80,64), "S20749C21");
    check_base_class_offset(lv, (S10258C6_nt*)(S20749C11*)(S20749C24*), ABISELECT(136,112), "S20749C21");
    check_base_class_offset(lv, (S20749C2*)(S20749C11*)(S20749C24*), ABISELECT(16,8), "S20749C21");
    check_base_class_offset(lv, (S20749C12*)(S20749C11*)(S20749C24*), ABISELECT(168,144), "S20749C21");
    check_base_class_offset(lv, (S20749C11*)(S20749C24*), ABISELECT(16,8), "S20749C21");
    check_base_class_offset(lv, (S20749C24*), ABISELECT(16,8), "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C12*)(S20749C18*)(S20749C26*), ABISELECT(1328,904), "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C18*)(S20749C26*), ABISELECT(2488,1664), "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C18*)(S20749C26*), ABISELECT(2488,1664), "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C19*)(S20749C18*)(S20749C26*), ABISELECT(2496,1668), "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C19*)(S20749C18*)(S20749C26*), ABISELECT(2496,1668), "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C19*)(S20749C18*)(S20749C26*), ABISELECT(2496,1668), "S20749C21");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C18*)(S20749C26*), ABISELECT(1328,904), "S20749C21");
    check_base_class_offset(lv, (S20749C2*)(S20749C26*), ABISELECT(2504,1672), "S20749C21");
    check_base_class_offset(lv, (S20749C6*)(S20749C9*)(S20749C17*), ABISELECT(2592,1740), "S20749C21");
    check_base_class_offset(lv, (S4227C37*)(S20749C9*)(S20749C17*), ABISELECT(2592,1740), "S20749C21");
    check_base_class_offset(lv, (S20749C9*)(S20749C17*), ABISELECT(2592,1740), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C12*)(S20749C18*), ABISELECT(2680,1784), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C18*), ABISELECT(3840,2544), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C18*), ABISELECT(3840,2544), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(3848,2548), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(3848,2548), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C19*)(S20749C18*), ABISELECT(3848,2548), "S20749C21");
    check_base_class_offset(lv, (S20749C18*)(S20749C17*), ABISELECT(2680,1784), "S20749C21");
    check_base_class_offset(lv, (S20749C17*)(S20749C16*)(S20749C15*), ABISELECT(2592,1740), "S20749C21");
    check_base_class_offset(lv, (S20997C6*)(S20749C14*)(S20749C20*)(S20749C16*)(S20749C15*), ABISELECT(2536,1688), "S20749C21");
    check_base_class_offset(lv, (S20749C6*)(S20749C14*)(S20749C20*)(S20749C16*)(S20749C15*), ABISELECT(2528,1684), "S20749C21");
    check_base_class_offset(lv, (S20749C14*)(S20749C20*)(S20749C16*)(S20749C15*), ABISELECT(2528,1684), "S20749C21");
    check_base_class_offset(lv, (S20749C20*)(S20749C16*)(S20749C15*), ABISELECT(2528,1684), "S20749C21");
    check_base_class_offset(lv, (S20749C16*)(S20749C15*), ABISELECT(2528,1684), "S20749C21");
    check_base_class_offset(lv, (S20749C15*)(S20749C26*), ABISELECT(2528,1684), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C9 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C9*), ABISELECT(3856,2552), "S20749C21");
    /*is_ambiguous_... S20749C21::S20749C9 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C9*), ABISELECT(3856,2552), "S20749C21");
    check_base_class_offset(lv, (S20749C9*)(S20749C8*)(S20749C26*), ABISELECT(3856,2552), "S20749C21");
    check_base_class_offset(lv, (S20749C8*)(S20749C26*), ABISELECT(2512,1676), "S20749C21");
    check_base_class_offset(lv, (S4227C27*)(S20749C26*), ABISELECT(1328,904), "S20749C21");
    check_base_class_offset(lv, (S20749C26*), ABISELECT(1328,904), "S20749C21");
    check_field_offset(lv, s20749c21f0, ABISELECT(24,12), "S20749C21.s20749c21f0");
    check_field_offset(lv, s20749c21f1, ABISELECT(32,20), "S20749C21.s20749c21f1");
    test_class_info(&lv, &cd_S20749C21);
    dp->~S20749C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C21(Test_S20749C21, "S20749C21", ABISELECT(3952,2596));

#else // __cplusplus

extern void _ZN9S20749C21C1Ev();
extern void _ZN9S20749C21D1Ev();
Name_Map name_map_S20749C21[] = {
  NSPAIR(_ZN9S20749C21C1Ev),
  NSPAIR(_ZN9S20749C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20749C23;
extern VTBL_ENTRY _ZTI9S20749C23[];
extern  VTBL_ENTRY _ZTV9S20749C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C23[];
extern Class_Descriptor cd_S20749C22;
extern VTBL_ENTRY _ZTI9S20749C22[];
extern  VTBL_ENTRY _ZTV9S20749C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C22[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
extern Class_Descriptor cd_S20749C25;
extern VTBL_ENTRY _ZTI9S20749C25[];
extern  VTBL_ENTRY _ZTV9S20749C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C25[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S20749C11;
extern VTBL_ENTRY _ZTI9S20749C11[];
extern  VTBL_ENTRY _ZTV9S20749C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C11[];
extern Class_Descriptor cd_S20749C24;
extern VTBL_ENTRY _ZTI9S20749C24[];
extern  VTBL_ENTRY _ZTV9S20749C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C24[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C19;
extern VTBL_ENTRY _ZTI9S20749C19[];
extern  VTBL_ENTRY _ZTV9S20749C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C19[];
extern Class_Descriptor cd_S20749C18;
extern VTBL_ENTRY _ZTI9S20749C18[];
extern  VTBL_ENTRY _ZTV9S20749C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C18[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C19;
extern VTBL_ENTRY _ZTI9S20749C19[];
extern  VTBL_ENTRY _ZTV9S20749C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C19[];
extern Class_Descriptor cd_S20749C18;
extern VTBL_ENTRY _ZTI9S20749C18[];
extern  VTBL_ENTRY _ZTV9S20749C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C18[];
extern Class_Descriptor cd_S20749C17;
extern VTBL_ENTRY _ZTI9S20749C17[];
extern  VTBL_ENTRY _ZTV9S20749C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C17[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
extern Class_Descriptor cd_S20749C20;
extern VTBL_ENTRY _ZTI9S20749C20[];
extern  VTBL_ENTRY _ZTV9S20749C20[];
extern Class_Descriptor cd_S20749C16;
extern VTBL_ENTRY _ZTI9S20749C16[];
extern  VTBL_ENTRY _ZTV9S20749C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C16[];
extern Class_Descriptor cd_S20749C15;
extern VTBL_ENTRY _ZTI9S20749C15[];
extern  VTBL_ENTRY _ZTV9S20749C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C15[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
extern Class_Descriptor cd_S20749C8;
extern VTBL_ENTRY _ZTI8S20749C8[];
extern  VTBL_ENTRY _ZTV8S20749C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C8[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S20749C26;
extern VTBL_ENTRY _ZTI9S20749C26[];
extern  VTBL_ENTRY _ZTV9S20749C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C26[];
static Base_Class bases_S20749C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S20749C6,    0, //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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    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
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20749C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20749C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20749C22,    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
    34, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20749C2,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(96,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20749C6,    ABISELECT(88,68), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20749C14,    ABISELECT(88,68), //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
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20749C25,    ABISELECT(80,64), //bcp->offset
    42, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S10258C6_nt,    ABISELECT(136,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
    16, //immediately_derived
  0, 1},
  {&cd_S20749C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20749C12,    ABISELECT(168,144), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20749C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20749C24,    ABISELECT(16,8), //bcp->offset
    23, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20749C12,    ABISELECT(1328,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2488,1664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(2488,1664), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2496,1668), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(2496,1668), //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
    26, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20749C19,    ABISELECT(2496,1668), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20749C18,    ABISELECT(1328,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20749C2,    ABISELECT(2504,1672), //bcp->offset
    97, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20749C6,    ABISELECT(2592,1740), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2592,1740), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20749C9,    ABISELECT(2592,1740), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20749C12,    ABISELECT(2680,1784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(3840,2544), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(3840,2544), //bcp->offset
    148, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(3848,2548), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(3848,2548), //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
    11, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20749C19,    ABISELECT(3848,2548), //bcp->offset
    156, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    108, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20749C18,    ABISELECT(2680,1784), //bcp->offset
    138, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S20749C17,    ABISELECT(2592,1740), //bcp->offset
    127, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(2536,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20749C6,    ABISELECT(2528,1684), //bcp->offset
    -1, //bcp->virtual_function_table_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
    39, //immediately_derived
  0, 0},
  {&cd_S20749C14,    ABISELECT(2528,1684), //bcp->offset
    -1, //bcp->virtual_function_table_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
    40, //immediately_derived
  0, 0},
  {&cd_S20749C20,    ABISELECT(2528,1684), //bcp->offset
    -1, //bcp->virtual_function_table_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
    41, //immediately_derived
  0, 0},
  {&cd_S20749C16,    ABISELECT(2528,1684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S20749C15,    ABISELECT(2528,1684), //bcp->offset
    113, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S20749C6,    ABISELECT(3856,2552), //bcp->offset
    -1, //bcp->virtual_function_table_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
    45, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(3856,2552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C9,    ABISELECT(3856,2552), //bcp->offset
    164, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    115, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S20749C8,    ABISELECT(2512,1676), //bcp->offset
    109, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S4227C27,    ABISELECT(1328,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C26,    ABISELECT(1328,904), //bcp->offset
    65, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20749C21[];
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev)();
extern void _ZN9S20749C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev)();
extern void _ZN9S20749C21D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN9S20749C212v5Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20749C21D1Ev,_ZThn8_N9S20749C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20749C21D0Ev,_ZThn8_N9S20749C21D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN9S20749C242v3Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20749C21D1Ev,_ZThn64_N9S20749C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev)();
extern void ABISELECT(_ZThn80_N9S20749C21D0Ev,_ZThn64_N9S20749C21D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n96_N9S20749C21D1Ev,_ZTv0_n48_N9S20749C21D1Ev)();
extern void ABISELECT(_ZThn1328_N9S20749C21D1Ev,_ZThn904_N9S20749C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20749C21D0Ev,_ZTv0_n48_N9S20749C21D0Ev)();
extern void ABISELECT(_ZThn1328_N9S20749C21D0Ev,_ZThn904_N9S20749C21D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n96_N9S20749C21D1Ev,_ZTvn760_n48_N9S20749C21D1Ev)();
extern void ABISELECT(_ZTvn1160_n96_N9S20749C21D0Ev,_ZTvn760_n48_N9S20749C21D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n96_N9S20749C21D1Ev,_ZTvn764_n48_N9S20749C21D1Ev)();
extern void ABISELECT(_ZTvn1168_n96_N9S20749C21D0Ev,_ZTvn764_n48_N9S20749C21D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev)();
extern void ABISELECT(_ZThn2504_N9S20749C21D1Ev,_ZThn1672_N9S20749C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev)();
extern void ABISELECT(_ZThn2504_N9S20749C21D0Ev,_ZThn1672_N9S20749C21D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S20749C21D1Ev,_ZTv0_n36_N9S20749C21D1Ev)();
extern void ABISELECT(_ZThn2528_N9S20749C21D1Ev,_ZThn1684_N9S20749C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20749C21D0Ev,_ZTv0_n36_N9S20749C21D0Ev)();
extern void ABISELECT(_ZThn2528_N9S20749C21D0Ev,_ZThn1684_N9S20749C21D0Ev)() __attribute__((weak));
extern void _ZN9S20749C152v4Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C21D1Ev,_ZTv0_n32_N9S20749C21D1Ev)();
extern void ABISELECT(_ZThn2592_N9S20749C21D1Ev,_ZThn1740_N9S20749C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20749C21D0Ev,_ZTv0_n32_N9S20749C21D0Ev)();
extern void ABISELECT(_ZThn2592_N9S20749C21D0Ev,_ZThn1740_N9S20749C21D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C21D1Ev,_ZTv0_n28_N9S20749C21D1Ev)();
extern void ABISELECT(_ZThn2680_N9S20749C21D1Ev,_ZThn1784_N9S20749C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C21D0Ev,_ZTv0_n28_N9S20749C21D0Ev)();
extern void ABISELECT(_ZThn2680_N9S20749C21D0Ev,_ZThn1784_N9S20749C21D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C21D1Ev,_ZTvn760_n28_N9S20749C21D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C21D0Ev,_ZTvn760_n28_N9S20749C21D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C21D1Ev,_ZTvn764_n28_N9S20749C21D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C21D0Ev,_ZTvn764_n28_N9S20749C21D0Ev)();
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY vtc_S20749C21[] = {
  ABISELECT(3856,2552),
  ABISELECT(2680,1784),
  ABISELECT(2592,1740),
  ABISELECT(2528,1684),
  ABISELECT(1328,904),
  ABISELECT(168,144),
  ABISELECT(16,8),
  ABISELECT(136,112),
  ABISELECT(88,68),
  ABISELECT(80,64),
  0,
  ABISELECT(80,64),
  0,
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20749C212v5Ev,
  ABISELECT(72,60),
  ABISELECT(64,56),
  ABISELECT(152,136),
  0,
  ABISELECT(120,104),
  0,
  ABISELECT(-16,-8),
  ABISELECT(64,56),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20749C242v3Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-80,-64),
  0,
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  -40,
  ABISELECT(-80,-64),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  0,
  ABISELECT(-88,-68),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  ABISELECT(-168,-144),
  ABISELECT(-168,-144),
  ABISELECT(-168,-144),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  ABISELECT(1176,768),
  ABISELECT(-1328,-904),
  ABISELECT(2528,1648),
  ABISELECT(1352,880),
  ABISELECT(1264,836),
  ABISELECT(1200,780),
  ABISELECT(-1328,-904),
  ABISELECT(-1288,-880),
  ABISELECT(-1248,-840),
  ABISELECT(-1328,-904),
  ABISELECT(-1328,-904),
  ABISELECT(-1328,-904),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20749C21D1Ev,_ZTv0_n48_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20749C21D0Ev,_ZTv0_n48_N9S20749C21D0Ev),
  ABISELECT(-2488,-1664),
  ABISELECT(-2448,-1640),
  ABISELECT(-2488,-1664),
  ABISELECT(-2488,-1664),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N9S20749C21D1Ev,_ZTvn760_n48_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N9S20749C21D0Ev,_ZTvn760_n48_N9S20749C21D0Ev),
  ABISELECT(-2496,-1668),
  ABISELECT(-2456,-1644),
  ABISELECT(-2496,-1668),
  ABISELECT(-2496,-1668),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N9S20749C21D1Ev,_ZTvn764_n48_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N9S20749C21D0Ev,_ZTvn764_n48_N9S20749C21D0Ev),
  ABISELECT(-2504,-1672),
  ABISELECT(-2424,-1608),
  ABISELECT(-2504,-1672),
  ABISELECT(-2504,-1672),
  ABISELECT(-2464,-1648),
  ABISELECT(-2504,-1672),
  ABISELECT(-2504,-1672),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  ABISELECT(-2472,-1652),
  ABISELECT(1344,876),
  ABISELECT(-2512,-1676),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  0,
  ABISELECT(-2528,-1684),
  0,
  ABISELECT(-2448,-1620),
  ABISELECT(152,100),
  ABISELECT(-2488,-1660),
  ABISELECT(-2528,-1684),
  ABISELECT(64,56),
  ABISELECT(-2528,-1684),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20749C21D1Ev,_ZTv0_n36_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20749C21D0Ev,_ZTv0_n36_N9S20749C21D0Ev),
  (VTBL_ENTRY)&_ZN9S20749C152v4Ev,
  ABISELECT(-2592,-1740),
  0,
  ABISELECT(-2512,-1676),
  ABISELECT(88,44),
  ABISELECT(-2592,-1740),
  ABISELECT(-2552,-1716),
  ABISELECT(-2592,-1740),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C21D1Ev,_ZTv0_n32_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C21D0Ev,_ZTv0_n32_N9S20749C21D0Ev),
  ABISELECT(-2680,-1784),
  ABISELECT(-2640,-1760),
  ABISELECT(-2600,-1720),
  ABISELECT(-2680,-1784),
  ABISELECT(-2680,-1784),
  ABISELECT(-2680,-1784),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C21D1Ev,_ZTv0_n28_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C21D0Ev,_ZTv0_n28_N9S20749C21D0Ev),
  ABISELECT(-3840,-2544),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2544),
  ABISELECT(-3840,-2544),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C21D1Ev,_ZTvn760_n28_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C21D0Ev,_ZTvn760_n28_N9S20749C21D0Ev),
  ABISELECT(-3848,-2548),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2548),
  ABISELECT(-3848,-2548),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C21D1Ev,_ZTvn764_n28_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C21D0Ev,_ZTvn764_n28_N9S20749C21D0Ev),
  0,
  ABISELECT(-3816,-2528),
  ABISELECT(-3856,-2552),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern VTBL_ENTRY _ZTV9S20749C21[];
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C22D1Ev,_ZTv0_n24_N9S20749C22D1Ev)();
extern void _ZN9S20749C22D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C22D0Ev,_ZTv0_n24_N9S20749C22D0Ev)();
extern void _ZN9S20749C22D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C22__9S20749C21[] = {
  0,
  ABISELECT(80,64),
  0,
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C22[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C22D1Ev,_ZTv0_n24_N9S20749C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C22D0Ev,_ZTv0_n24_N9S20749C22D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C23D1Ev,_ZTv0_n24_N9S20749C23D1Ev)();
extern void _ZN9S20749C23D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C23D0Ev,_ZTv0_n24_N9S20749C23D0Ev)();
extern void _ZN9S20749C23D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C239S20749C22__9S20749C21[] = {
  0,
  ABISELECT(80,64),
  0,
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C23[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C23D1Ev,_ZTv0_n24_N9S20749C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C23D0Ev,_ZTv0_n24_N9S20749C23D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C29S20749C239S20749C22__9S20749C21[] = {
  0,
  ABISELECT(80,64),
  0,
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev)();
extern void _ZN9S20749C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev)();
extern void _ZN9S20749C24D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN9S20749C242v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C24__9S20749C21[] = {
  ABISELECT(72,60),
  ABISELECT(64,56),
  ABISELECT(152,136),
  0,
  ABISELECT(120,104),
  0,
  ABISELECT(-16,-8),
  ABISELECT(64,56),
  0,
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20749C242v3Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev)();
extern void _ZN9S20749C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev)();
extern void _ZN9S20749C11D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C119S20749C24__9S20749C21[] = {
  ABISELECT(152,136),
  0,
  ABISELECT(120,104),
  0,
  ABISELECT(-16,-8),
  ABISELECT(64,56),
  0,
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C119S20749C24__9S20749C21[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__9S20749C119S20749C24__9S20749C21[] = {
  ABISELECT(-168,-144),
  ABISELECT(-168,-144),
  ABISELECT(-152,-136),
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev)();
extern void ABISELECT(_ZThn64_N9S20749C24D1Ev,_ZThn56_N9S20749C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev)();
extern void ABISELECT(_ZThn64_N9S20749C24D0Ev,_ZThn56_N9S20749C24D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C25__9S20749C24__9S20749C21[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-80,-64),
  0,
  ABISELECT(-64,-56),
  ABISELECT(-80,-64),
  -40,
  ABISELECT(-80,-64),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C24__9S20749C21[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C69S20749C14__A1__9S20749C24__9S20749C21[] = {
  0,
  ABISELECT(-72,-60),
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__9S20749C24__9S20749C21[] = {
  ABISELECT(-168,-144),
  ABISELECT(-168,-144),
  ABISELECT(-152,-136),
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C21[] = {
  0,
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev)();
extern void _ZN9S20749C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev)();
extern void _ZN9S20749C25D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C25__9S20749C21[] = {
  ABISELECT(8,4),
  ABISELECT(-80,-64),
  0,
  0,
  ABISELECT(-80,-64),
  -40,
  ABISELECT(-80,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C25[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C29S20749C25__A1__9S20749C21[] = {
  ABISELECT(-80,-64),
  0,
  0,
  ABISELECT(-80,-64),
  -40,
  ABISELECT(-80,-64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__8S20749C29S20749C25__A1__9S20749C21[] = {
  ABISELECT(80,64),
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C25__9S20749C21[] = {
  ABISELECT(80,64),
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI9S20749C25[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C69S20749C14__A1__9S20749C25__9S20749C21[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20749C25[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__A2__9S20749C21[] = {
  ABISELECT(-16,-8),
  ABISELECT(64,56),
  0,
  ABISELECT(-16,-8),
  ABISELECT(24,16),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__8S20749C2__A2__9S20749C21[] = {
  ABISELECT(16,8),
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__9S20749C21[] = {
  ABISELECT(-168,-144),
  ABISELECT(-168,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C12__9S20749C21[] = {
  0,
  ABISELECT(168,144),
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C26D1Ev();
extern void _ZN9S20749C26D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C26__9S20749C21[] = {
  ABISELECT(2528,1648),
  ABISELECT(1352,880),
  ABISELECT(1264,836),
  ABISELECT(1200,780),
  ABISELECT(-1328,-904),
  ABISELECT(-1288,-880),
  ABISELECT(-1248,-840),
  ABISELECT(-1328,-904),
  ABISELECT(-1328,-904),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C26D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C26D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C18D1Ev();
extern void _ZN9S20749C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C189S20749C26__9S20749C21[] = {
  ABISELECT(-1288,-880),
  ABISELECT(-1248,-840),
  ABISELECT(-1328,-904),
  ABISELECT(-1328,-904),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C129S20749C189S20749C26__A1__9S20749C21[] = {
  ABISELECT(-1328,-904),
  ABISELECT(-1328,-904),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C129S20749C189S20749C26__A1__9S20749C21[] = {
  0,
  ABISELECT(1328,904),
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C189S20749C26__A1__9S20749C21[] = {
  ABISELECT(-2488,-1664),
  ABISELECT(-2448,-1640),
  ABISELECT(-2488,-1664),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C189S20749C26__A1__9S20749C21[] = {
  0,
  ABISELECT(2488,1664),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C19D1Ev();
extern void _ZN9S20749C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C189S20749C26__9S20749C21[] = {
  ABISELECT(-2496,-1668),
  ABISELECT(-2456,-1644),
  ABISELECT(-2496,-1668),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C199S20749C189S20749C26__A2__9S20749C21[] = {
  ABISELECT(-2496,-1668),
  ABISELECT(-2456,-1644),
  ABISELECT(-2496,-1668),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C199S20749C189S20749C26__A2__9S20749C21[] = {
  0,
  ABISELECT(2496,1668),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C199S20749C189S20749C26__9S20749C21[] = {
  0,
  ABISELECT(2496,1668),
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C189S20749C26__9S20749C21[] = {
  0,
  ABISELECT(1328,904),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C189S20749C26__9S20749C21[] = {
  ABISELECT(-2488,-1664),
  ABISELECT(-2448,-1640),
  ABISELECT(-2488,-1664),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C19__9S20749C189S20749C26__9S20749C21[] = {
  ABISELECT(-2496,-1668),
  ABISELECT(-2456,-1644),
  ABISELECT(-2496,-1668),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C29S20749C26__A3__9S20749C21[] = {
  ABISELECT(-2504,-1672),
  ABISELECT(-2424,-1608),
  0,
  ABISELECT(-2504,-1672),
  ABISELECT(-2464,-1648),
  ABISELECT(-2504,-1672),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__8S20749C29S20749C26__A3__9S20749C21[] = {
  ABISELECT(2504,1672),
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(2504,1672),
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20749C89S20749C26__9S20749C21[] = {
  ABISELECT(-2472,-1652),
  ABISELECT(1344,876),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C8[0]),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__8S20749C89S20749C26__9S20749C21[] = {
  0,
  ABISELECT(-3816,-2528),
  ABISELECT(-1344,-876),
  (VTBL_ENTRY)&(_ZTI8S20749C8[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__A2__9S20749C26__9S20749C21[] = {
  ABISELECT(1328,904),
  0,
  ABISELECT(40,24),
  0,
  ABISELECT(1328,904),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C26D1Ev,_ZThn760_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C26D0Ev,_ZThn760_N9S20749C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C26__9S20749C21[] = {
  ABISELECT(-2488,-1664),
  ABISELECT(-2448,-1640),
  ABISELECT(-2488,-1664),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C26D1Ev,_ZThn760_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C26D0Ev,_ZThn760_N9S20749C26D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C26D1Ev,_ZThn764_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C26D0Ev,_ZThn764_N9S20749C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C26__9S20749C21[] = {
  ABISELECT(-2496,-1668),
  ABISELECT(-2456,-1644),
  ABISELECT(-2496,-1668),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C26D1Ev,_ZThn764_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C26D0Ev,_ZThn764_N9S20749C26D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1176_N9S20749C26D1Ev,_ZThn768_N9S20749C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev)();
extern void ABISELECT(_ZThn1176_N9S20749C26D0Ev,_ZThn768_N9S20749C26D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__9S20749C26__9S20749C21[] = {
  ABISELECT(-2504,-1672),
  ABISELECT(-2424,-1608),
  ABISELECT(-1176,-768),
  ABISELECT(-2504,-1672),
  ABISELECT(-2464,-1648),
  ABISELECT(-2504,-1672),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S20749C26D1Ev,_ZTv0_n36_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1200_N9S20749C26D1Ev,_ZThn780_N9S20749C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S20749C26D0Ev,_ZTv0_n36_N9S20749C26D0Ev)();
extern void ABISELECT(_ZThn1200_N9S20749C26D0Ev,_ZThn780_N9S20749C26D0Ev)() __attribute__((weak));
extern void _ZN9S20749C152v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C15__9S20749C26__9S20749C21[] = {
  0,
  ABISELECT(-1200,-780),
  0,
  ABISELECT(-2448,-1620),
  ABISELECT(152,100),
  ABISELECT(-2488,-1660),
  ABISELECT(-2528,-1684),
  ABISELECT(64,56),
  ABISELECT(-1200,-780),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20749C26D1Ev,_ZTv0_n36_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20749C26D0Ev,_ZTv0_n36_N9S20749C26D0Ev),
  (VTBL_ENTRY)&_ZN9S20749C152v4Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C26D1Ev,_ZTv0_n32_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1264_N9S20749C26D1Ev,_ZThn836_N9S20749C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20749C26D0Ev,_ZTv0_n32_N9S20749C26D0Ev)();
extern void ABISELECT(_ZThn1264_N9S20749C26D0Ev,_ZThn836_N9S20749C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C26__9S20749C21[] = {
  ABISELECT(-1264,-836),
  0,
  ABISELECT(-2512,-1676),
  ABISELECT(88,44),
  ABISELECT(-2592,-1740),
  ABISELECT(-2552,-1716),
  ABISELECT(-1264,-836),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C26D1Ev,_ZTv0_n32_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C26D0Ev,_ZTv0_n32_N9S20749C26D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C26D1Ev,_ZTv0_n28_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1352_N9S20749C26D1Ev,_ZThn880_N9S20749C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C26D0Ev,_ZTv0_n28_N9S20749C26D0Ev)();
extern void ABISELECT(_ZThn1352_N9S20749C26D0Ev,_ZThn880_N9S20749C26D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__A1__9S20749C26__9S20749C21[] = {
  ABISELECT(-1352,-880),
  ABISELECT(-2640,-1760),
  ABISELECT(-2600,-1720),
  ABISELECT(-2680,-1784),
  ABISELECT(-2680,-1784),
  ABISELECT(-1352,-880),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C26D1Ev,_ZTv0_n28_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C26D0Ev,_ZTv0_n28_N9S20749C26D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C26D1Ev,_ZTvn760_n28_N9S20749C26D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C26D0Ev,_ZTvn760_n28_N9S20749C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__A3__9S20749C26__9S20749C21[] = {
  ABISELECT(-3840,-2544),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2544),
  ABISELECT(-2512,-1640),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C26D1Ev,_ZTvn760_n28_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C26D0Ev,_ZTvn760_n28_N9S20749C26D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C26D1Ev,_ZTvn764_n28_N9S20749C26D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C26D0Ev,_ZTvn764_n28_N9S20749C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__A1__9S20749C26__9S20749C21[] = {
  ABISELECT(-3848,-2548),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2548),
  ABISELECT(-2520,-1644),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C26D1Ev,_ZTvn764_n28_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C26D0Ev,_ZTvn764_n28_N9S20749C26D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20749C8__9S20749C26__9S20749C21[] = {
  ABISELECT(-2472,-1652),
  ABISELECT(1344,876),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__A1__9S20749C26__9S20749C21[] = {
  0,
  ABISELECT(-3816,-2528),
  ABISELECT(-2528,-1648),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C15D1Ev();
extern void _ZN9S20749C15D0Ev();
extern void _ZN9S20749C152v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C15__9S20749C21[] = {
  ABISELECT(-2448,-1620),
  ABISELECT(152,100),
  ABISELECT(-2488,-1660),
  ABISELECT(-2528,-1684),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20749C152v4Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C16D1Ev();
extern void _ZN9S20749C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C169S20749C15__9S20749C21[] = {
  ABISELECT(-2448,-1620),
  ABISELECT(152,100),
  ABISELECT(-2488,-1660),
  ABISELECT(-2528,-1684),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C16D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20749C16D1Ev,_ZThn56_N9S20749C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20749C16D0Ev,_ZThn56_N9S20749C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C169S20749C15__9S20749C21[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-2512,-1676),
  ABISELECT(88,44),
  ABISELECT(-2592,-1740),
  ABISELECT(-2552,-1716),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C169S20749C15__9S20749C21[] = {
  0,
  ABISELECT(2528,1684),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZThn152_N9S20749C16D1Ev,_ZThn100_N9S20749C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev)();
extern void ABISELECT(_ZThn152_N9S20749C16D0Ev,_ZThn100_N9S20749C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C169S20749C15__9S20749C21[] = {
  ABISELECT(-152,-100),
  ABISELECT(-2640,-1760),
  ABISELECT(-2600,-1720),
  ABISELECT(-2680,-1784),
  ABISELECT(-2680,-1784),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C16D1Ev,_ZTvn760_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C16D0Ev,_ZTvn760_n28_N9S20749C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C169S20749C15__9S20749C21[] = {
  ABISELECT(-3840,-2544),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2544),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C16D1Ev,_ZTvn760_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C16D0Ev,_ZTvn760_n28_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C16D1Ev,_ZTvn764_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C16D0Ev,_ZTvn764_n28_N9S20749C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C169S20749C15__9S20749C21[] = {
  ABISELECT(-3848,-2548),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2548),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C16D1Ev,_ZTvn764_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C16D0Ev,_ZTvn764_n28_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C15D1Ev,_ZTv0_n32_N9S20749C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S20749C15D1Ev,_ZThn56_N9S20749C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20749C15D0Ev,_ZTv0_n32_N9S20749C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S20749C15D0Ev,_ZThn56_N9S20749C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C15__9S20749C21[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-2512,-1676),
  ABISELECT(88,44),
  ABISELECT(-2592,-1740),
  ABISELECT(-2552,-1716),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C15D1Ev,_ZTv0_n32_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C15D0Ev,_ZTv0_n32_N9S20749C15D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C15__9S20749C21[] = {
  0,
  ABISELECT(2528,1684),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C15D1Ev,_ZTv0_n28_N9S20749C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20749C15D1Ev,_ZThn100_N9S20749C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C15D0Ev,_ZTv0_n28_N9S20749C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20749C15D0Ev,_ZThn100_N9S20749C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C15__9S20749C21[] = {
  ABISELECT(-152,-100),
  ABISELECT(-2640,-1760),
  ABISELECT(-2600,-1720),
  ABISELECT(-2680,-1784),
  ABISELECT(-2680,-1784),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C15D1Ev,_ZTv0_n28_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C15D0Ev,_ZTv0_n28_N9S20749C15D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C15D1Ev,_ZTvn760_n28_N9S20749C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C15D0Ev,_ZTvn760_n28_N9S20749C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C15__9S20749C21[] = {
  ABISELECT(-3840,-2544),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2544),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C15D1Ev,_ZTvn760_n28_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C15D0Ev,_ZTvn760_n28_N9S20749C15D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C15D1Ev,_ZTvn764_n28_N9S20749C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C15D0Ev,_ZTvn764_n28_N9S20749C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C15__9S20749C21[] = {
  ABISELECT(-3848,-2548),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2548),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C15D1Ev,_ZTvn764_n28_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C15D0Ev,_ZTvn764_n28_N9S20749C15D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C17D1Ev();
extern void _ZN9S20749C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C21[] = {
  ABISELECT(-2512,-1676),
  ABISELECT(88,44),
  ABISELECT(-2592,-1740),
  ABISELECT(-2552,-1716),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C17D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C99S20749C17__9S20749C21[] = {
  ABISELECT(-2552,-1716),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C17__9S20749C21[] = {
  0,
  ABISELECT(2592,1740),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZThn88_N9S20749C17D1Ev,_ZThn44_N9S20749C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev)();
extern void ABISELECT(_ZThn88_N9S20749C17D0Ev,_ZThn44_N9S20749C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C17__9S20749C21[] = {
  ABISELECT(-88,-44),
  ABISELECT(-2640,-1760),
  ABISELECT(-2600,-1720),
  ABISELECT(-2680,-1784),
  ABISELECT(-2680,-1784),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C17D1Ev,_ZTvn760_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C17D0Ev,_ZTvn760_n28_N9S20749C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C17__9S20749C21[] = {
  ABISELECT(-3840,-2544),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2544),
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C17D1Ev,_ZTvn760_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C17D0Ev,_ZTvn760_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C17D1Ev,_ZTvn764_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C17D0Ev,_ZTvn764_n28_N9S20749C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C17__9S20749C21[] = {
  ABISELECT(-3848,-2548),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2548),
  ABISELECT(-1256,-808),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C17D1Ev,_ZTvn764_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C17D0Ev,_ZTvn764_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C18D1Ev();
extern void _ZN9S20749C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C18__A1__9S20749C21[] = {
  ABISELECT(-2640,-1760),
  ABISELECT(-2600,-1720),
  ABISELECT(-2680,-1784),
  ABISELECT(-2680,-1784),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C129S20749C18__A2__9S20749C21[] = {
  ABISELECT(-2680,-1784),
  ABISELECT(-2680,-1784),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C129S20749C18__A2__9S20749C21[] = {
  0,
  ABISELECT(2680,1784),
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__A3__9S20749C21[] = {
  ABISELECT(-3840,-2544),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2544),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C18__A3__9S20749C21[] = {
  0,
  ABISELECT(3840,2544),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C19D1Ev();
extern void _ZN9S20749C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__A1__9S20749C21[] = {
  ABISELECT(-3848,-2548),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2548),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C199S20749C18__A4__9S20749C21[] = {
  ABISELECT(-3848,-2548),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2548),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A4__9S20749C21[] = {
  0,
  ABISELECT(3848,2548),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C199S20749C18__A1__9S20749C21[] = {
  0,
  ABISELECT(3848,2548),
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C18__A1__9S20749C21[] = {
  0,
  ABISELECT(2680,1784),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C18__A1__9S20749C21[] = {
  ABISELECT(-3840,-2544),
  ABISELECT(-3800,-2520),
  ABISELECT(-3840,-2544),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C19__9S20749C18__A1__9S20749C21[] = {
  ABISELECT(-3848,-2548),
  ABISELECT(-3808,-2524),
  ABISELECT(-3848,-2548),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__A1__9S20749C21[] = {
  ABISELECT(-3816,-2528),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
static  VTT_ENTRY vtt_S20749C21[] = {
  {&(_ZTV9S20749C21[18]),  18,169},
  {&(_tg__ZTV9S20749C22__9S20749C21[8]),  8,12},
  {&(_tg__ZTV9S20749C239S20749C22__9S20749C21[8]),  8,12},
  {&(_tg__ZTV8S20749C29S20749C239S20749C22__9S20749C21[8]),  8,12},
  {&(_tg__ZTV8S20749C29S20749C239S20749C22__9S20749C21[8]),  8,12},
  {&(_tg__ZTV8S20749C29S20749C239S20749C22__9S20749C21[8]),  8,12},
  {&(_tg__ZTV9S20749C239S20749C22__9S20749C21[8]),  8,12},
  {&(_tg__ZTV9S20749C239S20749C22__9S20749C21[8]),  8,12},
  {&(_tg__ZTV9S20749C22__9S20749C21[8]),  8,12},
  {&(_tg__ZTV9S20749C22__9S20749C21[8]),  8,12},
  {&(_tg__ZTV9S20749C24__9S20749C21[14]),  14,19},
  {&(_tg__ZTV9S20749C119S20749C24__9S20749C21[12]),  12,16},
  {&(_tg__ZTV8S20749C4__9S20749C119S20749C24__9S20749C21[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C119S20749C24__9S20749C21[6]),  6,9},
  {&(_tg__ZTV9S20749C119S20749C24__9S20749C21[12]),  12,16},
  {&(_tg__ZTV9S20749C12__9S20749C119S20749C24__9S20749C21[4]),  4,5},
  {&(_tg__ZTV9S20749C25__9S20749C24__9S20749C21[10]),  10,14},
  {&(_tg__ZTV8S20749C4__9S20749C24__9S20749C21[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C24__9S20749C21[6]),  6,9},
  {&(_tg__ZTV8S20749C69S20749C14__A1__9S20749C24__9S20749C21[3]),  3,4},
  {&(_tg__ZTV9S20749C24__9S20749C21[14]),  14,19},
  {&(_tg__ZTV9S20749C12__9S20749C24__9S20749C21[4]),  4,5},
  {&(_ZTV9S20749C21[18]),  18,169},
  {&(_ZTV9S20749C21[18]),  18,169},
  {&(_ZTV9S20749C21[37]),  37,169},
  {&(_ZTV9S20749C21[52]),  52,169},
  {&(_ZTV9S20749C21[59]),  59,169},
  {&(_ZTV9S20749C21[37]),  37,169},
  {&(_ZTV9S20749C21[64]),  64,169},
  {&(_ZTV9S20749C21[78]),  78,169},
  {&(_ZTV9S20749C21[86]),  86,169},
  {&(_ZTV9S20749C21[94]),  94,169},
  {&(_ZTV9S20749C21[105]),  105,169},
  {&(_ZTV9S20749C21[123]),  123,169},
  {&(_ZTV9S20749C21[135]),  135,169},
  {&(_ZTV9S20749C21[145]),  145,169},
  {&(_ZTV9S20749C21[153]),  153,169},
  {&(_ZTV9S20749C21[161]),  161,169},
  {&(_ZTV9S20749C21[113]),  113,169},
  {&(_ZTV9S20749C21[168]),  168,169},
  {&(_tg__ZTV8S20749C4__9S20749C21[5]),  5,8},
  {&(_tg__ZTV8S20749C4__9S20749C21[5]),  5,8},
  {&(_tg__ZTV9S20749C25__9S20749C21[9]),  9,13},
  {&(_tg__ZTV8S20749C29S20749C25__A1__9S20749C21[8]),  8,12},
  {&(_tg__ZTV8S20749C4__8S20749C29S20749C25__A1__9S20749C21[6]),  6,9},
  {&(_tg__ZTV8S20749C4__8S20749C29S20749C25__A1__9S20749C21[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C25__9S20749C21[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C25__9S20749C21[6]),  6,9},
  {&(_tg__ZTV8S20749C69S20749C14__A1__9S20749C25__9S20749C21[3]),  3,4},
  {&(_tg__ZTV8S20749C2__A2__9S20749C21[8]),  8,12},
  {&(_tg__ZTV8S20749C4__8S20749C2__A2__9S20749C21[6]),  6,9},
  {&(_tg__ZTV8S20749C4__8S20749C2__A2__9S20749C21[6]),  6,9},
  {&(_tg__ZTV9S20749C12__9S20749C21[4]),  4,5},
  {&(_tg__ZTV8S20749C6__9S20749C12__9S20749C21[3]),  3,4},
  {&(_tg__ZTV9S20749C26__9S20749C21[11]),  11,14},
  {&(_tg__ZTV9S20749C189S20749C26__9S20749C21[6]),  6,9},
  {&(_tg__ZTV9S20749C129S20749C189S20749C26__A1__9S20749C21[4]),  4,5},
  {&(_tg__ZTV8S20749C6__9S20749C129S20749C189S20749C26__A1__9S20749C21[3]),  3,4},
  {&(_tg__ZTV8S20749C49S20749C189S20749C26__A1__9S20749C21[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C189S20749C26__A1__9S20749C21[3]),  3,4},
  {&(_tg__ZTV9S20749C199S20749C189S20749C26__9S20749C21[5]),  5,8},
  {&(_tg__ZTV8S20749C49S20749C199S20749C189S20749C26__A2__9S20749C21[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C199S20749C189S20749C26__A2__9S20749C21[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C199S20749C189S20749C26__9S20749C21[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C189S20749C26__9S20749C21[3]),  3,4},
  {&(_tg__ZTV8S20749C4__9S20749C189S20749C26__9S20749C21[5]),  5,8},
  {&(_tg__ZTV9S20749C19__9S20749C189S20749C26__9S20749C21[5]),  5,8},
  {&(_tg__ZTV8S20749C29S20749C26__A3__9S20749C21[8]),  8,12},
  {&(_tg__ZTV8S20749C4__8S20749C29S20749C26__A3__9S20749C21[6]),  6,9},
  {&(_tg__ZTV8S20749C4__8S20749C29S20749C26__A3__9S20749C21[6]),  6,9},
  {&(_tg__ZTV8S20749C89S20749C26__9S20749C21[4]),  4,4},
  {&(_tg__ZTV8S20749C9__8S20749C89S20749C26__9S20749C21[4]),  4,5},
  {&(_tg__ZTV8S20749C4__A2__9S20749C26__9S20749C21[6]),  6,9},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C26__9S20749C21[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C26__9S20749C21[5]),  5,8},
  {&(_tg__ZTV8S20749C2__9S20749C26__9S20749C21[8]),  8,12},
  {&(_tg__ZTV8S20749C4__A2__9S20749C26__9S20749C21[6]),  6,9},
  {&(_tg__ZTV9S20749C15__9S20749C26__9S20749C21[10]),  10,14},
  {&(_tg__ZTV9S20749C17__9S20749C26__9S20749C21[8]),  8,11},
  {&(_tg__ZTV9S20749C18__A1__9S20749C26__9S20749C21[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__A3__9S20749C26__9S20749C21[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__A1__9S20749C26__9S20749C21[5]),  5,8},
  {&(_tg__ZTV8S20749C8__9S20749C26__9S20749C21[4]),  4,4},
  {&(_tg__ZTV8S20749C9__A1__9S20749C26__9S20749C21[4]),  4,5},
  {&(_tg__ZTV9S20749C15__9S20749C21[7]),  7,11},
  {&(_tg__ZTV9S20749C169S20749C15__9S20749C21[7]),  7,10},
  {&(_tg__ZTV9S20749C17__9S20749C169S20749C15__9S20749C21[8]),  8,11},
  {&(_tg__ZTV8S20749C6__9S20749C169S20749C15__9S20749C21[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C169S20749C15__9S20749C21[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C169S20749C15__9S20749C21[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C169S20749C15__9S20749C21[5]),  5,8},
  {&(_tg__ZTV9S20749C17__9S20749C15__9S20749C21[8]),  8,11},
  {&(_tg__ZTV8S20749C6__9S20749C15__9S20749C21[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C15__9S20749C21[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C15__9S20749C21[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C15__9S20749C21[5]),  5,8},
  {&(_tg__ZTV9S20749C17__9S20749C21[6]),  6,9},
  {&(_tg__ZTV8S20749C99S20749C17__9S20749C21[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C17__9S20749C21[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C17__9S20749C21[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C17__9S20749C21[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C17__9S20749C21[5]),  5,8},
  {&(_tg__ZTV9S20749C18__A1__9S20749C21[6]),  6,9},
  {&(_tg__ZTV9S20749C129S20749C18__A2__9S20749C21[4]),  4,5},
  {&(_tg__ZTV8S20749C6__9S20749C129S20749C18__A2__9S20749C21[3]),  3,4},
  {&(_tg__ZTV8S20749C49S20749C18__A3__9S20749C21[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C18__A3__9S20749C21[3]),  3,4},
  {&(_tg__ZTV9S20749C199S20749C18__A1__9S20749C21[5]),  5,8},
  {&(_tg__ZTV8S20749C49S20749C199S20749C18__A4__9S20749C21[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A4__9S20749C21[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C199S20749C18__A1__9S20749C21[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C18__A1__9S20749C21[3]),  3,4},
  {&(_tg__ZTV8S20749C4__9S20749C18__A1__9S20749C21[5]),  5,8},
  {&(_tg__ZTV9S20749C19__9S20749C18__A1__9S20749C21[5]),  5,8},
  {&(_tg__ZTV8S20749C9__A1__9S20749C21[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20749C21[];
extern  VTBL_ENTRY _ZTV9S20749C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C21[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20749C17D0Ev,_ZThn44_N9S20749C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20749C17D1Ev,_ZThn44_N9S20749C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C15D0Ev,_ZTv0_n28_N9S20749C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20749C15D0Ev,_ZThn100_N9S20749C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C15D1Ev,_ZTv0_n28_N9S20749C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20749C15D1Ev,_ZThn100_N9S20749C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C15D0Ev,_ZTv0_n32_N9S20749C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C15D0Ev,_ZThn56_N9S20749C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C15D1Ev,_ZTv0_n32_N9S20749C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C15D1Ev,_ZThn56_N9S20749C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20749C16D0Ev,_ZThn100_N9S20749C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20749C16D1Ev,_ZThn100_N9S20749C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C16D0Ev,_ZThn56_N9S20749C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C16D1Ev,_ZThn56_N9S20749C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C26D0Ev,_ZTv0_n28_N9S20749C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N9S20749C26D0Ev,_ZThn880_N9S20749C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C26D1Ev,_ZTv0_n28_N9S20749C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1352_N9S20749C26D1Ev,_ZThn880_N9S20749C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C26D0Ev,_ZTv0_n32_N9S20749C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1264_N9S20749C26D0Ev,_ZThn836_N9S20749C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C26D1Ev,_ZTv0_n32_N9S20749C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1264_N9S20749C26D1Ev,_ZThn836_N9S20749C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20749C26D0Ev,_ZTv0_n36_N9S20749C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N9S20749C26D0Ev,_ZThn780_N9S20749C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20749C26D1Ev,_ZTv0_n36_N9S20749C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N9S20749C26D1Ev,_ZThn780_N9S20749C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S20749C26D0Ev,_ZThn768_N9S20749C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S20749C26D1Ev,_ZThn768_N9S20749C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev), // 
  (VTBL_ENTRY)_ZN9S20749C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev), // 
  (VTBL_ENTRY)_ZN9S20749C25D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev), // 
  (VTBL_ENTRY)_ZN9S20749C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev), // 
  (VTBL_ENTRY)_ZN9S20749C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C24D0Ev,_ZThn56_N9S20749C24D0Ev),
  (VTBL_ENTRY)_ZN9S20749C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C24D1Ev,_ZThn56_N9S20749C24D1Ev),
  (VTBL_ENTRY)_ZN9S20749C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C23D0Ev,_ZTv0_n24_N9S20749C23D0Ev), // 
  (VTBL_ENTRY)_ZN9S20749C23D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C23D1Ev,_ZTv0_n24_N9S20749C23D1Ev), // 
  (VTBL_ENTRY)_ZN9S20749C23D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C22D0Ev,_ZTv0_n24_N9S20749C22D0Ev), // 
  (VTBL_ENTRY)_ZN9S20749C22D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C22D1Ev,_ZTv0_n24_N9S20749C22D1Ev), // 
  (VTBL_ENTRY)_ZN9S20749C22D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C21D0Ev,_ZTv0_n28_N9S20749C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2680_N9S20749C21D0Ev,_ZThn1784_N9S20749C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C21D1Ev,_ZTv0_n28_N9S20749C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2680_N9S20749C21D1Ev,_ZThn1784_N9S20749C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C21D0Ev,_ZTv0_n32_N9S20749C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N9S20749C21D0Ev,_ZThn1740_N9S20749C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C21D1Ev,_ZTv0_n32_N9S20749C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2592_N9S20749C21D1Ev,_ZThn1740_N9S20749C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20749C21D0Ev,_ZTv0_n36_N9S20749C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2528_N9S20749C21D0Ev,_ZThn1684_N9S20749C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S20749C21D1Ev,_ZTv0_n36_N9S20749C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2528_N9S20749C21D1Ev,_ZThn1684_N9S20749C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20749C21D0Ev,_ZTv0_n48_N9S20749C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S20749C21D0Ev,_ZThn904_N9S20749C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20749C21D1Ev,_ZTv0_n48_N9S20749C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S20749C21D1Ev,_ZThn904_N9S20749C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2504_N9S20749C21D0Ev,_ZThn1672_N9S20749C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20749C21D0Ev,_ZThn64_N9S20749C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20749C21D0Ev,_ZThn8_N9S20749C21D0Ev),
  (VTBL_ENTRY)_ZN9S20749C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2504_N9S20749C21D1Ev,_ZThn1672_N9S20749C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20749C21D1Ev,_ZThn64_N9S20749C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20749C21D1Ev,_ZThn8_N9S20749C21D1Ev),
  (VTBL_ENTRY)_ZN9S20749C21D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20749C21 = {  "S20749C21", // class name
  bases_S20749C21, 49,
  &(vtc_S20749C21[0]), // expected_vtbl_contents
  &(vtt_S20749C21[0]), // expected_vtt_contents
  ABISELECT(3952,2596), // object size
  NSPAIRA(_ZTI9S20749C21),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20749C21),169, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20749C21),115, //virtual table table var
  36, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20749C1  : virtual S20749C2 , S20749C7 , virtual S20749C15 , virtual S20749C21 , S19657C2_nt {
  ~S20749C1(); // tgen
  S20749C1(); // tgen
};
//SIG(1 S20749C1) C1{ VBC2{ VBC3{ m} VBC4{ VBC5{ m FL[5]} VBC6{ v1} BC3 vd} v2} BC7{ VBC8{ VBC9{ BC6 VBC5 BC3 Fp[10]}} BC6 VBC10{ m FL[4]} VBC11{ VBC6 VBC4 VBC10 VBC2 VBC12{ VBC6 FC9[9]} vd} BC13{ BC14{ BC5 BC6} BC9}} VBC15{ BC16{ VBC17{ VBC6 BC9 VBC18{ VBC3 BC12 BC4 BC19{ BC4 vd}} vd} BC20{ BC14 FD}} vd v3} VBC21{ VBC4 BC22{ BC23{ BC2 vd} vd Fc} BC24{ VBC25{ VBC5 BC2 VBC14} BC11 v4} VBC26{ BC18 BC2 VBC15 BC8 BC27{ m} Fs} v5 FL Fp} BC28{ m Fc}}


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

static void Test_S20749C1()
{
  extern Class_Descriptor cd_S20749C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(258,676)];
    init_test(&cd_S20749C1, buf);
    S20749C1 *dp, &lv = *(dp=new (buf) S20749C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(4112,2700), "sizeof(S20749C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20749C1)");
    /*is_ambiguous_... S20749C1::S20749C2 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*), 0, "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C18*), 0, "S20749C1");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*)(S20749C23*)(S20749C22*)(S20749C21*), 0, "S20749C1");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*)(S20749C25*), 0, "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C18*)(S20749C26*), 0, "S20749C1");
    /*is_ambiguous_... S20749C2::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C2*)(S20749C26*), 0, "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*), ABISELECT(152,96), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C9 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C9*), ABISELECT(152,96), "S20749C1");
    check_base_class_offset(lv, (S20997C6*)(S20749C9*)(S20749C13*)(S20749C7*), ABISELECT(152,96), "S20749C1");
    check_base_class_offset(lv, (S20997C6*)(S20749C9*)(S20749C17*), ABISELECT(152,96), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C18*), ABISELECT(152,96), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(152,96), "S20749C1");
    /*is_ambiguous_... S20749C25::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C25*), ABISELECT(152,96), "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C18*)(S20749C26*), ABISELECT(152,96), "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C4*)(S20749C19*)(S20749C18*)(S20749C26*), ABISELECT(152,96), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C11 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C11*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C12 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C12*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C17::S20749C6 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C17*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C12*)(S20749C18*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C18*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(320,216), "S20749C1");
    check_base_class_offset(lv, (S20749C6*)(S20749C11*)(S20749C24*)(S20749C21*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C12*)(S20749C18*)(S20749C26*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C18*)(S20749C26*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C4*)(S20749C19*)(S20749C18*)(S20749C26*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C2 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C2*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C11 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C11*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C21::S20749C4 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C21*), ABISELECT(320,216), "S20749C1");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*)(S20749C23*)(S20749C22*)(S20749C21*), ABISELECT(320,216), "S20749C1");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*)(S20749C25*), ABISELECT(320,216), "S20749C1");
    check_base_class_offset(lv, (S20749C4*)(S20749C11*)(S20749C24*)(S20749C21*), ABISELECT(320,216), "S20749C1");
    check_base_class_offset(lv, (S20749C4*)(S20749C2*)(S20749C26*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C2 */ AMB_check_base_class_offset(lv, (S20749C2*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C11 */ AMB_check_base_class_offset(lv, (S20749C2*)(S20749C11*), ABISELECT(320,216), "S20749C1");
    check_base_class_offset(lv, (S20749C2*)(S20749C11*)(S20749C24*)(S20749C21*), ABISELECT(320,216), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C9 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C9*), ABISELECT(200,140), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C9 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C9*), ABISELECT(200,140), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C8 */ AMB_check_base_class_offset(lv, (S20749C9*)(S20749C8*), ABISELECT(200,140), "S20749C1");
    check_base_class_offset(lv, (S20749C9*)(S20749C8*)(S20749C26*), ABISELECT(200,140), "S20749C1");
    check_base_class_offset(lv, (S20749C8*)(S20749C7*), ABISELECT(192,136), "S20749C1");
    /*is_ambiguous_... S20749C7::S20749C6 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C7*), 0, "S20749C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S20749C7*), ABISELECT(288,184), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C11 */ AMB_check_base_class_offset(lv, (S10258C6_nt*)(S20749C11*), ABISELECT(288,184), "S20749C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S20749C11*)(S20749C24*)(S20749C21*), ABISELECT(288,184), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C11 */ AMB_check_base_class_offset(lv, (S20749C12*)(S20749C11*), ABISELECT(328,220), "S20749C1");
    check_base_class_offset(lv, (S20749C12*)(S20749C11*)(S20749C24*)(S20749C21*), ABISELECT(328,220), "S20749C1");
    check_base_class_offset(lv, (S20749C11*)(S20749C7*), ABISELECT(320,216), "S20749C1");
    check_base_class_offset(lv, (S20997C6*)(S20749C14*)(S20749C13*)(S20749C7*), ABISELECT(16,8), "S20749C1");
    check_base_class_offset(lv, (S20749C6*)(S20749C14*)(S20749C13*)(S20749C7*), ABISELECT(8,4), "S20749C1");
    check_base_class_offset(lv, (S20749C14*)(S20749C13*)(S20749C7*), ABISELECT(8,4), "S20749C1");
    check_base_class_offset(lv, (S20749C6*)(S20749C9*)(S20749C13*)(S20749C7*), ABISELECT(56,48), "S20749C1");
    check_base_class_offset(lv, (S4227C37*)(S20749C9*)(S20749C13*)(S20749C7*), ABISELECT(56,48), "S20749C1");
    check_base_class_offset(lv, (S20749C9*)(S20749C13*)(S20749C7*), ABISELECT(56,48), "S20749C1");
    check_base_class_offset(lv, (S20749C13*)(S20749C7*), ABISELECT(8,4), "S20749C1");
    check_base_class_offset(lv, (S20749C7*), 0, "S20749C1");
    check_base_class_offset(lv, (S20749C6*)(S20749C9*)(S20749C17*), ABISELECT(1552,1036), "S20749C1");
    check_base_class_offset(lv, (S4227C37*)(S20749C9*)(S20749C17*), ABISELECT(1552,1036), "S20749C1");
    check_base_class_offset(lv, (S20749C9*)(S20749C17*), ABISELECT(1552,1036), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C12*)(S20749C18*), ABISELECT(1640,1080), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C18*), ABISELECT(2800,1840), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C18*), ABISELECT(2800,1840), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(2808,1844), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C19*)(S20749C18*), ABISELECT(2808,1844), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C19*)(S20749C18*), ABISELECT(2808,1844), "S20749C1");
    check_base_class_offset(lv, (S20749C18*)(S20749C17*), ABISELECT(1640,1080), "S20749C1");
    check_base_class_offset(lv, (S20749C17*)(S20749C16*)(S20749C15*), ABISELECT(1552,1036), "S20749C1");
    check_base_class_offset(lv, (S20997C6*)(S20749C14*)(S20749C20*)(S20749C16*)(S20749C15*), ABISELECT(1496,984), "S20749C1");
    check_base_class_offset(lv, (S20749C6*)(S20749C14*)(S20749C20*)(S20749C16*)(S20749C15*), ABISELECT(1488,980), "S20749C1");
    check_base_class_offset(lv, (S20749C14*)(S20749C20*)(S20749C16*)(S20749C15*), ABISELECT(1488,980), "S20749C1");
    check_base_class_offset(lv, (S20749C20*)(S20749C16*)(S20749C15*), ABISELECT(1488,980), "S20749C1");
    check_base_class_offset(lv, (S20749C16*)(S20749C15*), ABISELECT(1488,980), "S20749C1");
    check_base_class_offset(lv, (S20749C15*), ABISELECT(1488,980), "S20749C1");
    check_base_class_offset(lv, (S20749C15*)(S20749C26*), ABISELECT(1488,980), "S20749C1");
    check_base_class_offset(lv, (S20749C2*)(S20749C23*)(S20749C22*)(S20749C21*), ABISELECT(2816,1848), "S20749C1");
    check_base_class_offset(lv, (S20749C23*)(S20749C22*)(S20749C21*), ABISELECT(2816,1848), "S20749C1");
    check_base_class_offset(lv, (S20749C22*)(S20749C21*), ABISELECT(2816,1848), "S20749C1");
    check_base_class_offset(lv, (S20749C2*)(S20749C25*), ABISELECT(2856,1872), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C14 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20749C14*), ABISELECT(2872,1880), "S20749C1");
    /*is_ambiguous_... S20749C1::S20749C14 */ AMB_check_base_class_offset(lv, (S20749C6*)(S20749C14*), ABISELECT(2864,1876), "S20749C1");
    check_base_class_offset(lv, (S20749C14*)(S20749C25*), ABISELECT(2864,1876), "S20749C1");
    check_base_class_offset(lv, (S20749C25*)(S20749C24*)(S20749C21*), ABISELECT(2856,1872), "S20749C1");
    check_base_class_offset(lv, (S20749C11*)(S20749C24*)(S20749C21*), ABISELECT(2832,1856), "S20749C1");
    check_base_class_offset(lv, (S20749C24*)(S20749C21*), ABISELECT(2832,1856), "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C12*)(S20749C18*)(S20749C26*), ABISELECT(2912,1920), "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C18*)(S20749C26*), ABISELECT(4072,2680), "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C18*)(S20749C26*), ABISELECT(4072,2680), "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20749C4*)(S20749C19*)(S20749C18*)(S20749C26*), ABISELECT(4080,2684), "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C4*)(S20749C19*)(S20749C18*)(S20749C26*), ABISELECT(4080,2684), "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C19*)(S20749C18*)(S20749C26*), ABISELECT(4080,2684), "S20749C1");
    /*is_ambiguous_... S20749C26::S20749C18 */ AMB_check_base_class_offset(lv, (S20749C18*)(S20749C26*), ABISELECT(2912,1920), "S20749C1");
    check_base_class_offset(lv, (S20749C2*)(S20749C26*), ABISELECT(4088,2688), "S20749C1");
    check_base_class_offset(lv, (S20749C8*)(S20749C26*), ABISELECT(4096,2692), "S20749C1");
    check_base_class_offset(lv, (S4227C27*)(S20749C26*), ABISELECT(2912,1920), "S20749C1");
    check_base_class_offset(lv, (S20749C26*)(S20749C21*), ABISELECT(2912,1920), "S20749C1");
    check_base_class_offset(lv, (S20749C21*), ABISELECT(2816,1848), "S20749C1");
    check_base_class_offset(lv, (S19657C2_nt*), ABISELECT(144,92), "S20749C1");
    test_class_info(&lv, &cd_S20749C1);
    dp->~S20749C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20749C1(Test_S20749C1, "S20749C1", ABISELECT(4112,2700));

#else // __cplusplus

extern void _ZN8S20749C1C1Ev();
extern void _ZN8S20749C1D1Ev();
Name_Map name_map_S20749C1[] = {
  NSPAIR(_ZN8S20749C1C1Ev),
  NSPAIR(_ZN8S20749C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
extern Class_Descriptor cd_S20749C8;
extern VTBL_ENTRY _ZTI8S20749C8[];
extern  VTBL_ENTRY _ZTV8S20749C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C8[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S20749C11;
extern VTBL_ENTRY _ZTI9S20749C11[];
extern  VTBL_ENTRY _ZTV9S20749C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C11[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
extern Class_Descriptor cd_S20749C13;
extern VTBL_ENTRY _ZTI9S20749C13[];
extern  VTBL_ENTRY _ZTV9S20749C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C13[];
extern Class_Descriptor cd_S20749C7;
extern VTBL_ENTRY _ZTI8S20749C7[];
extern  VTBL_ENTRY _ZTV8S20749C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C7[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C9;
extern VTBL_ENTRY _ZTI8S20749C9[];
extern  VTBL_ENTRY _ZTV8S20749C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C9[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C19;
extern VTBL_ENTRY _ZTI9S20749C19[];
extern  VTBL_ENTRY _ZTV9S20749C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C19[];
extern Class_Descriptor cd_S20749C18;
extern VTBL_ENTRY _ZTI9S20749C18[];
extern  VTBL_ENTRY _ZTV9S20749C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C18[];
extern Class_Descriptor cd_S20749C17;
extern VTBL_ENTRY _ZTI9S20749C17[];
extern  VTBL_ENTRY _ZTV9S20749C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C17[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
extern Class_Descriptor cd_S20749C20;
extern VTBL_ENTRY _ZTI9S20749C20[];
extern  VTBL_ENTRY _ZTV9S20749C20[];
extern Class_Descriptor cd_S20749C16;
extern VTBL_ENTRY _ZTI9S20749C16[];
extern  VTBL_ENTRY _ZTV9S20749C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C16[];
extern Class_Descriptor cd_S20749C15;
extern VTBL_ENTRY _ZTI9S20749C15[];
extern  VTBL_ENTRY _ZTV9S20749C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C15[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20749C23;
extern VTBL_ENTRY _ZTI9S20749C23[];
extern  VTBL_ENTRY _ZTV9S20749C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C23[];
extern Class_Descriptor cd_S20749C22;
extern VTBL_ENTRY _ZTI9S20749C22[];
extern  VTBL_ENTRY _ZTV9S20749C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C22[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20749C6;
extern VTBL_ENTRY _ZTI8S20749C6[];
extern  VTBL_ENTRY _ZTV8S20749C6[];
extern Class_Descriptor cd_S20749C14;
extern VTBL_ENTRY _ZTI9S20749C14[];
extern  VTBL_ENTRY _ZTV9S20749C14[];
extern Class_Descriptor cd_S20749C25;
extern VTBL_ENTRY _ZTI9S20749C25[];
extern  VTBL_ENTRY _ZTV9S20749C25[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C25[];
extern Class_Descriptor cd_S20749C11;
extern VTBL_ENTRY _ZTI9S20749C11[];
extern  VTBL_ENTRY _ZTV9S20749C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C11[];
extern Class_Descriptor cd_S20749C24;
extern VTBL_ENTRY _ZTI9S20749C24[];
extern  VTBL_ENTRY _ZTV9S20749C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C24[];
extern Class_Descriptor cd_S20749C12;
extern VTBL_ENTRY _ZTI9S20749C12[];
extern  VTBL_ENTRY _ZTV9S20749C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20749C4;
extern VTBL_ENTRY _ZTI8S20749C4[];
extern  VTBL_ENTRY _ZTV8S20749C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C4[];
extern Class_Descriptor cd_S20749C19;
extern VTBL_ENTRY _ZTI9S20749C19[];
extern  VTBL_ENTRY _ZTV9S20749C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C19[];
extern Class_Descriptor cd_S20749C18;
extern VTBL_ENTRY _ZTI9S20749C18[];
extern  VTBL_ENTRY _ZTV9S20749C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C18[];
extern Class_Descriptor cd_S20749C2;
extern VTBL_ENTRY _ZTI8S20749C2[];
extern  VTBL_ENTRY _ZTV8S20749C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C2[];
extern Class_Descriptor cd_S20749C8;
extern VTBL_ENTRY _ZTI8S20749C8[];
extern  VTBL_ENTRY _ZTV8S20749C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C8[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S20749C26;
extern VTBL_ENTRY _ZTI9S20749C26[];
extern  VTBL_ENTRY _ZTV9S20749C26[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C26[];
extern Class_Descriptor cd_S20749C21;
extern VTBL_ENTRY _ZTI9S20749C21[];
extern  VTBL_ENTRY _ZTV9S20749C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20749C21[];
extern Class_Descriptor cd_S19657C2_nt;
extern VTBL_ENTRY _ZTI11S19657C2_nt[];
static Base_Class bases_S20749C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20749C6,    ABISELECT(320,216), //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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20749C4,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20749C2,    ABISELECT(320,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20749C6,    ABISELECT(200,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(200,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
    8, //immediately_derived
  0, 0},
  {&cd_S20749C9,    ABISELECT(200,140), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20749C8,    ABISELECT(192,136), //bcp->offset
    30, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20749C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    21, //immediately_derived
  0, 0},
  {&cd_S10258C6_nt,    ABISELECT(288,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20749C12,    ABISELECT(328,220), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20749C11,    ABISELECT(320,216), //bcp->offset
    39, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20749C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20749C14,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20749C6,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20749C9,    ABISELECT(56,48), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20749C13,    ABISELECT(8,4), //bcp->offset
    22, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20749C7,    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
    46, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20749C6,    ABISELECT(1552,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1552,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20749C9,    ABISELECT(1552,1036), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20749C12,    ABISELECT(1640,1080), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2800,1840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(2800,1840), //bcp->offset
    95, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2808,1844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(2808,1844), //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
    11, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20749C19,    ABISELECT(2808,1844), //bcp->offset
    103, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20749C18,    ABISELECT(1640,1080), //bcp->offset
    85, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    32, //immediately_derived
  0, 1},
  {&cd_S20749C17,    ABISELECT(1552,1036), //bcp->offset
    74, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1496,984), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20749C6,    ABISELECT(1488,980), //bcp->offset
    -1, //bcp->virtual_function_table_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_S20749C14,    ABISELECT(1488,980), //bcp->offset
    -1, //bcp->virtual_function_table_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
    36, //immediately_derived
  0, 0},
  {&cd_S20749C20,    ABISELECT(1488,980), //bcp->offset
    -1, //bcp->virtual_function_table_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
    37, //immediately_derived
  0, 0},
  {&cd_S20749C16,    ABISELECT(1488,980), //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
    20, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20749C15,    ABISELECT(1488,980), //bcp->offset
    60, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20749C2,    ABISELECT(2816,1848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20749C23,    ABISELECT(2816,1848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20749C22,    ABISELECT(2816,1848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S20749C2,    ABISELECT(2856,1872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(2872,1880), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C6,    ABISELECT(2864,1876), //bcp->offset
    170, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20749C14,    ABISELECT(2864,1876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S20749C25,    ABISELECT(2856,1872), //bcp->offset
    156, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S20749C11,    ABISELECT(2832,1856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    94, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20749C24,    ABISELECT(2832,1856), //bcp->offset
    137, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S20749C12,    ABISELECT(2912,1920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    132, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(4072,2680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(4072,2680), //bcp->offset
    190, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(4080,2684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C4,    ABISELECT(4080,2684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S20749C19,    ABISELECT(4080,2684), //bcp->offset
    198, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20749C18,    ABISELECT(2912,1920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    131, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S20749C2,    ABISELECT(4088,2688), //bcp->offset
    206, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S20749C8,    ABISELECT(4096,2692), //bcp->offset
    218, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    146, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S4227C27,    ABISELECT(2912,1920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20749C26,    ABISELECT(2912,1920), //bcp->offset
    174, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    60, //immediately_derived
  0, 1},
  {&cd_S20749C21,    ABISELECT(2816,1848), //bcp->offset
    111, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19657C2_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20749C1[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C1D1Ev();
extern void _ZN8S20749C1D0Ev();
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C1D1Ev,_ZTv0_n24_N8S20749C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S20749C1D1Ev,_ZThn216_N8S20749C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C1D0Ev,_ZTv0_n24_N8S20749C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S20749C1D0Ev,_ZThn216_N8S20749C1D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S20749C1D1Ev,_ZTv0_n36_N8S20749C1D1Ev)();
extern void ABISELECT(_ZThn1488_N8S20749C1D1Ev,_ZThn980_N8S20749C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20749C1D0Ev,_ZTv0_n36_N8S20749C1D0Ev)();
extern void ABISELECT(_ZThn1488_N8S20749C1D0Ev,_ZThn980_N8S20749C1D0Ev)() __attribute__((weak));
extern void _ZN9S20749C152v4Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S20749C1D1Ev,_ZTv0_n32_N8S20749C1D1Ev)();
extern void ABISELECT(_ZThn1552_N8S20749C1D1Ev,_ZThn1036_N8S20749C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S20749C1D0Ev,_ZTv0_n32_N8S20749C1D0Ev)();
extern void ABISELECT(_ZThn1552_N8S20749C1D0Ev,_ZThn1036_N8S20749C1D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20749C1D1Ev,_ZTv0_n28_N8S20749C1D1Ev)();
extern void ABISELECT(_ZThn1640_N8S20749C1D1Ev,_ZThn1080_N8S20749C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20749C1D0Ev,_ZTv0_n28_N8S20749C1D0Ev)();
extern void ABISELECT(_ZThn1640_N8S20749C1D0Ev,_ZThn1080_N8S20749C1D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S20749C1D1Ev,_ZTvn760_n28_N8S20749C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S20749C1D0Ev,_ZTvn760_n28_N8S20749C1D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S20749C1D1Ev,_ZTvn764_n28_N8S20749C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S20749C1D0Ev,_ZTvn764_n28_N8S20749C1D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C1D1Ev,_ZTv0_n24_N8S20749C1D1Ev)();
extern void ABISELECT(_ZThn2816_N8S20749C1D1Ev,_ZThn1848_N8S20749C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C1D0Ev,_ZTv0_n24_N8S20749C1D0Ev)();
extern void ABISELECT(_ZThn2816_N8S20749C1D0Ev,_ZThn1848_N8S20749C1D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN9S20749C212v5Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C1D1Ev,_ZTv0_n24_N8S20749C1D1Ev)();
extern void ABISELECT(_ZThn2832_N8S20749C1D1Ev,_ZThn1856_N8S20749C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C1D0Ev,_ZTv0_n24_N8S20749C1D0Ev)();
extern void ABISELECT(_ZThn2832_N8S20749C1D0Ev,_ZThn1856_N8S20749C1D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN9S20749C242v3Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C1D1Ev,_ZTv0_n24_N8S20749C1D1Ev)();
extern void ABISELECT(_ZThn2856_N8S20749C1D1Ev,_ZThn1872_N8S20749C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C1D0Ev,_ZTv0_n24_N8S20749C1D0Ev)();
extern void ABISELECT(_ZThn2856_N8S20749C1D0Ev,_ZThn1872_N8S20749C1D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n96_N8S20749C1D1Ev,_ZTv0_n48_N8S20749C1D1Ev)();
extern void ABISELECT(_ZThn2912_N8S20749C1D1Ev,_ZThn1920_N8S20749C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20749C1D0Ev,_ZTv0_n48_N8S20749C1D0Ev)();
extern void ABISELECT(_ZThn2912_N8S20749C1D0Ev,_ZThn1920_N8S20749C1D0Ev)() __attribute__((weak));
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n96_N8S20749C1D1Ev,_ZTvn760_n48_N8S20749C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n96_N8S20749C1D0Ev,_ZTvn760_n48_N8S20749C1D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n96_N8S20749C1D1Ev,_ZTvn764_n48_N8S20749C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n96_N8S20749C1D0Ev,_ZTvn764_n48_N8S20749C1D0Ev)();
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C1D1Ev,_ZTv0_n24_N8S20749C1D1Ev)();
extern void ABISELECT(_ZThn4088_N8S20749C1D1Ev,_ZThn2688_N8S20749C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C1D0Ev,_ZTv0_n24_N8S20749C1D0Ev)();
extern void ABISELECT(_ZThn4088_N8S20749C1D0Ev,_ZThn2688_N8S20749C1D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY vtc_S20749C1[] = {
  ABISELECT(2912,1920),
  ABISELECT(2864,1876),
  ABISELECT(2856,1872),
  ABISELECT(2816,1848),
  ABISELECT(1640,1080),
  ABISELECT(1552,1036),
  ABISELECT(1488,980),
  ABISELECT(328,220),
  0,
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(288,184),
  ABISELECT(152,96),
  ABISELECT(200,140),
  ABISELECT(192,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C1D0Ev,
  ABISELECT(144,92),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  ABISELECT(96,48),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  -40,
  ABISELECT(8,4),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  0,
  ABISELECT(-48,-44),
  ABISELECT(-200,-140),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-320,-216),
  ABISELECT(-320,-216),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C1D1Ev,_ZTv0_n24_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C1D0Ev,_ZTv0_n24_N8S20749C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-328,-220),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  0,
  ABISELECT(-1488,-980),
  0,
  ABISELECT(-1488,-980),
  ABISELECT(152,100),
  ABISELECT(-1336,-884),
  ABISELECT(-1168,-764),
  ABISELECT(64,56),
  ABISELECT(-1488,-980),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20749C1D1Ev,_ZTv0_n36_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20749C1D0Ev,_ZTv0_n36_N8S20749C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20749C152v4Ev,
  ABISELECT(-1552,-1036),
  0,
  ABISELECT(-1552,-1036),
  ABISELECT(88,44),
  ABISELECT(-1232,-820),
  ABISELECT(-1400,-940),
  ABISELECT(-1552,-1036),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20749C1D1Ev,_ZTv0_n32_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S20749C1D0Ev,_ZTv0_n32_N8S20749C1D0Ev),
  ABISELECT(-1640,-1080),
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  ABISELECT(-1640,-1080),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20749C1D1Ev,_ZTv0_n28_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20749C1D0Ev,_ZTv0_n28_N8S20749C1D0Ev),
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(-2800,-1840),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20749C1D1Ev,_ZTvn760_n28_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S20749C1D0Ev,_ZTvn760_n28_N8S20749C1D0Ev),
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(-2808,-1844),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20749C1D1Ev,_ZTvn764_n28_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S20749C1D0Ev,_ZTvn764_n28_N8S20749C1D0Ev),
  ABISELECT(16,8),
  0,
  0,
  ABISELECT(-2616,-1708),
  ABISELECT(-1176,-768),
  ABISELECT(-1264,-812),
  ABISELECT(-1328,-868),
  ABISELECT(96,72),
  ABISELECT(-2488,-1628),
  ABISELECT(-2496,-1632),
  ABISELECT(-2528,-1664),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-2496,-1632),
  ABISELECT(-2816,-1848),
  ABISELECT(-2816,-1848),
  ABISELECT(-2496,-1632),
  ABISELECT(-2664,-1752),
  ABISELECT(-2496,-1632),
  ABISELECT(-2816,-1848),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C1D1Ev,_ZTv0_n24_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C1D0Ev,_ZTv0_n24_N8S20749C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20749C212v5Ev,
  ABISELECT(32,20),
  ABISELECT(24,16),
  ABISELECT(-2504,-1636),
  ABISELECT(-2512,-1640),
  ABISELECT(-2544,-1672),
  ABISELECT(-2512,-1640),
  ABISELECT(-2512,-1640),
  ABISELECT(-2832,-1856),
  ABISELECT(-2832,-1856),
  ABISELECT(-2512,-1640),
  ABISELECT(-2680,-1760),
  ABISELECT(-2512,-1640),
  ABISELECT(-2832,-1856),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C1D1Ev,_ZTv0_n24_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C1D0Ev,_ZTv0_n24_N8S20749C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20749C242v3Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-2536,-1656),
  ABISELECT(-2856,-1872),
  ABISELECT(-2856,-1872),
  ABISELECT(-2536,-1656),
  ABISELECT(-2704,-1776),
  ABISELECT(-2536,-1656),
  ABISELECT(-2856,-1872),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C1D1Ev,_ZTv0_n24_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C1D0Ev,_ZTv0_n24_N8S20749C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  0,
  ABISELECT(-2864,-1876),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  ABISELECT(1176,768),
  ABISELECT(-2912,-1920),
  ABISELECT(-2712,-1780),
  ABISELECT(-1272,-840),
  ABISELECT(-1360,-884),
  ABISELECT(-1424,-940),
  ABISELECT(-2592,-1704),
  ABISELECT(-2760,-1824),
  ABISELECT(-2912,-1920),
  ABISELECT(-2592,-1704),
  ABISELECT(-2592,-1704),
  ABISELECT(-2912,-1920),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20749C1D1Ev,_ZTv0_n48_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20749C1D0Ev,_ZTv0_n48_N8S20749C1D0Ev),
  ABISELECT(-3752,-2464),
  ABISELECT(-3920,-2584),
  ABISELECT(-3752,-2464),
  ABISELECT(-4072,-2680),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N8S20749C1D1Ev,_ZTvn760_n48_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N8S20749C1D0Ev,_ZTvn760_n48_N8S20749C1D0Ev),
  ABISELECT(-3760,-2468),
  ABISELECT(-3928,-2588),
  ABISELECT(-3760,-2468),
  ABISELECT(-4080,-2684),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N8S20749C1D1Ev,_ZTvn764_n48_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N8S20749C1D0Ev,_ZTvn764_n48_N8S20749C1D0Ev),
  ABISELECT(-3768,-2472),
  ABISELECT(-4088,-2688),
  ABISELECT(-4088,-2688),
  ABISELECT(-3768,-2472),
  ABISELECT(-3936,-2592),
  ABISELECT(-3768,-2472),
  ABISELECT(-4088,-2688),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C1D1Ev,_ZTv0_n24_N8S20749C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C1D0Ev,_ZTv0_n24_N8S20749C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  ABISELECT(-3944,-2596),
  ABISELECT(-3896,-2552),
  ABISELECT(-4096,-2692),
  (VTBL_ENTRY)&(_ZTI8S20749C1[0]),
};
extern VTBL_ENTRY _ZTV8S20749C1[];
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C7D1Ev();
extern void _ZN8S20749C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C7__8S20749C1[] = {
  ABISELECT(328,220),
  0,
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(320,216),
  ABISELECT(288,184),
  ABISELECT(152,96),
  ABISELECT(200,140),
  ABISELECT(192,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C7D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C138S20749C7__8S20749C1[] = {
  ABISELECT(144,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C13[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C99S20749C138S20749C7__A1__8S20749C1[] = {
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__9S20749C138S20749C7__8S20749C1[] = {
  ABISELECT(96,48),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S20749C13[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20749C8__8S20749C7__8S20749C1[] = {
  -40,
  ABISELECT(8,4),
  ABISELECT(-192,-136),
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__8S20749C7__8S20749C1[] = {
  0,
  ABISELECT(-48,-44),
  ABISELECT(-200,-140),
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C7D1Ev,_ZTv0_n24_N8S20749C7D1Ev)();
extern void ABISELECT(_ZThn320_N8S20749C7D1Ev,_ZThn216_N8S20749C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C7D0Ev,_ZTv0_n24_N8S20749C7D0Ev)();
extern void ABISELECT(_ZThn320_N8S20749C7D0Ev,_ZThn216_N8S20749C7D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C11__8S20749C7__8S20749C1[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-320,-216),
  ABISELECT(-320,-216),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C7D1Ev,_ZTv0_n24_N8S20749C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C7D0Ev,_ZTv0_n24_N8S20749C7D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__8S20749C7__8S20749C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-328,-220),
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C13__8S20749C7__8S20749C1[] = {
  ABISELECT(144,92),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C99S20749C13__A1__8S20749C7__8S20749C1[] = {
  ABISELECT(96,48),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20749C7[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__8S20749C1[] = {
  0,
  ABISELECT(-320,-216),
  0,
  0,
  ABISELECT(-168,-120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C4__8S20749C1[] = {
  0,
  ABISELECT(-168,-120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20749C8__8S20749C1[] = {
  -40,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C8[0]),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__8S20749C8__8S20749C1[] = {
  0,
  ABISELECT(-48,-44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20749C8[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__8S20749C1[] = {
  ABISELECT(-48,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev)();
extern void _ZN9S20749C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev)();
extern void _ZN9S20749C11D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C11__8S20749C1[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-320,-216),
  0,
  0,
  ABISELECT(-168,-120),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__9S20749C11__8S20749C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__8S20749C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C12__8S20749C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C15D1Ev();
extern void _ZN9S20749C15D0Ev();
extern void _ZN9S20749C152v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C15__8S20749C1[] = {
  ABISELECT(-1488,-980),
  ABISELECT(152,100),
  ABISELECT(-1336,-884),
  ABISELECT(-1168,-764),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C15D0Ev,
  (VTBL_ENTRY)&_ZN9S20749C152v4Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C16D1Ev();
extern void _ZN9S20749C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C169S20749C15__8S20749C1[] = {
  ABISELECT(-1488,-980),
  ABISELECT(152,100),
  ABISELECT(-1336,-884),
  ABISELECT(-1168,-764),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C16D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev)();
extern void ABISELECT(_ZThn64_N9S20749C16D1Ev,_ZThn56_N9S20749C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev)();
extern void ABISELECT(_ZThn64_N9S20749C16D0Ev,_ZThn56_N9S20749C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C169S20749C15__8S20749C1[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1552,-1036),
  ABISELECT(88,44),
  ABISELECT(-1232,-820),
  ABISELECT(-1400,-940),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C169S20749C15__8S20749C1[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZThn152_N9S20749C16D1Ev,_ZThn100_N9S20749C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev)();
extern void ABISELECT(_ZThn152_N9S20749C16D0Ev,_ZThn100_N9S20749C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C169S20749C15__8S20749C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C16D1Ev,_ZTvn760_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C16D0Ev,_ZTvn760_n28_N9S20749C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C169S20749C15__8S20749C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C16D1Ev,_ZTvn760_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C16D0Ev,_ZTvn760_n28_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C16D1Ev,_ZTvn764_n28_N9S20749C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C16D0Ev,_ZTvn764_n28_N9S20749C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C169S20749C15__8S20749C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S20749C16[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C16D1Ev,_ZTvn764_n28_N9S20749C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C16D0Ev,_ZTvn764_n28_N9S20749C16D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C15D1Ev,_ZTv0_n32_N9S20749C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S20749C15D1Ev,_ZThn56_N9S20749C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S20749C15D0Ev,_ZTv0_n32_N9S20749C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S20749C15D0Ev,_ZThn56_N9S20749C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C15__8S20749C1[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1552,-1036),
  ABISELECT(88,44),
  ABISELECT(-1232,-820),
  ABISELECT(-1400,-940),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C15D1Ev,_ZTv0_n32_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C15D0Ev,_ZTv0_n32_N9S20749C15D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C15__8S20749C1[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C15D1Ev,_ZTv0_n28_N9S20749C15D1Ev)();
extern void ABISELECT(_ZThn152_N9S20749C15D1Ev,_ZThn100_N9S20749C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C15D0Ev,_ZTv0_n28_N9S20749C15D0Ev)();
extern void ABISELECT(_ZThn152_N9S20749C15D0Ev,_ZThn100_N9S20749C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C15__8S20749C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C15D1Ev,_ZTv0_n28_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C15D0Ev,_ZTv0_n28_N9S20749C15D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C15D1Ev,_ZTvn760_n28_N9S20749C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C15D0Ev,_ZTvn760_n28_N9S20749C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C15__8S20749C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C15D1Ev,_ZTvn760_n28_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C15D0Ev,_ZTvn760_n28_N9S20749C15D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C15D1Ev,_ZTvn764_n28_N9S20749C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C15D0Ev,_ZTvn764_n28_N9S20749C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C15__8S20749C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S20749C15[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C15D1Ev,_ZTvn764_n28_N9S20749C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C15D0Ev,_ZTvn764_n28_N9S20749C15D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C17D1Ev();
extern void _ZN9S20749C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C17__8S20749C1[] = {
  ABISELECT(-1552,-1036),
  ABISELECT(88,44),
  ABISELECT(-1232,-820),
  ABISELECT(-1400,-940),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C17D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C99S20749C17__A2__8S20749C1[] = {
  ABISELECT(-1400,-940),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C9[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C17__8S20749C1[] = {
  0,
  ABISELECT(1232,820),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZThn88_N9S20749C17D1Ev,_ZThn44_N9S20749C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev)();
extern void ABISELECT(_ZThn88_N9S20749C17D0Ev,_ZThn44_N9S20749C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C18__9S20749C17__8S20749C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C17D1Ev,_ZTvn760_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C17D0Ev,_ZTvn760_n28_N9S20749C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C17__8S20749C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C17D1Ev,_ZTvn760_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C17D0Ev,_ZTvn760_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C17D1Ev,_ZTvn764_n28_N9S20749C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C17D0Ev,_ZTvn764_n28_N9S20749C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C17__8S20749C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(-1256,-808),
  (VTBL_ENTRY)&(_ZTI9S20749C17[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C17D1Ev,_ZTvn764_n28_N9S20749C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C17D0Ev,_ZTvn764_n28_N9S20749C17D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C18D1Ev();
extern void _ZN9S20749C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C18__8S20749C1[] = {
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C129S20749C18__A1__8S20749C1[] = {
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C129S20749C18__A1__8S20749C1[] = {
  0,
  ABISELECT(1320,864),
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__A1__8S20749C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C18__A1__8S20749C1[] = {
  0,
  ABISELECT(2480,1624),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C19D1Ev();
extern void _ZN9S20749C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__8S20749C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C199S20749C18__A2__8S20749C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A2__8S20749C1[] = {
  0,
  ABISELECT(2488,1628),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C199S20749C18__8S20749C1[] = {
  0,
  ABISELECT(2488,1628),
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C18__8S20749C1[] = {
  0,
  ABISELECT(1320,864),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C18__8S20749C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C19__9S20749C18__8S20749C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev)();
extern void _ZN9S20749C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev)();
extern void _ZN9S20749C21D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN9S20749C212v5Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C21__8S20749C1[] = {
  ABISELECT(-2616,-1708),
  ABISELECT(-1176,-768),
  ABISELECT(-1264,-812),
  ABISELECT(-1328,-868),
  ABISELECT(96,72),
  ABISELECT(-2488,-1628),
  ABISELECT(-2496,-1632),
  ABISELECT(-2528,-1664),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-2496,-1632),
  ABISELECT(-2816,-1848),
  0,
  ABISELECT(-2496,-1632),
  ABISELECT(-2664,-1752),
  ABISELECT(-2496,-1632),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20749C212v5Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C22D1Ev,_ZTv0_n24_N9S20749C22D1Ev)();
extern void _ZN9S20749C22D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C22D0Ev,_ZTv0_n24_N9S20749C22D0Ev)();
extern void _ZN9S20749C22D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C229S20749C21__8S20749C1[] = {
  ABISELECT(-2496,-1632),
  ABISELECT(-2816,-1848),
  0,
  ABISELECT(-2496,-1632),
  ABISELECT(-2664,-1752),
  ABISELECT(-2496,-1632),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C22[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C22D1Ev,_ZTv0_n24_N9S20749C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C22D0Ev,_ZTv0_n24_N9S20749C22D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C23D1Ev,_ZTv0_n24_N9S20749C23D1Ev)();
extern void _ZN9S20749C23D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C23D0Ev,_ZTv0_n24_N9S20749C23D0Ev)();
extern void _ZN9S20749C23D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C239S20749C229S20749C21__8S20749C1[] = {
  ABISELECT(-2496,-1632),
  ABISELECT(-2816,-1848),
  0,
  ABISELECT(-2496,-1632),
  ABISELECT(-2664,-1752),
  ABISELECT(-2496,-1632),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C23[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C23D1Ev,_ZTv0_n24_N9S20749C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C23D0Ev,_ZTv0_n24_N9S20749C23D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C29S20749C239S20749C229S20749C21__A1__8S20749C1[] = {
  ABISELECT(-2496,-1632),
  ABISELECT(-2816,-1848),
  0,
  ABISELECT(-2496,-1632),
  ABISELECT(-2664,-1752),
  ABISELECT(-2496,-1632),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__8S20749C29S20749C239S20749C229S20749C21__A1__8S20749C1[] = {
  ABISELECT(2496,1632),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2496,1632),
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C23D1Ev,_ZTv0_n24_N9S20749C23D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20749C23D0Ev,_ZTv0_n24_N9S20749C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C239S20749C229S20749C21__8S20749C1[] = {
  ABISELECT(2496,1632),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2496,1632),
  (VTBL_ENTRY)&(_ZTI9S20749C23[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C23D1Ev,_ZTv0_n24_N9S20749C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C23D0Ev,_ZTv0_n24_N9S20749C23D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C22D1Ev,_ZTv0_n24_N9S20749C22D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20749C22D0Ev,_ZTv0_n24_N9S20749C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C229S20749C21__8S20749C1[] = {
  ABISELECT(2496,1632),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2496,1632),
  (VTBL_ENTRY)&(_ZTI9S20749C22[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C22D1Ev,_ZTv0_n24_N9S20749C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C22D0Ev,_ZTv0_n24_N9S20749C22D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev)();
extern void _ZN9S20749C24D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev)();
extern void _ZN9S20749C24D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN9S20749C242v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C249S20749C21__8S20749C1[] = {
  ABISELECT(32,20),
  ABISELECT(24,16),
  ABISELECT(-2504,-1636),
  ABISELECT(-2512,-1640),
  ABISELECT(-2544,-1672),
  ABISELECT(-2512,-1640),
  ABISELECT(-2512,-1640),
  ABISELECT(-2832,-1856),
  0,
  ABISELECT(-2512,-1640),
  ABISELECT(-2680,-1760),
  ABISELECT(-2512,-1640),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20749C242v3Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev)();
extern void _ZN9S20749C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev)();
extern void _ZN9S20749C11D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C119S20749C249S20749C21__A1__8S20749C1[] = {
  ABISELECT(-2504,-1636),
  ABISELECT(-2512,-1640),
  ABISELECT(-2544,-1672),
  ABISELECT(-2512,-1640),
  ABISELECT(-2512,-1640),
  ABISELECT(-2832,-1856),
  0,
  ABISELECT(-2512,-1640),
  ABISELECT(-2680,-1760),
  ABISELECT(-2512,-1640),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev)();
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__9S20749C119S20749C249S20749C21__A1__8S20749C1[] = {
  0,
  0,
  ABISELECT(-320,-216),
  ABISELECT(2512,1640),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2512,1640),
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__9S20749C119S20749C249S20749C21__A1__8S20749C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(2504,1636),
  (VTBL_ENTRY)&(_ZTI9S20749C11[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev)();
extern void ABISELECT(_ZThn24_N9S20749C24D1Ev,_ZThn16_N9S20749C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev)();
extern void ABISELECT(_ZThn24_N9S20749C24D0Ev,_ZThn16_N9S20749C24D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C25__9S20749C249S20749C21__8S20749C1[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-2536,-1656),
  ABISELECT(-2856,-1872),
  ABISELECT(-24,-16),
  ABISELECT(-2536,-1656),
  ABISELECT(-2704,-1776),
  ABISELECT(-2536,-1656),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev)();
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__A1__9S20749C249S20749C21__8S20749C1[] = {
  0,
  0,
  ABISELECT(-320,-216),
  ABISELECT(2512,1640),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2512,1640),
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C69S20749C14__A1__9S20749C249S20749C21__8S20749C1[] = {
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__9S20749C249S20749C21__8S20749C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(2504,1636),
  (VTBL_ENTRY)&(_ZTI9S20749C24[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev)();
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__A2__9S20749C21__8S20749C1[] = {
  0,
  0,
  ABISELECT(-320,-216),
  ABISELECT(2496,1632),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2496,1632),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20749C21D1Ev,_ZThn8_N9S20749C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20749C21D0Ev,_ZThn8_N9S20749C21D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
extern void _ZN9S20749C242v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C24__9S20749C21__8S20749C1[] = {
  ABISELECT(32,20),
  ABISELECT(24,16),
  ABISELECT(-2504,-1636),
  ABISELECT(-2512,-1640),
  ABISELECT(-2544,-1672),
  ABISELECT(-2512,-1640),
  ABISELECT(-2512,-1640),
  ABISELECT(-2832,-1856),
  ABISELECT(-16,-8),
  ABISELECT(-2512,-1640),
  ABISELECT(-2680,-1760),
  ABISELECT(-2512,-1640),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
  (VTBL_ENTRY)&_ZN9S20749C242v3Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev)();
extern void ABISELECT(_ZThn40_N9S20749C21D1Ev,_ZThn24_N9S20749C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev)();
extern void ABISELECT(_ZThn40_N9S20749C21D0Ev,_ZThn24_N9S20749C21D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C25__9S20749C21__8S20749C1[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-2536,-1656),
  ABISELECT(-2856,-1872),
  ABISELECT(-40,-24),
  ABISELECT(-2536,-1656),
  ABISELECT(-2704,-1776),
  ABISELECT(-2536,-1656),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C69S20749C14__A1__9S20749C21__8S20749C1[] = {
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C12__9S20749C21__8S20749C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(2488,1628),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n96_N9S20749C21D1Ev,_ZTv0_n48_N9S20749C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20749C21D1Ev,_ZThn72_N9S20749C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20749C21D0Ev,_ZTv0_n48_N9S20749C21D0Ev)();
extern void ABISELECT(_ZThn96_N9S20749C21D0Ev,_ZThn72_N9S20749C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20749C26__9S20749C21__8S20749C1[] = {
  ABISELECT(1176,768),
  ABISELECT(-96,-72),
  ABISELECT(-2712,-1780),
  ABISELECT(-1272,-840),
  ABISELECT(-1360,-884),
  ABISELECT(-1424,-940),
  ABISELECT(-2592,-1704),
  ABISELECT(-2760,-1824),
  ABISELECT(-2912,-1920),
  ABISELECT(-2592,-1704),
  ABISELECT(-2592,-1704),
  ABISELECT(-96,-72),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20749C21D1Ev,_ZTv0_n48_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20749C21D0Ev,_ZTv0_n48_N9S20749C21D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n96_N9S20749C21D1Ev,_ZTvn760_n48_N9S20749C21D1Ev)();
extern void ABISELECT(_ZTvn1160_n96_N9S20749C21D0Ev,_ZTvn760_n48_N9S20749C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C189S20749C26__A1__9S20749C21__8S20749C1[] = {
  ABISELECT(-3752,-2464),
  ABISELECT(-3920,-2584),
  ABISELECT(-3752,-2464),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N9S20749C21D1Ev,_ZTvn760_n48_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N9S20749C21D0Ev,_ZTvn760_n48_N9S20749C21D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n96_N9S20749C21D1Ev,_ZTvn764_n48_N9S20749C21D1Ev)();
extern void ABISELECT(_ZTvn1168_n96_N9S20749C21D0Ev,_ZTvn764_n48_N9S20749C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C189S20749C26__9S20749C21__8S20749C1[] = {
  ABISELECT(-3760,-2468),
  ABISELECT(-3928,-2588),
  ABISELECT(-3760,-2468),
  ABISELECT(-1264,-836),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N9S20749C21D1Ev,_ZTvn764_n48_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N9S20749C21D0Ev,_ZTvn764_n48_N9S20749C21D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev)();
extern void ABISELECT(_ZThn1272_N9S20749C21D1Ev,_ZThn840_N9S20749C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev)();
extern void ABISELECT(_ZThn1272_N9S20749C21D0Ev,_ZThn840_N9S20749C21D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C29S20749C26__A3__9S20749C21__8S20749C1[] = {
  ABISELECT(-3768,-2472),
  ABISELECT(-4088,-2688),
  ABISELECT(-1272,-840),
  ABISELECT(-3768,-2472),
  ABISELECT(-3936,-2592),
  ABISELECT(-3768,-2472),
  ABISELECT(-1272,-840),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S20749C21D1Ev,_ZTv0_n36_N9S20749C21D1Ev)();
extern void ABISELECT(_ZTv0_n72_N9S20749C21D0Ev,_ZTv0_n36_N9S20749C21D0Ev)();
extern void _ZN9S20749C152v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C15__9S20749C21__8S20749C1[] = {
  0,
  ABISELECT(1328,868),
  0,
  ABISELECT(-1488,-980),
  ABISELECT(152,100),
  ABISELECT(-1336,-884),
  ABISELECT(-1168,-764),
  ABISELECT(64,56),
  ABISELECT(1328,868),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20749C21D1Ev,_ZTv0_n36_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20749C21D0Ev,_ZTv0_n36_N9S20749C21D0Ev),
  (VTBL_ENTRY)&_ZN9S20749C152v4Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C21D1Ev,_ZTv0_n32_N9S20749C21D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S20749C21D0Ev,_ZTv0_n32_N9S20749C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C21__8S20749C1[] = {
  ABISELECT(1264,812),
  0,
  ABISELECT(-1552,-1036),
  ABISELECT(88,44),
  ABISELECT(-1232,-820),
  ABISELECT(-1400,-940),
  ABISELECT(1264,812),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C21D1Ev,_ZTv0_n32_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C21D0Ev,_ZTv0_n32_N9S20749C21D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C21D1Ev,_ZTv0_n28_N9S20749C21D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20749C21D0Ev,_ZTv0_n28_N9S20749C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C18__A1__9S20749C21__8S20749C1[] = {
  ABISELECT(1176,768),
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C21D1Ev,_ZTv0_n28_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C21D0Ev,_ZTv0_n28_N9S20749C21D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C21D1Ev,_ZTvn760_n28_N9S20749C21D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C21D0Ev,_ZTvn760_n28_N9S20749C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__A3__9S20749C21__8S20749C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C21D1Ev,_ZTvn760_n28_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C21D0Ev,_ZTvn760_n28_N9S20749C21D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C21D1Ev,_ZTvn764_n28_N9S20749C21D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C21D0Ev,_ZTvn764_n28_N9S20749C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__A1__9S20749C21__8S20749C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C21D1Ev,_ZTvn764_n28_N9S20749C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C21D0Ev,_ZTvn764_n28_N9S20749C21D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20749C89S20749C26__9S20749C21__8S20749C1[] = {
  ABISELECT(-3944,-2596),
  ABISELECT(-3896,-2552),
  ABISELECT(-1280,-844),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__A1__9S20749C21__8S20749C1[] = {
  0,
  ABISELECT(-48,-44),
  ABISELECT(2616,1708),
  (VTBL_ENTRY)&(_ZTI9S20749C21[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev)();
extern void _ZN9S20749C25D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev)();
extern void _ZN9S20749C25D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C25__8S20749C1[] = {
  ABISELECT(8,4),
  ABISELECT(-2536,-1656),
  ABISELECT(-2856,-1872),
  0,
  ABISELECT(-2536,-1656),
  ABISELECT(-2704,-1776),
  ABISELECT(-2536,-1656),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C25[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C29S20749C25__A2__8S20749C1[] = {
  ABISELECT(-2536,-1656),
  ABISELECT(-2856,-1872),
  0,
  ABISELECT(-2536,-1656),
  ABISELECT(-2704,-1776),
  ABISELECT(-2536,-1656),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__8S20749C29S20749C25__A2__8S20749C1[] = {
  ABISELECT(2536,1656),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2536,1656),
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C25__8S20749C1[] = {
  ABISELECT(2536,1656),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2536,1656),
  (VTBL_ENTRY)&(_ZTI9S20749C25[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C69S20749C14__A1__9S20749C25__8S20749C1[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20749C25[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C26D1Ev();
extern void _ZN9S20749C26D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C26__8S20749C1[] = {
  ABISELECT(-2712,-1780),
  ABISELECT(-1272,-840),
  ABISELECT(-1360,-884),
  ABISELECT(-1424,-940),
  ABISELECT(-2592,-1704),
  ABISELECT(-2760,-1824),
  ABISELECT(-2912,-1920),
  ABISELECT(-2592,-1704),
  ABISELECT(-2592,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C26D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C26D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C18D1Ev();
extern void _ZN9S20749C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C189S20749C26__A1__8S20749C1[] = {
  ABISELECT(-2760,-1824),
  ABISELECT(-2912,-1920),
  ABISELECT(-2592,-1704),
  ABISELECT(-2592,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C18D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C129S20749C189S20749C26__A2__8S20749C1[] = {
  ABISELECT(-2592,-1704),
  ABISELECT(-2592,-1704),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C129S20749C189S20749C26__A2__8S20749C1[] = {
  0,
  ABISELECT(2592,1704),
  (VTBL_ENTRY)&(_ZTI9S20749C12[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C189S20749C26__A3__8S20749C1[] = {
  ABISELECT(-3752,-2464),
  ABISELECT(-3920,-2584),
  ABISELECT(-3752,-2464),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C189S20749C26__A3__8S20749C1[] = {
  0,
  ABISELECT(3752,2464),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN9S20749C19D1Ev();
extern void _ZN9S20749C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C189S20749C26__A1__8S20749C1[] = {
  ABISELECT(-3760,-2468),
  ABISELECT(-3928,-2588),
  ABISELECT(-3760,-2468),
  0,
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20749C19D0Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void _ZN8S20749C4D1Ev();
extern void _ZN8S20749C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C199S20749C189S20749C26__A4__8S20749C1[] = {
  ABISELECT(-3760,-2468),
  ABISELECT(-3928,-2588),
  ABISELECT(-3760,-2468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20749C4D0Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__8S20749C49S20749C199S20749C189S20749C26__A4__8S20749C1[] = {
  0,
  ABISELECT(3760,2468),
  (VTBL_ENTRY)&(_ZTI8S20749C4[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C199S20749C189S20749C26__A1__8S20749C1[] = {
  0,
  ABISELECT(3760,2468),
  (VTBL_ENTRY)&(_ZTI9S20749C19[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C6__9S20749C189S20749C26__A1__8S20749C1[] = {
  0,
  ABISELECT(2592,1704),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__9S20749C189S20749C26__A1__8S20749C1[] = {
  ABISELECT(-3752,-2464),
  ABISELECT(-3920,-2584),
  ABISELECT(-3752,-2464),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D1Ev,_ZThn760_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C18D0Ev,_ZThn760_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C19__9S20749C189S20749C26__A1__8S20749C1[] = {
  ABISELECT(-3760,-2468),
  ABISELECT(-3928,-2588),
  ABISELECT(-3760,-2468),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C18[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D1Ev,_ZThn764_N9S20749C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C18D0Ev,_ZThn764_N9S20749C18D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void _ZN8S20749C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
extern void _ZN8S20749C2D0Ev() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C29S20749C26__A3__8S20749C1[] = {
  ABISELECT(-3768,-2472),
  ABISELECT(-4088,-2688),
  0,
  ABISELECT(-3768,-2472),
  ABISELECT(-3936,-2592),
  ABISELECT(-3768,-2472),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__8S20749C29S20749C26__A3__8S20749C1[] = {
  ABISELECT(3768,2472),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(3768,2472),
  (VTBL_ENTRY)&(_ZTI8S20749C2[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20749C89S20749C26__A1__8S20749C1[] = {
  ABISELECT(-3944,-2596),
  ABISELECT(-3896,-2552),
  0,
  (VTBL_ENTRY)&(_ZTI8S20749C8[0]),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__8S20749C89S20749C26__A1__8S20749C1[] = {
  0,
  ABISELECT(-48,-44),
  ABISELECT(3896,2552),
  (VTBL_ENTRY)&(_ZTI8S20749C8[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C4__A2__9S20749C26__8S20749C1[] = {
  ABISELECT(2592,1704),
  0,
  ABISELECT(-168,-120),
  0,
  ABISELECT(2592,1704),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1160_N9S20749C26D1Ev,_ZThn760_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1160_N9S20749C26D0Ev,_ZThn760_N9S20749C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__9S20749C26__8S20749C1[] = {
  ABISELECT(-3752,-2464),
  ABISELECT(-3920,-2584),
  ABISELECT(-3752,-2464),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C26D1Ev,_ZThn760_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S20749C26D0Ev,_ZThn760_N9S20749C26D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZThn1168_N9S20749C26D1Ev,_ZThn764_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1168_N9S20749C26D0Ev,_ZThn764_N9S20749C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__9S20749C26__8S20749C1[] = {
  ABISELECT(-3760,-2468),
  ABISELECT(-3928,-2588),
  ABISELECT(-3760,-2468),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C26D1Ev,_ZThn764_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S20749C26D0Ev,_ZThn764_N9S20749C26D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev)();
extern void ABISELECT(_ZThn1176_N9S20749C26D1Ev,_ZThn768_N9S20749C26D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev)();
extern void ABISELECT(_ZThn1176_N9S20749C26D0Ev,_ZThn768_N9S20749C26D0Ev)() __attribute__((weak));
extern void _ZN8S20749C22v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C2__9S20749C26__8S20749C1[] = {
  ABISELECT(-3768,-2472),
  ABISELECT(-4088,-2688),
  ABISELECT(-1176,-768),
  ABISELECT(-3768,-2472),
  ABISELECT(-3936,-2592),
  ABISELECT(-3768,-2472),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev),
  (VTBL_ENTRY)&_ZN8S20749C22v2Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S20749C26D1Ev,_ZTv0_n36_N9S20749C26D1Ev)();
extern void ABISELECT(_ZTv0_n72_N9S20749C26D0Ev,_ZTv0_n36_N9S20749C26D0Ev)();
extern void _ZN9S20749C152v4Ev();
static  VTBL_ENTRY _tg__ZTV9S20749C15__9S20749C26__8S20749C1[] = {
  0,
  ABISELECT(1424,940),
  0,
  ABISELECT(-1488,-980),
  ABISELECT(152,100),
  ABISELECT(-1336,-884),
  ABISELECT(-1168,-764),
  ABISELECT(64,56),
  ABISELECT(1424,940),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20749C26D1Ev,_ZTv0_n36_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S20749C26D0Ev,_ZTv0_n36_N9S20749C26D0Ev),
  (VTBL_ENTRY)&_ZN9S20749C152v4Ev,
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S20749C26D1Ev,_ZTv0_n32_N9S20749C26D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S20749C26D0Ev,_ZTv0_n32_N9S20749C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C17__9S20749C26__8S20749C1[] = {
  ABISELECT(1360,884),
  0,
  ABISELECT(-1552,-1036),
  ABISELECT(88,44),
  ABISELECT(-1232,-820),
  ABISELECT(-1400,-940),
  ABISELECT(1360,884),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C26D1Ev,_ZTv0_n32_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S20749C26D0Ev,_ZTv0_n32_N9S20749C26D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20749C26D1Ev,_ZTv0_n28_N9S20749C26D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20749C26D0Ev,_ZTv0_n28_N9S20749C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C18__A1__9S20749C26__8S20749C1[] = {
  ABISELECT(1272,840),
  ABISELECT(-1488,-984),
  ABISELECT(-1640,-1080),
  ABISELECT(-1320,-864),
  ABISELECT(-1320,-864),
  ABISELECT(1272,840),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C26D1Ev,_ZTv0_n28_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20749C26D0Ev,_ZTv0_n28_N9S20749C26D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C26D1Ev,_ZTvn760_n28_N9S20749C26D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S20749C26D0Ev,_ZTvn760_n28_N9S20749C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20749C49S20749C18__A3__9S20749C26__8S20749C1[] = {
  ABISELECT(-2480,-1624),
  ABISELECT(-2648,-1744),
  ABISELECT(-2480,-1624),
  ABISELECT(112,80),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C26D1Ev,_ZTvn760_n28_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S20749C26D0Ev,_ZTvn760_n28_N9S20749C26D0Ev),
};
extern void _ZN8S20749C62v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C26D1Ev,_ZTvn764_n28_N9S20749C26D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S20749C26D0Ev,_ZTvn764_n28_N9S20749C26D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20749C199S20749C18__A1__9S20749C26__8S20749C1[] = {
  ABISELECT(-2488,-1628),
  ABISELECT(-2656,-1748),
  ABISELECT(-2488,-1628),
  ABISELECT(104,76),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C26D1Ev,_ZTvn764_n28_N9S20749C26D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S20749C26D0Ev,_ZTvn764_n28_N9S20749C26D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20749C8__9S20749C26__8S20749C1[] = {
  ABISELECT(-3944,-2596),
  ABISELECT(-3896,-2552),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
};
extern void _ZN8S20749C62v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20749C9__A1__9S20749C26__8S20749C1[] = {
  0,
  ABISELECT(-48,-44),
  ABISELECT(2712,1780),
  (VTBL_ENTRY)&(_ZTI9S20749C26[0]),
  (VTBL_ENTRY)&_ZN8S20749C62v1Ev,
};
static  VTT_ENTRY vtt_S20749C1[] = {
  {&(_ZTV8S20749C1[19]),  19,222},
  {&(_tg__ZTV8S20749C7__8S20749C1[12]),  12,15},
  {&(_tg__ZTV9S20749C138S20749C7__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C99S20749C138S20749C7__A1__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C9__9S20749C138S20749C7__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C8__8S20749C7__8S20749C1[4]),  4,4},
  {&(_tg__ZTV8S20749C9__8S20749C7__8S20749C1[4]),  4,5},
  {&(_tg__ZTV9S20749C11__8S20749C7__8S20749C1[12]),  12,16},
  {&(_tg__ZTV9S20749C11__8S20749C7__8S20749C1[12]),  12,16},
  {&(_tg__ZTV9S20749C11__8S20749C7__8S20749C1[12]),  12,16},
  {&(_tg__ZTV9S20749C11__8S20749C7__8S20749C1[12]),  12,16},
  {&(_tg__ZTV9S20749C12__8S20749C7__8S20749C1[4]),  4,5},
  {&(_tg__ZTV9S20749C13__8S20749C7__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C99S20749C13__A1__8S20749C7__8S20749C1[3]),  3,4},
  {&(_ZTV8S20749C1[51]),  51,222},
  {&(_ZTV8S20749C1[51]),  51,222},
  {&(_ZTV8S20749C1[51]),  51,222},
  {&(_ZTV8S20749C1[34]),  34,222},
  {&(_ZTV8S20749C1[38]),  38,222},
  {&(_ZTV8S20749C1[51]),  51,222},
  {&(_ZTV8S20749C1[59]),  59,222},
  {&(_ZTV8S20749C1[25]),  25,222},
  {&(_ZTV8S20749C1[29]),  29,222},
  {&(_ZTV8S20749C1[70]),  70,222},
  {&(_ZTV8S20749C1[82]),  82,222},
  {&(_ZTV8S20749C1[92]),  92,222},
  {&(_ZTV8S20749C1[100]),  100,222},
  {&(_ZTV8S20749C1[108]),  108,222},
  {&(_ZTV8S20749C1[132]),  132,222},
  {&(_ZTV8S20749C1[151]),  151,222},
  {&(_ZTV8S20749C1[166]),  166,222},
  {&(_ZTV8S20749C1[173]),  173,222},
  {&(_ZTV8S20749C1[187]),  187,222},
  {&(_ZTV8S20749C1[195]),  195,222},
  {&(_ZTV8S20749C1[203]),  203,222},
  {&(_ZTV8S20749C1[214]),  214,222},
  {&(_ZTV8S20749C1[222]),  222,222},
  {&(_tg__ZTV8S20749C2__8S20749C1[8]),  8,12},
  {&(_tg__ZTV8S20749C2__8S20749C1[8]),  8,12},
  {&(_tg__ZTV8S20749C2__8S20749C1[8]),  8,12},
  {&(_tg__ZTV8S20749C4__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C4__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C8__8S20749C1[4]),  4,4},
  {&(_tg__ZTV8S20749C9__8S20749C8__8S20749C1[4]),  4,5},
  {&(_tg__ZTV8S20749C9__8S20749C1[3]),  3,4},
  {&(_tg__ZTV9S20749C11__8S20749C1[12]),  12,16},
  {&(_tg__ZTV9S20749C11__8S20749C1[12]),  12,16},
  {&(_tg__ZTV9S20749C11__8S20749C1[12]),  12,16},
  {&(_tg__ZTV9S20749C11__8S20749C1[12]),  12,16},
  {&(_tg__ZTV9S20749C12__9S20749C11__8S20749C1[4]),  4,5},
  {&(_tg__ZTV9S20749C12__8S20749C1[4]),  4,5},
  {&(_tg__ZTV8S20749C6__9S20749C12__8S20749C1[3]),  3,4},
  {&(_tg__ZTV9S20749C15__8S20749C1[7]),  7,11},
  {&(_tg__ZTV9S20749C169S20749C15__8S20749C1[7]),  7,10},
  {&(_tg__ZTV9S20749C17__9S20749C169S20749C15__8S20749C1[8]),  8,11},
  {&(_tg__ZTV8S20749C6__9S20749C169S20749C15__8S20749C1[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C169S20749C15__8S20749C1[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C169S20749C15__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C169S20749C15__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C17__9S20749C15__8S20749C1[8]),  8,11},
  {&(_tg__ZTV8S20749C6__9S20749C15__8S20749C1[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C15__8S20749C1[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C15__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C15__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C17__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C99S20749C17__A2__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C17__8S20749C1[3]),  3,4},
  {&(_tg__ZTV9S20749C18__9S20749C17__8S20749C1[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C17__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C17__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C18__8S20749C1[6]),  6,9},
  {&(_tg__ZTV9S20749C129S20749C18__A1__8S20749C1[4]),  4,5},
  {&(_tg__ZTV8S20749C6__9S20749C129S20749C18__A1__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C49S20749C18__A1__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C18__A1__8S20749C1[3]),  3,4},
  {&(_tg__ZTV9S20749C199S20749C18__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C49S20749C199S20749C18__A2__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C199S20749C18__A2__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C199S20749C18__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C18__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C4__9S20749C18__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C19__9S20749C18__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C21__8S20749C1[18]),  18,23},
  {&(_tg__ZTV9S20749C229S20749C21__8S20749C1[8]),  8,12},
  {&(_tg__ZTV9S20749C239S20749C229S20749C21__8S20749C1[8]),  8,12},
  {&(_tg__ZTV8S20749C29S20749C239S20749C229S20749C21__A1__8S20749C1[8]),  8,12},
  {&(_tg__ZTV8S20749C4__8S20749C29S20749C239S20749C229S20749C21__A1__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C4__8S20749C29S20749C239S20749C229S20749C21__A1__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C239S20749C229S20749C21__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C239S20749C229S20749C21__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C229S20749C21__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C229S20749C21__8S20749C1[6]),  6,9},
  {&(_tg__ZTV9S20749C249S20749C21__8S20749C1[14]),  14,19},
  {&(_tg__ZTV9S20749C119S20749C249S20749C21__A1__8S20749C1[12]),  12,16},
  {&(_tg__ZTV8S20749C2__9S20749C119S20749C249S20749C21__A1__8S20749C1[9]),  9,13},
  {&(_tg__ZTV8S20749C2__9S20749C119S20749C249S20749C21__A1__8S20749C1[9]),  9,13},
  {&(_tg__ZTV8S20749C2__9S20749C119S20749C249S20749C21__A1__8S20749C1[9]),  9,13},
  {&(_tg__ZTV9S20749C12__9S20749C119S20749C249S20749C21__A1__8S20749C1[4]),  4,5},
  {&(_tg__ZTV9S20749C25__9S20749C249S20749C21__8S20749C1[10]),  10,14},
  {&(_tg__ZTV8S20749C2__A1__9S20749C249S20749C21__8S20749C1[9]),  9,13},
  {&(_tg__ZTV8S20749C2__A1__9S20749C249S20749C21__8S20749C1[9]),  9,13},
  {&(_tg__ZTV8S20749C69S20749C14__A1__9S20749C249S20749C21__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C2__A1__9S20749C249S20749C21__8S20749C1[9]),  9,13},
  {&(_tg__ZTV9S20749C12__9S20749C249S20749C21__8S20749C1[4]),  4,5},
  {&(_tg__ZTV8S20749C2__A2__9S20749C21__8S20749C1[9]),  9,13},
  {&(_tg__ZTV8S20749C2__A2__9S20749C21__8S20749C1[9]),  9,13},
  {&(_tg__ZTV9S20749C24__9S20749C21__8S20749C1[14]),  14,19},
  {&(_tg__ZTV9S20749C25__9S20749C21__8S20749C1[10]),  10,14},
  {&(_tg__ZTV8S20749C69S20749C14__A1__9S20749C21__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C2__A2__9S20749C21__8S20749C1[9]),  9,13},
  {&(_tg__ZTV9S20749C12__9S20749C21__8S20749C1[4]),  4,5},
  {&(_tg__ZTV9S20749C26__9S20749C21__8S20749C1[13]),  13,16},
  {&(_tg__ZTV8S20749C49S20749C189S20749C26__A1__9S20749C21__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C189S20749C26__9S20749C21__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C29S20749C26__A3__9S20749C21__8S20749C1[8]),  8,12},
  {&(_tg__ZTV9S20749C15__9S20749C21__8S20749C1[10]),  10,14},
  {&(_tg__ZTV9S20749C17__9S20749C21__8S20749C1[8]),  8,11},
  {&(_tg__ZTV9S20749C18__A1__9S20749C21__8S20749C1[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__A3__9S20749C21__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__A1__9S20749C21__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C89S20749C26__9S20749C21__8S20749C1[4]),  4,4},
  {&(_tg__ZTV8S20749C9__A1__9S20749C21__8S20749C1[4]),  4,5},
  {&(_tg__ZTV9S20749C25__8S20749C1[9]),  9,13},
  {&(_tg__ZTV8S20749C29S20749C25__A2__8S20749C1[8]),  8,12},
  {&(_tg__ZTV8S20749C4__8S20749C29S20749C25__A2__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C4__8S20749C29S20749C25__A2__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C25__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C4__9S20749C25__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C69S20749C14__A1__9S20749C25__8S20749C1[3]),  3,4},
  {&(_tg__ZTV9S20749C26__8S20749C1[11]),  11,14},
  {&(_tg__ZTV9S20749C189S20749C26__A1__8S20749C1[6]),  6,9},
  {&(_tg__ZTV9S20749C129S20749C189S20749C26__A2__8S20749C1[4]),  4,5},
  {&(_tg__ZTV8S20749C6__9S20749C129S20749C189S20749C26__A2__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C49S20749C189S20749C26__A3__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C189S20749C26__A3__8S20749C1[3]),  3,4},
  {&(_tg__ZTV9S20749C199S20749C189S20749C26__A1__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C49S20749C199S20749C189S20749C26__A4__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C6__8S20749C49S20749C199S20749C189S20749C26__A4__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C199S20749C189S20749C26__A1__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C6__9S20749C189S20749C26__A1__8S20749C1[3]),  3,4},
  {&(_tg__ZTV8S20749C4__9S20749C189S20749C26__A1__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C19__9S20749C189S20749C26__A1__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C29S20749C26__A3__8S20749C1[8]),  8,12},
  {&(_tg__ZTV8S20749C4__8S20749C29S20749C26__A3__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C4__8S20749C29S20749C26__A3__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C89S20749C26__A1__8S20749C1[4]),  4,4},
  {&(_tg__ZTV8S20749C9__8S20749C89S20749C26__A1__8S20749C1[4]),  4,5},
  {&(_tg__ZTV8S20749C4__A2__9S20749C26__8S20749C1[6]),  6,9},
  {&(_tg__ZTV8S20749C49S20749C18__9S20749C26__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__9S20749C26__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C2__9S20749C26__8S20749C1[8]),  8,12},
  {&(_tg__ZTV8S20749C4__A2__9S20749C26__8S20749C1[6]),  6,9},
  {&(_tg__ZTV9S20749C15__9S20749C26__8S20749C1[10]),  10,14},
  {&(_tg__ZTV9S20749C17__9S20749C26__8S20749C1[8]),  8,11},
  {&(_tg__ZTV9S20749C18__A1__9S20749C26__8S20749C1[7]),  7,10},
  {&(_tg__ZTV8S20749C49S20749C18__A3__9S20749C26__8S20749C1[5]),  5,8},
  {&(_tg__ZTV9S20749C199S20749C18__A1__9S20749C26__8S20749C1[5]),  5,8},
  {&(_tg__ZTV8S20749C8__9S20749C26__8S20749C1[4]),  4,4},
  {&(_tg__ZTV8S20749C9__A1__9S20749C26__8S20749C1[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20749C1[];
extern  VTBL_ENTRY _ZTV8S20749C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20749C1[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C26D0Ev,_ZTv0_n24_N9S20749C26D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S20749C26D0Ev,_ZThn768_N9S20749C26D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C26D1Ev,_ZTv0_n24_N9S20749C26D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S20749C26D1Ev,_ZThn768_N9S20749C26D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C25D0Ev,_ZTv0_n24_N9S20749C25D0Ev), // 
  (VTBL_ENTRY)_ZN9S20749C25D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C25D1Ev,_ZTv0_n24_N9S20749C25D1Ev), // 
  (VTBL_ENTRY)_ZN9S20749C25D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20749C21D0Ev,_ZTv0_n48_N9S20749C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20749C21D0Ev,_ZThn72_N9S20749C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20749C21D1Ev,_ZTv0_n48_N9S20749C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20749C21D1Ev,_ZThn72_N9S20749C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C24D0Ev,_ZTv0_n24_N9S20749C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20749C24D0Ev,_ZThn16_N9S20749C24D0Ev),
  (VTBL_ENTRY)_ZN9S20749C24D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C24D1Ev,_ZTv0_n24_N9S20749C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20749C24D1Ev,_ZThn16_N9S20749C24D1Ev),
  (VTBL_ENTRY)_ZN9S20749C24D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C23D0Ev,_ZTv0_n24_N9S20749C23D0Ev), // 
  (VTBL_ENTRY)_ZN9S20749C23D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C23D1Ev,_ZTv0_n24_N9S20749C23D1Ev), // 
  (VTBL_ENTRY)_ZN9S20749C23D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C22D0Ev,_ZTv0_n24_N9S20749C22D0Ev), // 
  (VTBL_ENTRY)_ZN9S20749C22D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C22D1Ev,_ZTv0_n24_N9S20749C22D1Ev), // 
  (VTBL_ENTRY)_ZN9S20749C22D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C21D0Ev,_ZTv0_n24_N9S20749C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1272_N9S20749C21D0Ev,_ZThn840_N9S20749C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20749C21D0Ev,_ZThn24_N9S20749C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20749C21D0Ev,_ZThn8_N9S20749C21D0Ev),
  (VTBL_ENTRY)_ZN9S20749C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C21D1Ev,_ZTv0_n24_N9S20749C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1272_N9S20749C21D1Ev,_ZThn840_N9S20749C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20749C21D1Ev,_ZThn24_N9S20749C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20749C21D1Ev,_ZThn8_N9S20749C21D1Ev),
  (VTBL_ENTRY)_ZN9S20749C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C17D0Ev,_ZTv0_n28_N9S20749C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20749C17D0Ev,_ZThn44_N9S20749C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C17D1Ev,_ZTv0_n28_N9S20749C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20749C17D1Ev,_ZThn44_N9S20749C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C15D0Ev,_ZTv0_n28_N9S20749C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20749C15D0Ev,_ZThn100_N9S20749C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C15D1Ev,_ZTv0_n28_N9S20749C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20749C15D1Ev,_ZThn100_N9S20749C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C15D0Ev,_ZTv0_n32_N9S20749C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C15D0Ev,_ZThn56_N9S20749C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C15D1Ev,_ZTv0_n32_N9S20749C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C15D1Ev,_ZThn56_N9S20749C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C16D0Ev,_ZTv0_n28_N9S20749C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20749C16D0Ev,_ZThn100_N9S20749C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20749C16D1Ev,_ZTv0_n28_N9S20749C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20749C16D1Ev,_ZThn100_N9S20749C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C16D0Ev,_ZTv0_n32_N9S20749C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C16D0Ev,_ZThn56_N9S20749C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S20749C16D1Ev,_ZTv0_n32_N9S20749C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20749C16D1Ev,_ZThn56_N9S20749C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C11D0Ev,_ZTv0_n24_N9S20749C11D0Ev), // 
  (VTBL_ENTRY)_ZN9S20749C11D0Ev,
  (VTBL_ENTRY)_ZN9S20749C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20749C11D1Ev,_ZTv0_n24_N9S20749C11D1Ev), // 
  (VTBL_ENTRY)_ZN9S20749C11D1Ev,
  (VTBL_ENTRY)_ZN9S20749C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D0Ev,_ZTv0_n24_N8S20749C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  (VTBL_ENTRY)_ZN8S20749C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C2D1Ev,_ZTv0_n24_N8S20749C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  (VTBL_ENTRY)_ZN8S20749C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C7D0Ev,_ZTv0_n24_N8S20749C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20749C7D0Ev,_ZThn216_N8S20749C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C7D1Ev,_ZTv0_n24_N8S20749C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20749C7D1Ev,_ZThn216_N8S20749C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20749C1D0Ev,_ZTv0_n48_N8S20749C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2912_N8S20749C1D0Ev,_ZThn1920_N8S20749C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20749C1D1Ev,_ZTv0_n48_N8S20749C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2912_N8S20749C1D1Ev,_ZThn1920_N8S20749C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20749C1D0Ev,_ZTv0_n28_N8S20749C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N8S20749C1D0Ev,_ZThn1080_N8S20749C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20749C1D1Ev,_ZTv0_n28_N8S20749C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1640_N8S20749C1D1Ev,_ZThn1080_N8S20749C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20749C1D0Ev,_ZTv0_n32_N8S20749C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N8S20749C1D0Ev,_ZThn1036_N8S20749C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S20749C1D1Ev,_ZTv0_n32_N8S20749C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N8S20749C1D1Ev,_ZThn1036_N8S20749C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20749C1D0Ev,_ZTv0_n36_N8S20749C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S20749C1D0Ev,_ZThn980_N8S20749C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20749C1D1Ev,_ZTv0_n36_N8S20749C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S20749C1D1Ev,_ZThn980_N8S20749C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C1D0Ev,_ZTv0_n24_N8S20749C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4088_N8S20749C1D0Ev,_ZThn2688_N8S20749C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N8S20749C1D0Ev,_ZThn1872_N8S20749C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N8S20749C1D0Ev,_ZThn1856_N8S20749C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N8S20749C1D0Ev,_ZThn1848_N8S20749C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20749C1D0Ev,_ZThn216_N8S20749C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20749C1D1Ev,_ZTv0_n24_N8S20749C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn4088_N8S20749C1D1Ev,_ZThn2688_N8S20749C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2856_N8S20749C1D1Ev,_ZThn1872_N8S20749C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2832_N8S20749C1D1Ev,_ZThn1856_N8S20749C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn2816_N8S20749C1D1Ev,_ZThn1848_N8S20749C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20749C1D1Ev,_ZThn216_N8S20749C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20749C1 = {  "S20749C1", // class name
  bases_S20749C1, 62,
  &(vtc_S20749C1[0]), // expected_vtbl_contents
  &(vtt_S20749C1[0]), // expected_vtt_contents
  ABISELECT(4112,2700), // object size
  NSPAIRA(_ZTI8S20749C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20749C1),222, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20749C1),159, //virtual table table var
  46, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8562C2  {
  void *s8562c2f0;
  ::S4227C37 s8562c2f1;
  int s8562c2f2;
  ::S9141C28_nt s8562c2f3;
  unsigned int s8562c2f4:1;
  unsigned int s8562c2f5:1;
  unsigned int s8562c2f6:1;
  unsigned int s8562c2f7:1;
  unsigned int s8562c2f8:1;
  unsigned int s8562c2f9:1;
  unsigned int s8562c2f10:1;
  int s8562c2f11:3;
  int s8562c2f12:3;
  ::S3214C23 s8562c2f13;
  int s8562c2f14;
  virtual  ~S8562C2(); // _ZN7S8562C2D1Ev
  virtual void  v12(); // _ZN7S8562C23v12Ev
  virtual void  v13(); // _ZN7S8562C23v13Ev
  virtual void  v14(); // _ZN7S8562C23v14Ev
  virtual void  v15(); // _ZN7S8562C23v15Ev
  virtual void  v16(); // _ZN7S8562C23v16Ev
  virtual void  v17(); // _ZN7S8562C23v17Ev
  virtual void  v18(); // _ZN7S8562C23v18Ev
  virtual void  v19(); // _ZN7S8562C23v19Ev
  virtual void  v20(); // _ZN7S8562C23v20Ev
  virtual void  v21(); // _ZN7S8562C23v21Ev
  virtual void  v22(); // _ZN7S8562C23v22Ev
  virtual void  v23(); // _ZN7S8562C23v23Ev
  virtual void  v24(); // _ZN7S8562C23v24Ev
  virtual void  v25(); // _ZN7S8562C23v25Ev
  virtual void  v26(); // _ZN7S8562C23v26Ev
  virtual void  v27(); // _ZN7S8562C23v27Ev
  virtual void  v28(); // _ZN7S8562C23v28Ev
  virtual void  v29(); // _ZN7S8562C23v29Ev
  S8562C2(); // tgen
};
//SIG(-1 S8562C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S8562C2 ::~S8562C2(){ note_dtor("S8562C2", this);}
void  S8562C2 ::v12(){vfunc_called(this, "_ZN7S8562C23v12Ev");}
void  S8562C2 ::v13(){vfunc_called(this, "_ZN7S8562C23v13Ev");}
void  S8562C2 ::v14(){vfunc_called(this, "_ZN7S8562C23v14Ev");}
void  S8562C2 ::v15(){vfunc_called(this, "_ZN7S8562C23v15Ev");}
void  S8562C2 ::v16(){vfunc_called(this, "_ZN7S8562C23v16Ev");}
void  S8562C2 ::v17(){vfunc_called(this, "_ZN7S8562C23v17Ev");}
void  S8562C2 ::v18(){vfunc_called(this, "_ZN7S8562C23v18Ev");}
void  S8562C2 ::v19(){vfunc_called(this, "_ZN7S8562C23v19Ev");}
void  S8562C2 ::v20(){vfunc_called(this, "_ZN7S8562C23v20Ev");}
void  S8562C2 ::v21(){vfunc_called(this, "_ZN7S8562C23v21Ev");}
void  S8562C2 ::v22(){vfunc_called(this, "_ZN7S8562C23v22Ev");}
void  S8562C2 ::v23(){vfunc_called(this, "_ZN7S8562C23v23Ev");}
void  S8562C2 ::v24(){vfunc_called(this, "_ZN7S8562C23v24Ev");}
void  S8562C2 ::v25(){vfunc_called(this, "_ZN7S8562C23v25Ev");}
void  S8562C2 ::v26(){vfunc_called(this, "_ZN7S8562C23v26Ev");}
void  S8562C2 ::v27(){vfunc_called(this, "_ZN7S8562C23v27Ev");}
void  S8562C2 ::v28(){vfunc_called(this, "_ZN7S8562C23v28Ev");}
void  S8562C2 ::v29(){vfunc_called(this, "_ZN7S8562C23v29Ev");}
S8562C2 ::S8562C2(){ note_ctor("S8562C2", this);} // tgen

static void Test_S8562C2()
{
  extern Class_Descriptor cd_S8562C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S8562C2, buf);
    S8562C2 *dp, &lv = *(dp=new (buf) S8562C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S8562C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8562C2)");
    check_field_offset(lv, s8562c2f0, ABISELECT(8,4), "S8562C2.s8562c2f0");
    check_field_offset(lv, s8562c2f1, ABISELECT(16,8), "S8562C2.s8562c2f1");
    check_field_offset(lv, s8562c2f2, ABISELECT(20,12), "S8562C2.s8562c2f2");
    check_field_offset(lv, s8562c2f3, ABISELECT(24,16), "S8562C2.s8562c2f3");
    set_bf_and_test(lv, s8562c2f4, ABISELECT(40,28), 0, 1, 1, "S8562C2");
    set_bf_and_test(lv, s8562c2f5, ABISELECT(40,28), 1, 1, 1, "S8562C2");
    set_bf_and_test(lv, s8562c2f6, ABISELECT(40,28), 2, 1, 1, "S8562C2");
    set_bf_and_test(lv, s8562c2f7, ABISELECT(40,28), 3, 1, 1, "S8562C2");
    set_bf_and_test(lv, s8562c2f8, ABISELECT(40,28), 4, 1, 1, "S8562C2");
    set_bf_and_test(lv, s8562c2f9, ABISELECT(40,28), 5, 1, 1, "S8562C2");
    set_bf_and_test(lv, s8562c2f10, ABISELECT(40,28), 6, 1, 1, "S8562C2");
    set_bf_and_test(lv, s8562c2f11, ABISELECT(40,28), 7, 3, 1, "S8562C2");
    set_bf_and_test(lv, s8562c2f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S8562C2");
    set_bf_and_test(lv, s8562c2f12, ABISELECT(41,29), 2, 3, 1, "S8562C2");
    set_bf_and_test(lv, s8562c2f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S8562C2");
    check_field_offset(lv, s8562c2f13, ABISELECT(48,32), "S8562C2.s8562c2f13");
    check_field_offset(lv, s8562c2f14, ABISELECT(64,44), "S8562C2.s8562c2f14");
    test_class_info(&lv, &cd_S8562C2);
    dp->~S8562C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8562C2(Test_S8562C2, "S8562C2", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S8562C2C1Ev();
extern void _ZN7S8562C2D1Ev();
Name_Map name_map_S8562C2[] = {
  NSPAIR(_ZN7S8562C2C1Ev),
  NSPAIR(_ZN7S8562C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8562C2[];
extern void _ZN7S8562C2D1Ev();
extern void _ZN7S8562C2D0Ev();
extern void _ZN7S8562C23v12Ev();
extern void _ZN7S8562C23v13Ev();
extern void _ZN7S8562C23v14Ev();
extern void _ZN7S8562C23v15Ev();
extern void _ZN7S8562C23v16Ev();
extern void _ZN7S8562C23v17Ev();
extern void _ZN7S8562C23v18Ev();
extern void _ZN7S8562C23v19Ev();
extern void _ZN7S8562C23v20Ev();
extern void _ZN7S8562C23v21Ev();
extern void _ZN7S8562C23v22Ev();
extern void _ZN7S8562C23v23Ev();
extern void _ZN7S8562C23v24Ev();
extern void _ZN7S8562C23v25Ev();
extern void _ZN7S8562C23v26Ev();
extern void _ZN7S8562C23v27Ev();
extern void _ZN7S8562C23v28Ev();
extern void _ZN7S8562C23v29Ev();
static  VTBL_ENTRY vtc_S8562C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8562C2[0]),
  (VTBL_ENTRY)&_ZN7S8562C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8562C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v29Ev,
};
extern VTBL_ENTRY _ZTI7S8562C2[];
extern  VTBL_ENTRY _ZTV7S8562C2[];
Class_Descriptor cd_S8562C2 = {  "S8562C2", // class name
  0,0,//no base classes
  &(vtc_S8562C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S8562C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8562C2),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8562C1  : S8562C2 {
  ::S8635C13 s8562c1f0;
  void *s8562c1f1;
  ::S3214C18 s8562c1f2;
  ::S4227C27 s8562c1f3;
  ::S4227C27 s8562c1f4;
  ::S8614C18_nt s8562c1f5;
  virtual void  v1(); // _ZN7S8562C12v1Ev
  virtual void  v2(); // _ZN7S8562C12v2Ev
  virtual void  v3(); // _ZN7S8562C12v3Ev
  virtual void  v4(); // _ZN7S8562C12v4Ev
  virtual void  v5(); // _ZN7S8562C12v5Ev
  virtual void  v6(); // _ZN7S8562C12v6Ev
  virtual void  v7(); // _ZN7S8562C12v7Ev
  virtual void  v8(); // _ZN7S8562C12v8Ev
  virtual void  v9(); // _ZN7S8562C12v9Ev
  virtual void  v10(); // _ZN7S8562C13v10Ev
  virtual void  v11(); // _ZN7S8562C13v11Ev
  ~S8562C1(); // tgen
  S8562C1(); // tgen
};
//SIG(1 S8562C1) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 FC7{ BC8{ vd v31 v32 v33 v34 v35 v36 v37 FC9{ m Fp[3]} Fi:1} vd v30 FC10{ m Fp Fi[2] FC11{ BC5} Fp}} Fp FC12{ BC5} FC13{ m} FC13 FC14{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1}}


void  S8562C1 ::v1(){vfunc_called(this, "_ZN7S8562C12v1Ev");}
void  S8562C1 ::v2(){vfunc_called(this, "_ZN7S8562C12v2Ev");}
void  S8562C1 ::v3(){vfunc_called(this, "_ZN7S8562C12v3Ev");}
void  S8562C1 ::v4(){vfunc_called(this, "_ZN7S8562C12v4Ev");}
void  S8562C1 ::v5(){vfunc_called(this, "_ZN7S8562C12v5Ev");}
void  S8562C1 ::v6(){vfunc_called(this, "_ZN7S8562C12v6Ev");}
void  S8562C1 ::v7(){vfunc_called(this, "_ZN7S8562C12v7Ev");}
void  S8562C1 ::v8(){vfunc_called(this, "_ZN7S8562C12v8Ev");}
void  S8562C1 ::v9(){vfunc_called(this, "_ZN7S8562C12v9Ev");}
void  S8562C1 ::v10(){vfunc_called(this, "_ZN7S8562C13v10Ev");}
void  S8562C1 ::v11(){vfunc_called(this, "_ZN7S8562C13v11Ev");}
S8562C1 ::~S8562C1(){ note_dtor("S8562C1", this);} // tgen
S8562C1 ::S8562C1(){ note_ctor("S8562C1", this);} // tgen

static void Test_S8562C1()
{
  extern Class_Descriptor cd_S8562C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,31)];
    init_test(&cd_S8562C1, buf);
    S8562C1 *dp, &lv = *(dp=new (buf) S8562C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,120), "sizeof(S8562C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8562C1)");
    check_base_class_offset(lv, (S8562C2*), 0, "S8562C1");
    check_field_offset(lv, s8562c1f0, ABISELECT(72,48), "S8562C1.s8562c1f0");
    check_field_offset(lv, s8562c1f1, ABISELECT(152,96), "S8562C1.s8562c1f1");
    check_field_offset(lv, s8562c1f2, ABISELECT(160,100), "S8562C1.s8562c1f2");
    check_field_offset(lv, s8562c1f3, ABISELECT(176,112), "S8562C1.s8562c1f3");
    check_field_offset(lv, s8562c1f4, ABISELECT(177,113), "S8562C1.s8562c1f4");
    check_field_offset(lv, s8562c1f5, ABISELECT(180,116), "S8562C1.s8562c1f5");
    test_class_info(&lv, &cd_S8562C1);
    dp->~S8562C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8562C1(Test_S8562C1, "S8562C1", ABISELECT(184,120));

#else // __cplusplus

extern void _ZN7S8562C1C1Ev();
extern void _ZN7S8562C1D1Ev();
Name_Map name_map_S8562C1[] = {
  NSPAIR(_ZN7S8562C1C1Ev),
  NSPAIR(_ZN7S8562C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8562C2;
extern VTBL_ENTRY _ZTI7S8562C2[];
extern  VTBL_ENTRY _ZTV7S8562C2[];
static Base_Class bases_S8562C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8562C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8562C1[];
extern void _ZN7S8562C1D1Ev();
extern void _ZN7S8562C1D0Ev();
extern void _ZN7S8562C23v12Ev();
extern void _ZN7S8562C23v13Ev();
extern void _ZN7S8562C23v14Ev();
extern void _ZN7S8562C23v15Ev();
extern void _ZN7S8562C23v16Ev();
extern void _ZN7S8562C23v17Ev();
extern void _ZN7S8562C23v18Ev();
extern void _ZN7S8562C23v19Ev();
extern void _ZN7S8562C23v20Ev();
extern void _ZN7S8562C23v21Ev();
extern void _ZN7S8562C23v22Ev();
extern void _ZN7S8562C23v23Ev();
extern void _ZN7S8562C23v24Ev();
extern void _ZN7S8562C23v25Ev();
extern void _ZN7S8562C23v26Ev();
extern void _ZN7S8562C23v27Ev();
extern void _ZN7S8562C23v28Ev();
extern void _ZN7S8562C23v29Ev();
extern void _ZN7S8562C12v1Ev();
extern void _ZN7S8562C12v2Ev();
extern void _ZN7S8562C12v3Ev();
extern void _ZN7S8562C12v4Ev();
extern void _ZN7S8562C12v5Ev();
extern void _ZN7S8562C12v6Ev();
extern void _ZN7S8562C12v7Ev();
extern void _ZN7S8562C12v8Ev();
extern void _ZN7S8562C12v9Ev();
extern void _ZN7S8562C13v10Ev();
extern void _ZN7S8562C13v11Ev();
static  VTBL_ENTRY vtc_S8562C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8562C1[0]),
  (VTBL_ENTRY)&_ZN7S8562C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8562C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8562C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8562C12v1Ev,
  (VTBL_ENTRY)&_ZN7S8562C12v2Ev,
  (VTBL_ENTRY)&_ZN7S8562C12v3Ev,
  (VTBL_ENTRY)&_ZN7S8562C12v4Ev,
  (VTBL_ENTRY)&_ZN7S8562C12v5Ev,
  (VTBL_ENTRY)&_ZN7S8562C12v6Ev,
  (VTBL_ENTRY)&_ZN7S8562C12v7Ev,
  (VTBL_ENTRY)&_ZN7S8562C12v8Ev,
  (VTBL_ENTRY)&_ZN7S8562C12v9Ev,
  (VTBL_ENTRY)&_ZN7S8562C13v10Ev,
  (VTBL_ENTRY)&_ZN7S8562C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S8562C1[];
extern  VTBL_ENTRY _ZTV7S8562C1[];
Class_Descriptor cd_S8562C1 = {  "S8562C1", // class name
  bases_S8562C1, 1,
  &(vtc_S8562C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,120), // object size
  NSPAIRA(_ZTI7S8562C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8562C1),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  S9805C2  {
  void *s9805c2f0[2];
  int s9805c2f1;
  void *s9805c2f2;
  int s9805c2f3[3];
  ::S3214C13_nt s9805c2f4;
  unsigned int s9805c2f5:1;
  unsigned int s9805c2f6:1;
  unsigned int s9805c2f7:1;
  void *s9805c2f8[2];
  ::S9141C26 s9805c2f9;
  void *s9805c2f10;
  int s9805c2f11;
  ::S9141C26 s9805c2f12;
  int s9805c2f13[8];
  ::S3214C13_nt s9805c2f14;
  ::S9142C8_nt s9805c2f15;
  ::S9141C28_nt s9805c2f16;
  int s9805c2f17[2];
  void *s9805c2f18;
  int s9805c2f19;
  ::S3214C23 s9805c2f20;
  int s9805c2f21[2];
  void *s9805c2f22;
  int s9805c2f23;
  virtual  ~S9805C2(); // _ZN7S9805C2D1Ev
  virtual void  v4(); // _ZN7S9805C22v4Ev
  virtual void  v5(); // _ZN7S9805C22v5Ev
  virtual void  v6(); // _ZN7S9805C22v6Ev
  virtual void  v7(); // _ZN7S9805C22v7Ev
  virtual void  v8(); // _ZN7S9805C22v8Ev
  virtual void  v9(); // _ZN7S9805C22v9Ev
  virtual void  v10(); // _ZN7S9805C23v10Ev
  virtual void  v11(); // _ZN7S9805C23v11Ev
  virtual void  v12(); // _ZN7S9805C23v12Ev
  virtual void  v13(); // _ZN7S9805C23v13Ev
  virtual void  v14(); // _ZN7S9805C23v14Ev
  virtual void  v15(); // _ZN7S9805C23v15Ev
  virtual void  v16(); // _ZN7S9805C23v16Ev
  virtual void  v17(); // _ZN7S9805C23v17Ev
  virtual void  v18(); // _ZN7S9805C23v18Ev
  virtual void  v19(); // _ZN7S9805C23v19Ev
  virtual void  v20(); // _ZN7S9805C23v20Ev
  virtual void  v21(); // _ZN7S9805C23v21Ev
  virtual void  v22(); // _ZN7S9805C23v22Ev
  virtual void  v23(); // _ZN7S9805C23v23Ev
  virtual void  v24(); // _ZN7S9805C23v24Ev
  virtual void  v25(); // _ZN7S9805C23v25Ev
  virtual void  v26(); // _ZN7S9805C23v26Ev
  virtual void  v27(); // _ZN7S9805C23v27Ev
  virtual void  v28(); // _ZN7S9805C23v28Ev
  virtual void  v29(); // _ZN7S9805C23v29Ev
  virtual void  v30(); // _ZN7S9805C23v30Ev
  virtual void  v31(); // _ZN7S9805C23v31Ev
  virtual void  v32(); // _ZN7S9805C23v32Ev
  virtual void  v33(); // _ZN7S9805C23v33Ev
  virtual void  v34(); // _ZN7S9805C23v34Ev
  virtual void  v35(); // _ZN7S9805C23v35Ev
  virtual void  v36(); // _ZN7S9805C23v36Ev
  virtual void  v37(); // _ZN7S9805C23v37Ev
  virtual void  v38(); // _ZN7S9805C23v38Ev
  S9805C2(); // tgen
};
//SIG(-1 S9805C2) 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 Fp[2] Fi Fp Fi[3] FC2{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC3 Fi[8] FC2 FC7{ m FC2 FC2 Fc} FC5 Fi[2] Fp Fi FC8{ BC6} Fi[2] Fp Fi}


 S9805C2 ::~S9805C2(){ note_dtor("S9805C2", this);}
void  S9805C2 ::v4(){vfunc_called(this, "_ZN7S9805C22v4Ev");}
void  S9805C2 ::v5(){vfunc_called(this, "_ZN7S9805C22v5Ev");}
void  S9805C2 ::v6(){vfunc_called(this, "_ZN7S9805C22v6Ev");}
void  S9805C2 ::v7(){vfunc_called(this, "_ZN7S9805C22v7Ev");}
void  S9805C2 ::v8(){vfunc_called(this, "_ZN7S9805C22v8Ev");}
void  S9805C2 ::v9(){vfunc_called(this, "_ZN7S9805C22v9Ev");}
void  S9805C2 ::v10(){vfunc_called(this, "_ZN7S9805C23v10Ev");}
void  S9805C2 ::v11(){vfunc_called(this, "_ZN7S9805C23v11Ev");}
void  S9805C2 ::v12(){vfunc_called(this, "_ZN7S9805C23v12Ev");}
void  S9805C2 ::v13(){vfunc_called(this, "_ZN7S9805C23v13Ev");}
void  S9805C2 ::v14(){vfunc_called(this, "_ZN7S9805C23v14Ev");}
void  S9805C2 ::v15(){vfunc_called(this, "_ZN7S9805C23v15Ev");}
void  S9805C2 ::v16(){vfunc_called(this, "_ZN7S9805C23v16Ev");}
void  S9805C2 ::v17(){vfunc_called(this, "_ZN7S9805C23v17Ev");}
void  S9805C2 ::v18(){vfunc_called(this, "_ZN7S9805C23v18Ev");}
void  S9805C2 ::v19(){vfunc_called(this, "_ZN7S9805C23v19Ev");}
void  S9805C2 ::v20(){vfunc_called(this, "_ZN7S9805C23v20Ev");}
void  S9805C2 ::v21(){vfunc_called(this, "_ZN7S9805C23v21Ev");}
void  S9805C2 ::v22(){vfunc_called(this, "_ZN7S9805C23v22Ev");}
void  S9805C2 ::v23(){vfunc_called(this, "_ZN7S9805C23v23Ev");}
void  S9805C2 ::v24(){vfunc_called(this, "_ZN7S9805C23v24Ev");}
void  S9805C2 ::v25(){vfunc_called(this, "_ZN7S9805C23v25Ev");}
void  S9805C2 ::v26(){vfunc_called(this, "_ZN7S9805C23v26Ev");}
void  S9805C2 ::v27(){vfunc_called(this, "_ZN7S9805C23v27Ev");}
void  S9805C2 ::v28(){vfunc_called(this, "_ZN7S9805C23v28Ev");}
void  S9805C2 ::v29(){vfunc_called(this, "_ZN7S9805C23v29Ev");}
void  S9805C2 ::v30(){vfunc_called(this, "_ZN7S9805C23v30Ev");}
void  S9805C2 ::v31(){vfunc_called(this, "_ZN7S9805C23v31Ev");}
void  S9805C2 ::v32(){vfunc_called(this, "_ZN7S9805C23v32Ev");}
void  S9805C2 ::v33(){vfunc_called(this, "_ZN7S9805C23v33Ev");}
void  S9805C2 ::v34(){vfunc_called(this, "_ZN7S9805C23v34Ev");}
void  S9805C2 ::v35(){vfunc_called(this, "_ZN7S9805C23v35Ev");}
void  S9805C2 ::v36(){vfunc_called(this, "_ZN7S9805C23v36Ev");}
void  S9805C2 ::v37(){vfunc_called(this, "_ZN7S9805C23v37Ev");}
void  S9805C2 ::v38(){vfunc_called(this, "_ZN7S9805C23v38Ev");}
S9805C2 ::S9805C2(){ note_ctor("S9805C2", this);} // tgen

static void Test_S9805C2()
{
  extern Class_Descriptor cd_S9805C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,59)];
    init_test(&cd_S9805C2, buf);
    S9805C2 *dp, &lv = *(dp=new (buf) S9805C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,232), "sizeof(S9805C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9805C2)");
    check_field_offset(lv, s9805c2f0, ABISELECT(8,4), "S9805C2.s9805c2f0");
    check_field_offset(lv, s9805c2f1, ABISELECT(24,12), "S9805C2.s9805c2f1");
    check_field_offset(lv, s9805c2f2, ABISELECT(32,16), "S9805C2.s9805c2f2");
    check_field_offset(lv, s9805c2f3, ABISELECT(40,20), "S9805C2.s9805c2f3");
    check_field_offset(lv, s9805c2f4, ABISELECT(52,32), "S9805C2.s9805c2f4");
    set_bf_and_test(lv, s9805c2f5, ABISELECT(64,44), 0, 1, 1, "S9805C2");
    set_bf_and_test(lv, s9805c2f6, ABISELECT(64,44), 1, 1, 1, "S9805C2");
    set_bf_and_test(lv, s9805c2f7, ABISELECT(64,44), 2, 1, 1, "S9805C2");
    check_field_offset(lv, s9805c2f8, ABISELECT(72,48), "S9805C2.s9805c2f8");
    check_field_offset(lv, s9805c2f9, ABISELECT(88,56), "S9805C2.s9805c2f9");
    check_field_offset(lv, s9805c2f10, ABISELECT(120,76), "S9805C2.s9805c2f10");
    check_field_offset(lv, s9805c2f11, ABISELECT(128,80), "S9805C2.s9805c2f11");
    check_field_offset(lv, s9805c2f12, ABISELECT(136,84), "S9805C2.s9805c2f12");
    check_field_offset(lv, s9805c2f13, ABISELECT(168,104), "S9805C2.s9805c2f13");
    check_field_offset(lv, s9805c2f14, ABISELECT(200,136), "S9805C2.s9805c2f14");
    check_field_offset(lv, s9805c2f15, ABISELECT(212,148), "S9805C2.s9805c2f15");
    check_field_offset(lv, s9805c2f16, ABISELECT(240,176), "S9805C2.s9805c2f16");
    check_field_offset(lv, s9805c2f17, ABISELECT(256,188), "S9805C2.s9805c2f17");
    check_field_offset(lv, s9805c2f18, ABISELECT(264,196), "S9805C2.s9805c2f18");
    check_field_offset(lv, s9805c2f19, ABISELECT(272,200), "S9805C2.s9805c2f19");
    check_field_offset(lv, s9805c2f20, ABISELECT(280,204), "S9805C2.s9805c2f20");
    check_field_offset(lv, s9805c2f21, ABISELECT(296,216), "S9805C2.s9805c2f21");
    check_field_offset(lv, s9805c2f22, ABISELECT(304,224), "S9805C2.s9805c2f22");
    check_field_offset(lv, s9805c2f23, ABISELECT(312,228), "S9805C2.s9805c2f23");
    test_class_info(&lv, &cd_S9805C2);
    dp->~S9805C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9805C2(Test_S9805C2, "S9805C2", ABISELECT(320,232));

#else // __cplusplus

extern void _ZN7S9805C2C1Ev();
extern void _ZN7S9805C2D1Ev();
Name_Map name_map_S9805C2[] = {
  NSPAIR(_ZN7S9805C2C1Ev),
  NSPAIR(_ZN7S9805C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9805C2[];
extern void _ZN7S9805C2D1Ev();
extern void _ZN7S9805C2D0Ev();
extern void _ZN7S9805C22v4Ev();
extern void _ZN7S9805C22v5Ev();
extern void _ZN7S9805C22v6Ev();
extern void _ZN7S9805C22v7Ev();
extern void _ZN7S9805C22v8Ev();
extern void _ZN7S9805C22v9Ev();
extern void _ZN7S9805C23v10Ev();
extern void _ZN7S9805C23v11Ev();
extern void _ZN7S9805C23v12Ev();
extern void _ZN7S9805C23v13Ev();
extern void _ZN7S9805C23v14Ev();
extern void _ZN7S9805C23v15Ev();
extern void _ZN7S9805C23v16Ev();
extern void _ZN7S9805C23v17Ev();
extern void _ZN7S9805C23v18Ev();
extern void _ZN7S9805C23v19Ev();
extern void _ZN7S9805C23v20Ev();
extern void _ZN7S9805C23v21Ev();
extern void _ZN7S9805C23v22Ev();
extern void _ZN7S9805C23v23Ev();
extern void _ZN7S9805C23v24Ev();
extern void _ZN7S9805C23v25Ev();
extern void _ZN7S9805C23v26Ev();
extern void _ZN7S9805C23v27Ev();
extern void _ZN7S9805C23v28Ev();
extern void _ZN7S9805C23v29Ev();
extern void _ZN7S9805C23v30Ev();
extern void _ZN7S9805C23v31Ev();
extern void _ZN7S9805C23v32Ev();
extern void _ZN7S9805C23v33Ev();
extern void _ZN7S9805C23v34Ev();
extern void _ZN7S9805C23v35Ev();
extern void _ZN7S9805C23v36Ev();
extern void _ZN7S9805C23v37Ev();
extern void _ZN7S9805C23v38Ev();
static  VTBL_ENTRY vtc_S9805C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9805C2[0]),
  (VTBL_ENTRY)&_ZN7S9805C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9805C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9805C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9805C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9805C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9805C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9805C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9805C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v22Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v23Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v24Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v25Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v26Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v27Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v28Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v29Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v30Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v31Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v32Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v33Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v34Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v35Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v36Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v37Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v38Ev,
};
extern VTBL_ENTRY _ZTI7S9805C2[];
extern  VTBL_ENTRY _ZTV7S9805C2[];
Class_Descriptor cd_S9805C2 = {  "S9805C2", // class name
  0,0,//no base classes
  &(vtc_S9805C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,232), // object size
  NSPAIRA(_ZTI7S9805C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9805C2),39, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9805C1  : S9805C2 {
  virtual  ~S9805C1(); // _ZN7S9805C1D1Ev
  virtual void  v1(); // _ZN7S9805C12v1Ev
  virtual void  v2(); // _ZN7S9805C12v2Ev
  virtual void  v3(); // _ZN7S9805C12v3Ev
  S9805C1(); // tgen
};
//SIG(1 S9805C1) 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 Fp[2] Fi Fp Fi[3] FC3{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC4 Fi[8] FC3 FC8{ m FC3 FC3 Fc} FC6 Fi[2] Fp Fi FC9{ BC7} Fi[2] Fp Fi} vd v1 v2 v3}


 S9805C1 ::~S9805C1(){ note_dtor("S9805C1", this);}
void  S9805C1 ::v1(){vfunc_called(this, "_ZN7S9805C12v1Ev");}
void  S9805C1 ::v2(){vfunc_called(this, "_ZN7S9805C12v2Ev");}
void  S9805C1 ::v3(){vfunc_called(this, "_ZN7S9805C12v3Ev");}
S9805C1 ::S9805C1(){ note_ctor("S9805C1", this);} // tgen

static void Test_S9805C1()
{
  extern Class_Descriptor cd_S9805C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,59)];
    init_test(&cd_S9805C1, buf);
    S9805C1 *dp, &lv = *(dp=new (buf) S9805C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,232), "sizeof(S9805C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9805C1)");
    check_base_class_offset(lv, (S9805C2*), 0, "S9805C1");
    test_class_info(&lv, &cd_S9805C1);
    dp->~S9805C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9805C1(Test_S9805C1, "S9805C1", ABISELECT(320,232));

#else // __cplusplus

extern void _ZN7S9805C1C1Ev();
extern void _ZN7S9805C1D1Ev();
Name_Map name_map_S9805C1[] = {
  NSPAIR(_ZN7S9805C1C1Ev),
  NSPAIR(_ZN7S9805C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9805C2;
extern VTBL_ENTRY _ZTI7S9805C2[];
extern  VTBL_ENTRY _ZTV7S9805C2[];
static Base_Class bases_S9805C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9805C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9805C1[];
extern void _ZN7S9805C1D1Ev();
extern void _ZN7S9805C1D0Ev();
extern void _ZN7S9805C22v4Ev();
extern void _ZN7S9805C22v5Ev();
extern void _ZN7S9805C22v6Ev();
extern void _ZN7S9805C22v7Ev();
extern void _ZN7S9805C22v8Ev();
extern void _ZN7S9805C22v9Ev();
extern void _ZN7S9805C23v10Ev();
extern void _ZN7S9805C23v11Ev();
extern void _ZN7S9805C23v12Ev();
extern void _ZN7S9805C23v13Ev();
extern void _ZN7S9805C23v14Ev();
extern void _ZN7S9805C23v15Ev();
extern void _ZN7S9805C23v16Ev();
extern void _ZN7S9805C23v17Ev();
extern void _ZN7S9805C23v18Ev();
extern void _ZN7S9805C23v19Ev();
extern void _ZN7S9805C23v20Ev();
extern void _ZN7S9805C23v21Ev();
extern void _ZN7S9805C23v22Ev();
extern void _ZN7S9805C23v23Ev();
extern void _ZN7S9805C23v24Ev();
extern void _ZN7S9805C23v25Ev();
extern void _ZN7S9805C23v26Ev();
extern void _ZN7S9805C23v27Ev();
extern void _ZN7S9805C23v28Ev();
extern void _ZN7S9805C23v29Ev();
extern void _ZN7S9805C23v30Ev();
extern void _ZN7S9805C23v31Ev();
extern void _ZN7S9805C23v32Ev();
extern void _ZN7S9805C23v33Ev();
extern void _ZN7S9805C23v34Ev();
extern void _ZN7S9805C23v35Ev();
extern void _ZN7S9805C23v36Ev();
extern void _ZN7S9805C23v37Ev();
extern void _ZN7S9805C23v38Ev();
extern void _ZN7S9805C12v1Ev();
extern void _ZN7S9805C12v2Ev();
extern void _ZN7S9805C12v3Ev();
static  VTBL_ENTRY vtc_S9805C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9805C1[0]),
  (VTBL_ENTRY)&_ZN7S9805C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9805C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9805C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9805C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9805C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9805C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9805C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9805C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v22Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v23Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v24Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v25Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v26Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v27Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v28Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v29Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v30Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v31Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v32Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v33Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v34Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v35Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v36Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v37Ev,
  (VTBL_ENTRY)&_ZN7S9805C23v38Ev,
  (VTBL_ENTRY)&_ZN7S9805C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9805C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9805C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9805C1[];
extern  VTBL_ENTRY _ZTV7S9805C1[];
Class_Descriptor cd_S9805C1 = {  "S9805C1", // class name
  bases_S9805C1, 1,
  &(vtc_S9805C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,232), // object size
  NSPAIRA(_ZTI7S9805C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9805C1),42, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5160C3  {
  void *s5160c3f0;
  ::S4227C37 s5160c3f1;
  int s5160c3f2;
  ::S9141C28_nt s5160c3f3;
  unsigned int s5160c3f4:1;
  unsigned int s5160c3f5:1;
  unsigned int s5160c3f6:1;
  unsigned int s5160c3f7:1;
  unsigned int s5160c3f8:1;
  unsigned int s5160c3f9:1;
  unsigned int s5160c3f10:1;
  int s5160c3f11:3;
  int s5160c3f12:3;
  ::S3214C23 s5160c3f13;
  int s5160c3f14;
  virtual  ~S5160C3(); // _ZN7S5160C3D1Ev
  virtual void  v4(); // _ZN7S5160C32v4Ev
  virtual void  v5(); // _ZN7S5160C32v5Ev
  virtual void  v6(); // _ZN7S5160C32v6Ev
  virtual void  v7(); // _ZN7S5160C32v7Ev
  virtual void  v8(); // _ZN7S5160C32v8Ev
  virtual void  v9(); // _ZN7S5160C32v9Ev
  virtual void  v10(); // _ZN7S5160C33v10Ev
  virtual void  v11(); // _ZN7S5160C33v11Ev
  virtual void  v12(); // _ZN7S5160C33v12Ev
  virtual void  v13(); // _ZN7S5160C33v13Ev
  virtual void  v14(); // _ZN7S5160C33v14Ev
  virtual void  v15(); // _ZN7S5160C33v15Ev
  virtual void  v16(); // _ZN7S5160C33v16Ev
  virtual void  v17(); // _ZN7S5160C33v17Ev
  virtual void  v18(); // _ZN7S5160C33v18Ev
  virtual void  v19(); // _ZN7S5160C33v19Ev
  virtual void  v20(); // _ZN7S5160C33v20Ev
  virtual void  v21(); // _ZN7S5160C33v21Ev
  S5160C3(); // tgen
};
//SIG(-1 S5160C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S5160C3 ::~S5160C3(){ note_dtor("S5160C3", this);}
void  S5160C3 ::v4(){vfunc_called(this, "_ZN7S5160C32v4Ev");}
void  S5160C3 ::v5(){vfunc_called(this, "_ZN7S5160C32v5Ev");}
void  S5160C3 ::v6(){vfunc_called(this, "_ZN7S5160C32v6Ev");}
void  S5160C3 ::v7(){vfunc_called(this, "_ZN7S5160C32v7Ev");}
void  S5160C3 ::v8(){vfunc_called(this, "_ZN7S5160C32v8Ev");}
void  S5160C3 ::v9(){vfunc_called(this, "_ZN7S5160C32v9Ev");}
void  S5160C3 ::v10(){vfunc_called(this, "_ZN7S5160C33v10Ev");}
void  S5160C3 ::v11(){vfunc_called(this, "_ZN7S5160C33v11Ev");}
void  S5160C3 ::v12(){vfunc_called(this, "_ZN7S5160C33v12Ev");}
void  S5160C3 ::v13(){vfunc_called(this, "_ZN7S5160C33v13Ev");}
void  S5160C3 ::v14(){vfunc_called(this, "_ZN7S5160C33v14Ev");}
void  S5160C3 ::v15(){vfunc_called(this, "_ZN7S5160C33v15Ev");}
void  S5160C3 ::v16(){vfunc_called(this, "_ZN7S5160C33v16Ev");}
void  S5160C3 ::v17(){vfunc_called(this, "_ZN7S5160C33v17Ev");}
void  S5160C3 ::v18(){vfunc_called(this, "_ZN7S5160C33v18Ev");}
void  S5160C3 ::v19(){vfunc_called(this, "_ZN7S5160C33v19Ev");}
void  S5160C3 ::v20(){vfunc_called(this, "_ZN7S5160C33v20Ev");}
void  S5160C3 ::v21(){vfunc_called(this, "_ZN7S5160C33v21Ev");}
S5160C3 ::S5160C3(){ note_ctor("S5160C3", this);} // tgen

static void Test_S5160C3()
{
  extern Class_Descriptor cd_S5160C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S5160C3, buf);
    S5160C3 *dp, &lv = *(dp=new (buf) S5160C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S5160C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5160C3)");
    check_field_offset(lv, s5160c3f0, ABISELECT(8,4), "S5160C3.s5160c3f0");
    check_field_offset(lv, s5160c3f1, ABISELECT(16,8), "S5160C3.s5160c3f1");
    check_field_offset(lv, s5160c3f2, ABISELECT(20,12), "S5160C3.s5160c3f2");
    check_field_offset(lv, s5160c3f3, ABISELECT(24,16), "S5160C3.s5160c3f3");
    set_bf_and_test(lv, s5160c3f4, ABISELECT(40,28), 0, 1, 1, "S5160C3");
    set_bf_and_test(lv, s5160c3f5, ABISELECT(40,28), 1, 1, 1, "S5160C3");
    set_bf_and_test(lv, s5160c3f6, ABISELECT(40,28), 2, 1, 1, "S5160C3");
    set_bf_and_test(lv, s5160c3f7, ABISELECT(40,28), 3, 1, 1, "S5160C3");
    set_bf_and_test(lv, s5160c3f8, ABISELECT(40,28), 4, 1, 1, "S5160C3");
    set_bf_and_test(lv, s5160c3f9, ABISELECT(40,28), 5, 1, 1, "S5160C3");
    set_bf_and_test(lv, s5160c3f10, ABISELECT(40,28), 6, 1, 1, "S5160C3");
    set_bf_and_test(lv, s5160c3f11, ABISELECT(40,28), 7, 3, 1, "S5160C3");
    set_bf_and_test(lv, s5160c3f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S5160C3");
    set_bf_and_test(lv, s5160c3f12, ABISELECT(41,29), 2, 3, 1, "S5160C3");
    set_bf_and_test(lv, s5160c3f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S5160C3");
    check_field_offset(lv, s5160c3f13, ABISELECT(48,32), "S5160C3.s5160c3f13");
    check_field_offset(lv, s5160c3f14, ABISELECT(64,44), "S5160C3.s5160c3f14");
    test_class_info(&lv, &cd_S5160C3);
    dp->~S5160C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5160C3(Test_S5160C3, "S5160C3", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S5160C3C1Ev();
extern void _ZN7S5160C3D1Ev();
Name_Map name_map_S5160C3[] = {
  NSPAIR(_ZN7S5160C3C1Ev),
  NSPAIR(_ZN7S5160C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5160C3[];
extern void _ZN7S5160C3D1Ev();
extern void _ZN7S5160C3D0Ev();
extern void _ZN7S5160C32v4Ev();
extern void _ZN7S5160C32v5Ev();
extern void _ZN7S5160C32v6Ev();
extern void _ZN7S5160C32v7Ev();
extern void _ZN7S5160C32v8Ev();
extern void _ZN7S5160C32v9Ev();
extern void _ZN7S5160C33v10Ev();
extern void _ZN7S5160C33v11Ev();
extern void _ZN7S5160C33v12Ev();
extern void _ZN7S5160C33v13Ev();
extern void _ZN7S5160C33v14Ev();
extern void _ZN7S5160C33v15Ev();
extern void _ZN7S5160C33v16Ev();
extern void _ZN7S5160C33v17Ev();
extern void _ZN7S5160C33v18Ev();
extern void _ZN7S5160C33v19Ev();
extern void _ZN7S5160C33v20Ev();
extern void _ZN7S5160C33v21Ev();
static  VTBL_ENTRY vtc_S5160C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5160C3[0]),
  (VTBL_ENTRY)&_ZN7S5160C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5160C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v21Ev,
};
extern VTBL_ENTRY _ZTI7S5160C3[];
extern  VTBL_ENTRY _ZTV7S5160C3[];
Class_Descriptor cd_S5160C3 = {  "S5160C3", // class name
  0,0,//no base classes
  &(vtc_S5160C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S5160C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5160C3),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5160C2  : S5160C3 {
  void *s5160c2f0[4];
  ::S4227C27 s5160c2f1;
  ::S4227C27 s5160c2f2;
  int s5160c2f3:3;
  unsigned int s5160c2f4:1;
  unsigned int s5160c2f5:1;
  unsigned int s5160c2f6:1;
  unsigned int s5160c2f7:1;
  unsigned int s5160c2f8:1;
  ::S8614C18_nt s5160c2f9;
  ::S3214C18 s5160c2f10;
  ::S4227C27 s5160c2f11;
  virtual void  v22(); // _ZN7S5160C23v22Ev
  virtual void  v23(); // _ZN7S5160C23v23Ev
  virtual void  v24(); // _ZN7S5160C23v24Ev
  virtual void  v25(); // _ZN7S5160C23v25Ev
  virtual void  v26(); // _ZN7S5160C23v26Ev
  virtual void  v27(); // _ZN7S5160C23v27Ev
  virtual void  v28(); // _ZN7S5160C23v28Ev
  virtual void  v29(); // _ZN7S5160C23v29Ev
  virtual void  v30(); // _ZN7S5160C23v30Ev
  virtual void  v31(); // _ZN7S5160C23v31Ev
  virtual void  v32(); // _ZN7S5160C23v32Ev
  ~S5160C2(); // tgen
  S5160C2(); // tgen
};
//SIG(-1 S5160C2) C1{ BC2{ vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp[4] FC7{ m} FC7 Fi:3 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC8{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1} FC9{ BC5} FC7}


void  S5160C2 ::v22(){vfunc_called(this, "_ZN7S5160C23v22Ev");}
void  S5160C2 ::v23(){vfunc_called(this, "_ZN7S5160C23v23Ev");}
void  S5160C2 ::v24(){vfunc_called(this, "_ZN7S5160C23v24Ev");}
void  S5160C2 ::v25(){vfunc_called(this, "_ZN7S5160C23v25Ev");}
void  S5160C2 ::v26(){vfunc_called(this, "_ZN7S5160C23v26Ev");}
void  S5160C2 ::v27(){vfunc_called(this, "_ZN7S5160C23v27Ev");}
void  S5160C2 ::v28(){vfunc_called(this, "_ZN7S5160C23v28Ev");}
void  S5160C2 ::v29(){vfunc_called(this, "_ZN7S5160C23v29Ev");}
void  S5160C2 ::v30(){vfunc_called(this, "_ZN7S5160C23v30Ev");}
void  S5160C2 ::v31(){vfunc_called(this, "_ZN7S5160C23v31Ev");}
void  S5160C2 ::v32(){vfunc_called(this, "_ZN7S5160C23v32Ev");}
S5160C2 ::~S5160C2(){ note_dtor("S5160C2", this);} // tgen
S5160C2 ::S5160C2(){ note_ctor("S5160C2", this);} // tgen

static void Test_S5160C2()
{
  extern Class_Descriptor cd_S5160C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S5160C2, buf);
    S5160C2 *dp, &lv = *(dp=new (buf) S5160C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S5160C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5160C2)");
    check_base_class_offset(lv, (S5160C3*), 0, "S5160C2");
    check_field_offset(lv, s5160c2f0, ABISELECT(72,48), "S5160C2.s5160c2f0");
    check_field_offset(lv, s5160c2f1, ABISELECT(104,64), "S5160C2.s5160c2f1");
    check_field_offset(lv, s5160c2f2, ABISELECT(105,65), "S5160C2.s5160c2f2");
    set_bf_and_test(lv, s5160c2f3, ABISELECT(106,66), 0, 3, 1, "S5160C2");
    set_bf_and_test(lv, s5160c2f3, ABISELECT(106,66), 0, 3, hide_sll(1LL<<2), "S5160C2");
    set_bf_and_test(lv, s5160c2f4, ABISELECT(106,66), 3, 1, 1, "S5160C2");
    set_bf_and_test(lv, s5160c2f5, ABISELECT(106,66), 4, 1, 1, "S5160C2");
    set_bf_and_test(lv, s5160c2f6, ABISELECT(106,66), 5, 1, 1, "S5160C2");
    set_bf_and_test(lv, s5160c2f7, ABISELECT(106,66), 6, 1, 1, "S5160C2");
    set_bf_and_test(lv, s5160c2f8, ABISELECT(106,66), 7, 1, 1, "S5160C2");
    check_field_offset(lv, s5160c2f9, ABISELECT(108,68), "S5160C2.s5160c2f9");
    check_field_offset(lv, s5160c2f10, ABISELECT(112,72), "S5160C2.s5160c2f10");
    check_field_offset(lv, s5160c2f11, ABISELECT(128,84), "S5160C2.s5160c2f11");
    test_class_info(&lv, &cd_S5160C2);
    dp->~S5160C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5160C2(Test_S5160C2, "S5160C2", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S5160C2C1Ev();
extern void _ZN7S5160C2D1Ev();
Name_Map name_map_S5160C2[] = {
  NSPAIR(_ZN7S5160C2C1Ev),
  NSPAIR(_ZN7S5160C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5160C3;
extern VTBL_ENTRY _ZTI7S5160C3[];
extern  VTBL_ENTRY _ZTV7S5160C3[];
static Base_Class bases_S5160C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5160C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5160C2[];
extern void _ZN7S5160C2D1Ev();
extern void _ZN7S5160C2D0Ev();
extern void _ZN7S5160C32v4Ev();
extern void _ZN7S5160C32v5Ev();
extern void _ZN7S5160C32v6Ev();
extern void _ZN7S5160C32v7Ev();
extern void _ZN7S5160C32v8Ev();
extern void _ZN7S5160C32v9Ev();
extern void _ZN7S5160C33v10Ev();
extern void _ZN7S5160C33v11Ev();
extern void _ZN7S5160C33v12Ev();
extern void _ZN7S5160C33v13Ev();
extern void _ZN7S5160C33v14Ev();
extern void _ZN7S5160C33v15Ev();
extern void _ZN7S5160C33v16Ev();
extern void _ZN7S5160C33v17Ev();
extern void _ZN7S5160C33v18Ev();
extern void _ZN7S5160C33v19Ev();
extern void _ZN7S5160C33v20Ev();
extern void _ZN7S5160C33v21Ev();
extern void _ZN7S5160C23v22Ev();
extern void _ZN7S5160C23v23Ev();
extern void _ZN7S5160C23v24Ev();
extern void _ZN7S5160C23v25Ev();
extern void _ZN7S5160C23v26Ev();
extern void _ZN7S5160C23v27Ev();
extern void _ZN7S5160C23v28Ev();
extern void _ZN7S5160C23v29Ev();
extern void _ZN7S5160C23v30Ev();
extern void _ZN7S5160C23v31Ev();
extern void _ZN7S5160C23v32Ev();
static  VTBL_ENTRY vtc_S5160C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5160C2[0]),
  (VTBL_ENTRY)&_ZN7S5160C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5160C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v22Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v23Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v24Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v25Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v26Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v27Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v28Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v29Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v30Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v31Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v32Ev,
};
extern VTBL_ENTRY _ZTI7S5160C2[];
extern  VTBL_ENTRY _ZTV7S5160C2[];
Class_Descriptor cd_S5160C2 = {  "S5160C2", // class name
  bases_S5160C2, 1,
  &(vtc_S5160C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S5160C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5160C2),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  S5160C1  : S5160C2 {
  int s5160c1f0;
  virtual  ~S5160C1(); // _ZN7S5160C1D1Ev
  virtual void  v1(); // _ZN7S5160C12v1Ev
  virtual void  v2(); // _ZN7S5160C12v2Ev
  virtual void  v3(); // _ZN7S5160C12v3Ev
  S5160C1(); // tgen
};
//SIG(1 S5160C1) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fp FC4{ m} Fi FC5{ BC6{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC7{ BC6} Fi} v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 Fp[4] FC8{ m} FC8 Fi:3 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC9{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1} FC10{ BC6} FC8} vd v1 v2 v3 Fi}


 S5160C1 ::~S5160C1(){ note_dtor("S5160C1", this);}
void  S5160C1 ::v1(){vfunc_called(this, "_ZN7S5160C12v1Ev");}
void  S5160C1 ::v2(){vfunc_called(this, "_ZN7S5160C12v2Ev");}
void  S5160C1 ::v3(){vfunc_called(this, "_ZN7S5160C12v3Ev");}
S5160C1 ::S5160C1(){ note_ctor("S5160C1", this);} // tgen

static void Test_S5160C1()
{
  extern Class_Descriptor cd_S5160C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,24)];
    init_test(&cd_S5160C1, buf);
    S5160C1 *dp, &lv = *(dp=new (buf) S5160C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,92), "sizeof(S5160C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5160C1)");
    check_base_class_offset(lv, (S5160C3*)(S5160C2*), 0, "S5160C1");
    check_base_class_offset(lv, (S5160C2*), 0, "S5160C1");
    check_field_offset(lv, s5160c1f0, ABISELECT(132,88), "S5160C1.s5160c1f0");
    test_class_info(&lv, &cd_S5160C1);
    dp->~S5160C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5160C1(Test_S5160C1, "S5160C1", ABISELECT(136,92));

#else // __cplusplus

extern void _ZN7S5160C1C1Ev();
extern void _ZN7S5160C1D1Ev();
Name_Map name_map_S5160C1[] = {
  NSPAIR(_ZN7S5160C1C1Ev),
  NSPAIR(_ZN7S5160C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5160C3;
extern VTBL_ENTRY _ZTI7S5160C3[];
extern  VTBL_ENTRY _ZTV7S5160C3[];
extern Class_Descriptor cd_S5160C2;
extern VTBL_ENTRY _ZTI7S5160C2[];
extern  VTBL_ENTRY _ZTV7S5160C2[];
static Base_Class bases_S5160C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5160C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5160C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5160C1[];
extern void _ZN7S5160C1D1Ev();
extern void _ZN7S5160C1D0Ev();
extern void _ZN7S5160C32v4Ev();
extern void _ZN7S5160C32v5Ev();
extern void _ZN7S5160C32v6Ev();
extern void _ZN7S5160C32v7Ev();
extern void _ZN7S5160C32v8Ev();
extern void _ZN7S5160C32v9Ev();
extern void _ZN7S5160C33v10Ev();
extern void _ZN7S5160C33v11Ev();
extern void _ZN7S5160C33v12Ev();
extern void _ZN7S5160C33v13Ev();
extern void _ZN7S5160C33v14Ev();
extern void _ZN7S5160C33v15Ev();
extern void _ZN7S5160C33v16Ev();
extern void _ZN7S5160C33v17Ev();
extern void _ZN7S5160C33v18Ev();
extern void _ZN7S5160C33v19Ev();
extern void _ZN7S5160C33v20Ev();
extern void _ZN7S5160C33v21Ev();
extern void _ZN7S5160C23v22Ev();
extern void _ZN7S5160C23v23Ev();
extern void _ZN7S5160C23v24Ev();
extern void _ZN7S5160C23v25Ev();
extern void _ZN7S5160C23v26Ev();
extern void _ZN7S5160C23v27Ev();
extern void _ZN7S5160C23v28Ev();
extern void _ZN7S5160C23v29Ev();
extern void _ZN7S5160C23v30Ev();
extern void _ZN7S5160C23v31Ev();
extern void _ZN7S5160C23v32Ev();
extern void _ZN7S5160C12v1Ev();
extern void _ZN7S5160C12v2Ev();
extern void _ZN7S5160C12v3Ev();
static  VTBL_ENTRY vtc_S5160C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5160C1[0]),
  (VTBL_ENTRY)&_ZN7S5160C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5160C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5160C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5160C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v22Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v23Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v24Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v25Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v26Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v27Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v28Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v29Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v30Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v31Ev,
  (VTBL_ENTRY)&_ZN7S5160C23v32Ev,
  (VTBL_ENTRY)&_ZN7S5160C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5160C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5160C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S5160C1[];
extern  VTBL_ENTRY _ZTV7S5160C1[];
Class_Descriptor cd_S5160C1 = {  "S5160C1", // class name
  bases_S5160C1, 2,
  &(vtc_S5160C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,92), // object size
  NSPAIRA(_ZTI7S5160C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5160C1),36, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10289C2  {
  void *s10289c2f0;
  ::S4227C37 s10289c2f1;
  int s10289c2f2;
  ::S9141C28_nt s10289c2f3;
  unsigned int s10289c2f4:1;
  unsigned int s10289c2f5:1;
  unsigned int s10289c2f6:1;
  unsigned int s10289c2f7:1;
  unsigned int s10289c2f8:1;
  unsigned int s10289c2f9:1;
  unsigned int s10289c2f10:1;
  int s10289c2f11:3;
  int s10289c2f12:3;
  ::S3214C23 s10289c2f13;
  int s10289c2f14;
  virtual  ~S10289C2(); // _ZN8S10289C2D1Ev
  virtual void  v9(); // _ZN8S10289C22v9Ev
  virtual void  v10(); // _ZN8S10289C23v10Ev
  virtual void  v11(); // _ZN8S10289C23v11Ev
  virtual void  v12(); // _ZN8S10289C23v12Ev
  virtual void  v13(); // _ZN8S10289C23v13Ev
  virtual void  v14(); // _ZN8S10289C23v14Ev
  virtual void  v15(); // _ZN8S10289C23v15Ev
  virtual void  v16(); // _ZN8S10289C23v16Ev
  virtual void  v17(); // _ZN8S10289C23v17Ev
  virtual void  v18(); // _ZN8S10289C23v18Ev
  virtual void  v19(); // _ZN8S10289C23v19Ev
  virtual void  v20(); // _ZN8S10289C23v20Ev
  virtual void  v21(); // _ZN8S10289C23v21Ev
  virtual void  v22(); // _ZN8S10289C23v22Ev
  virtual void  v23(); // _ZN8S10289C23v23Ev
  virtual void  v24(); // _ZN8S10289C23v24Ev
  virtual void  v25(); // _ZN8S10289C23v25Ev
  virtual void  v26(); // _ZN8S10289C23v26Ev
  S10289C2(); // tgen
};
//SIG(-1 S10289C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S10289C2 ::~S10289C2(){ note_dtor("S10289C2", this);}
void  S10289C2 ::v9(){vfunc_called(this, "_ZN8S10289C22v9Ev");}
void  S10289C2 ::v10(){vfunc_called(this, "_ZN8S10289C23v10Ev");}
void  S10289C2 ::v11(){vfunc_called(this, "_ZN8S10289C23v11Ev");}
void  S10289C2 ::v12(){vfunc_called(this, "_ZN8S10289C23v12Ev");}
void  S10289C2 ::v13(){vfunc_called(this, "_ZN8S10289C23v13Ev");}
void  S10289C2 ::v14(){vfunc_called(this, "_ZN8S10289C23v14Ev");}
void  S10289C2 ::v15(){vfunc_called(this, "_ZN8S10289C23v15Ev");}
void  S10289C2 ::v16(){vfunc_called(this, "_ZN8S10289C23v16Ev");}
void  S10289C2 ::v17(){vfunc_called(this, "_ZN8S10289C23v17Ev");}
void  S10289C2 ::v18(){vfunc_called(this, "_ZN8S10289C23v18Ev");}
void  S10289C2 ::v19(){vfunc_called(this, "_ZN8S10289C23v19Ev");}
void  S10289C2 ::v20(){vfunc_called(this, "_ZN8S10289C23v20Ev");}
void  S10289C2 ::v21(){vfunc_called(this, "_ZN8S10289C23v21Ev");}
void  S10289C2 ::v22(){vfunc_called(this, "_ZN8S10289C23v22Ev");}
void  S10289C2 ::v23(){vfunc_called(this, "_ZN8S10289C23v23Ev");}
void  S10289C2 ::v24(){vfunc_called(this, "_ZN8S10289C23v24Ev");}
void  S10289C2 ::v25(){vfunc_called(this, "_ZN8S10289C23v25Ev");}
void  S10289C2 ::v26(){vfunc_called(this, "_ZN8S10289C23v26Ev");}
S10289C2 ::S10289C2(){ note_ctor("S10289C2", this);} // tgen

static void Test_S10289C2()
{
  extern Class_Descriptor cd_S10289C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S10289C2, buf);
    S10289C2 *dp, &lv = *(dp=new (buf) S10289C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S10289C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10289C2)");
    check_field_offset(lv, s10289c2f0, ABISELECT(8,4), "S10289C2.s10289c2f0");
    check_field_offset(lv, s10289c2f1, ABISELECT(16,8), "S10289C2.s10289c2f1");
    check_field_offset(lv, s10289c2f2, ABISELECT(20,12), "S10289C2.s10289c2f2");
    check_field_offset(lv, s10289c2f3, ABISELECT(24,16), "S10289C2.s10289c2f3");
    set_bf_and_test(lv, s10289c2f4, ABISELECT(40,28), 0, 1, 1, "S10289C2");
    set_bf_and_test(lv, s10289c2f5, ABISELECT(40,28), 1, 1, 1, "S10289C2");
    set_bf_and_test(lv, s10289c2f6, ABISELECT(40,28), 2, 1, 1, "S10289C2");
    set_bf_and_test(lv, s10289c2f7, ABISELECT(40,28), 3, 1, 1, "S10289C2");
    set_bf_and_test(lv, s10289c2f8, ABISELECT(40,28), 4, 1, 1, "S10289C2");
    set_bf_and_test(lv, s10289c2f9, ABISELECT(40,28), 5, 1, 1, "S10289C2");
    set_bf_and_test(lv, s10289c2f10, ABISELECT(40,28), 6, 1, 1, "S10289C2");
    set_bf_and_test(lv, s10289c2f11, ABISELECT(40,28), 7, 3, 1, "S10289C2");
    set_bf_and_test(lv, s10289c2f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S10289C2");
    set_bf_and_test(lv, s10289c2f12, ABISELECT(41,29), 2, 3, 1, "S10289C2");
    set_bf_and_test(lv, s10289c2f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S10289C2");
    check_field_offset(lv, s10289c2f13, ABISELECT(48,32), "S10289C2.s10289c2f13");
    check_field_offset(lv, s10289c2f14, ABISELECT(64,44), "S10289C2.s10289c2f14");
    test_class_info(&lv, &cd_S10289C2);
    dp->~S10289C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10289C2(Test_S10289C2, "S10289C2", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN8S10289C2C1Ev();
extern void _ZN8S10289C2D1Ev();
Name_Map name_map_S10289C2[] = {
  NSPAIR(_ZN8S10289C2C1Ev),
  NSPAIR(_ZN8S10289C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10289C2[];
extern void _ZN8S10289C2D1Ev();
extern void _ZN8S10289C2D0Ev();
extern void _ZN8S10289C22v9Ev();
extern void _ZN8S10289C23v10Ev();
extern void _ZN8S10289C23v11Ev();
extern void _ZN8S10289C23v12Ev();
extern void _ZN8S10289C23v13Ev();
extern void _ZN8S10289C23v14Ev();
extern void _ZN8S10289C23v15Ev();
extern void _ZN8S10289C23v16Ev();
extern void _ZN8S10289C23v17Ev();
extern void _ZN8S10289C23v18Ev();
extern void _ZN8S10289C23v19Ev();
extern void _ZN8S10289C23v20Ev();
extern void _ZN8S10289C23v21Ev();
extern void _ZN8S10289C23v22Ev();
extern void _ZN8S10289C23v23Ev();
extern void _ZN8S10289C23v24Ev();
extern void _ZN8S10289C23v25Ev();
extern void _ZN8S10289C23v26Ev();
static  VTBL_ENTRY vtc_S10289C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10289C2[0]),
  (VTBL_ENTRY)&_ZN8S10289C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10289C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10289C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v21Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v22Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v23Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v24Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v25Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v26Ev,
};
extern VTBL_ENTRY _ZTI8S10289C2[];
extern  VTBL_ENTRY _ZTV8S10289C2[];
Class_Descriptor cd_S10289C2 = {  "S10289C2", // class name
  0,0,//no base classes
  &(vtc_S10289C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI8S10289C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10289C2),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10289C1  : S10289C2 {
  void *s10289c1f0;
  int s10289c1f1[2];
  unsigned int s10289c1f2:1;
  ::S8614C18_nt s10289c1f3;
  void *s10289c1f4[2];
  ::S8614C9 s10289c1f5;
  ::S8614C9 s10289c1f6;
  int s10289c1f7[3];
  virtual  ~S10289C1(); // _ZN8S10289C1D1Ev
  virtual void  v1(); // _ZN8S10289C12v1Ev
  virtual void  v2(); // _ZN8S10289C12v2Ev
  virtual void  v3(); // _ZN8S10289C12v3Ev
  virtual void  v4(); // _ZN8S10289C12v4Ev
  virtual void  v5(); // _ZN8S10289C12v5Ev
  virtual void  v6(); // _ZN8S10289C12v6Ev
  virtual void  v7(); // _ZN8S10289C12v7Ev
  virtual void  v8(); // _ZN8S10289C12v8Ev
  S10289C1(); // tgen
};
//SIG(1 S10289C1) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 Fp Fi[2] Fi:1 FC7{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1} Fp[2] FC8{ BC9{ v31 v32 v33 v34} v27 v28 v29 v30 Fp FC10{ m Fi[4]}} FC8 Fi[3]}


 S10289C1 ::~S10289C1(){ note_dtor("S10289C1", this);}
void  S10289C1 ::v1(){vfunc_called(this, "_ZN8S10289C12v1Ev");}
void  S10289C1 ::v2(){vfunc_called(this, "_ZN8S10289C12v2Ev");}
void  S10289C1 ::v3(){vfunc_called(this, "_ZN8S10289C12v3Ev");}
void  S10289C1 ::v4(){vfunc_called(this, "_ZN8S10289C12v4Ev");}
void  S10289C1 ::v5(){vfunc_called(this, "_ZN8S10289C12v5Ev");}
void  S10289C1 ::v6(){vfunc_called(this, "_ZN8S10289C12v6Ev");}
void  S10289C1 ::v7(){vfunc_called(this, "_ZN8S10289C12v7Ev");}
void  S10289C1 ::v8(){vfunc_called(this, "_ZN8S10289C12v8Ev");}
S10289C1 ::S10289C1(){ note_ctor("S10289C1", this);} // tgen

static void Test_S10289C1()
{
  extern Class_Descriptor cd_S10289C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,35)];
    init_test(&cd_S10289C1, buf);
    S10289C1 *dp, &lv = *(dp=new (buf) S10289C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,136), "sizeof(S10289C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10289C1)");
    check_base_class_offset(lv, (S10289C2*), 0, "S10289C1");
    check_field_offset(lv, s10289c1f0, ABISELECT(72,48), "S10289C1.s10289c1f0");
    check_field_offset(lv, s10289c1f1, ABISELECT(80,52), "S10289C1.s10289c1f1");
    set_bf_and_test(lv, s10289c1f2, ABISELECT(88,60), 0, 1, 1, "S10289C1");
    check_field_offset(lv, s10289c1f3, ABISELECT(92,64), "S10289C1.s10289c1f3");
    check_field_offset(lv, s10289c1f4, ABISELECT(96,68), "S10289C1.s10289c1f4");
    check_field_offset(lv, s10289c1f5, ABISELECT(112,76), "S10289C1.s10289c1f5");
    check_field_offset(lv, s10289c1f6, ABISELECT(144,100), "S10289C1.s10289c1f6");
    check_field_offset(lv, s10289c1f7, ABISELECT(176,124), "S10289C1.s10289c1f7");
    test_class_info(&lv, &cd_S10289C1);
    dp->~S10289C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10289C1(Test_S10289C1, "S10289C1", ABISELECT(192,136));

#else // __cplusplus

extern void _ZN8S10289C1C1Ev();
extern void _ZN8S10289C1D1Ev();
Name_Map name_map_S10289C1[] = {
  NSPAIR(_ZN8S10289C1C1Ev),
  NSPAIR(_ZN8S10289C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10289C2;
extern VTBL_ENTRY _ZTI8S10289C2[];
extern  VTBL_ENTRY _ZTV8S10289C2[];
static Base_Class bases_S10289C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10289C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10289C1[];
extern void _ZN8S10289C1D1Ev();
extern void _ZN8S10289C1D0Ev();
extern void _ZN8S10289C22v9Ev();
extern void _ZN8S10289C23v10Ev();
extern void _ZN8S10289C23v11Ev();
extern void _ZN8S10289C23v12Ev();
extern void _ZN8S10289C23v13Ev();
extern void _ZN8S10289C23v14Ev();
extern void _ZN8S10289C23v15Ev();
extern void _ZN8S10289C23v16Ev();
extern void _ZN8S10289C23v17Ev();
extern void _ZN8S10289C23v18Ev();
extern void _ZN8S10289C23v19Ev();
extern void _ZN8S10289C23v20Ev();
extern void _ZN8S10289C23v21Ev();
extern void _ZN8S10289C23v22Ev();
extern void _ZN8S10289C23v23Ev();
extern void _ZN8S10289C23v24Ev();
extern void _ZN8S10289C23v25Ev();
extern void _ZN8S10289C23v26Ev();
extern void _ZN8S10289C12v1Ev();
extern void _ZN8S10289C12v2Ev();
extern void _ZN8S10289C12v3Ev();
extern void _ZN8S10289C12v4Ev();
extern void _ZN8S10289C12v5Ev();
extern void _ZN8S10289C12v6Ev();
extern void _ZN8S10289C12v7Ev();
extern void _ZN8S10289C12v8Ev();
static  VTBL_ENTRY vtc_S10289C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10289C1[0]),
  (VTBL_ENTRY)&_ZN8S10289C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10289C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10289C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v21Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v22Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v23Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v24Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v25Ev,
  (VTBL_ENTRY)&_ZN8S10289C23v26Ev,
  (VTBL_ENTRY)&_ZN8S10289C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10289C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10289C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10289C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10289C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10289C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10289C12v7Ev,
  (VTBL_ENTRY)&_ZN8S10289C12v8Ev,
};
extern VTBL_ENTRY _ZTI8S10289C1[];
extern  VTBL_ENTRY _ZTV8S10289C1[];
Class_Descriptor cd_S10289C1 = {  "S10289C1", // class name
  bases_S10289C1, 1,
  &(vtc_S10289C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,136), // object size
  NSPAIRA(_ZTI8S10289C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10289C1),30, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8487C2  {
  void *s8487c2f0[2];
  int s8487c2f1;
  void *s8487c2f2;
  int s8487c2f3[3];
  ::S3214C13_nt s8487c2f4;
  unsigned int s8487c2f5:1;
  unsigned int s8487c2f6:1;
  unsigned int s8487c2f7:1;
  void *s8487c2f8[2];
  ::S9141C26 s8487c2f9;
  void *s8487c2f10;
  int s8487c2f11;
  ::S9141C26 s8487c2f12;
  int s8487c2f13[8];
  ::S3214C13_nt s8487c2f14;
  ::S9142C8_nt s8487c2f15;
  ::S9141C28_nt s8487c2f16;
  int s8487c2f17[2];
  void *s8487c2f18;
  int s8487c2f19;
  ::S3214C23 s8487c2f20;
  int s8487c2f21[2];
  void *s8487c2f22;
  int s8487c2f23;
  virtual  ~S8487C2(); // _ZN7S8487C2D1Ev
  virtual void  v1(); // _ZN7S8487C22v1Ev
  virtual void  v2(); // _ZN7S8487C22v2Ev
  virtual void  v3(); // _ZN7S8487C22v3Ev
  virtual void  v4(); // _ZN7S8487C22v4Ev
  virtual void  v5(); // _ZN7S8487C22v5Ev
  virtual void  v6(); // _ZN7S8487C22v6Ev
  virtual void  v7(); // _ZN7S8487C22v7Ev
  virtual void  v8(); // _ZN7S8487C22v8Ev
  virtual void  v9(); // _ZN7S8487C22v9Ev
  virtual void  v10(); // _ZN7S8487C23v10Ev
  virtual void  v11(); // _ZN7S8487C23v11Ev
  virtual void  v12(); // _ZN7S8487C23v12Ev
  virtual void  v13(); // _ZN7S8487C23v13Ev
  virtual void  v14(); // _ZN7S8487C23v14Ev
  virtual void  v15(); // _ZN7S8487C23v15Ev
  virtual void  v16(); // _ZN7S8487C23v16Ev
  virtual void  v17(); // _ZN7S8487C23v17Ev
  virtual void  v18(); // _ZN7S8487C23v18Ev
  virtual void  v19(); // _ZN7S8487C23v19Ev
  virtual void  v20(); // _ZN7S8487C23v20Ev
  virtual void  v21(); // _ZN7S8487C23v21Ev
  virtual void  v22(); // _ZN7S8487C23v22Ev
  virtual void  v23(); // _ZN7S8487C23v23Ev
  virtual void  v24(); // _ZN7S8487C23v24Ev
  virtual void  v25(); // _ZN7S8487C23v25Ev
  virtual void  v26(); // _ZN7S8487C23v26Ev
  virtual void  v27(); // _ZN7S8487C23v27Ev
  virtual void  v28(); // _ZN7S8487C23v28Ev
  virtual void  v29(); // _ZN7S8487C23v29Ev
  virtual void  v30(); // _ZN7S8487C23v30Ev
  virtual void  v31(); // _ZN7S8487C23v31Ev
  virtual void  v32(); // _ZN7S8487C23v32Ev
  virtual void  v33(); // _ZN7S8487C23v33Ev
  virtual void  v34(); // _ZN7S8487C23v34Ev
  virtual void  v35(); // _ZN7S8487C23v35Ev
  S8487C2(); // tgen
};
//SIG(-1 S8487C2) 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 Fp[2] Fi Fp Fi[3] FC2{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC3 Fi[8] FC2 FC7{ m FC2 FC2 Fc} FC5 Fi[2] Fp Fi FC8{ BC6} Fi[2] Fp Fi}


 S8487C2 ::~S8487C2(){ note_dtor("S8487C2", this);}
void  S8487C2 ::v1(){vfunc_called(this, "_ZN7S8487C22v1Ev");}
void  S8487C2 ::v2(){vfunc_called(this, "_ZN7S8487C22v2Ev");}
void  S8487C2 ::v3(){vfunc_called(this, "_ZN7S8487C22v3Ev");}
void  S8487C2 ::v4(){vfunc_called(this, "_ZN7S8487C22v4Ev");}
void  S8487C2 ::v5(){vfunc_called(this, "_ZN7S8487C22v5Ev");}
void  S8487C2 ::v6(){vfunc_called(this, "_ZN7S8487C22v6Ev");}
void  S8487C2 ::v7(){vfunc_called(this, "_ZN7S8487C22v7Ev");}
void  S8487C2 ::v8(){vfunc_called(this, "_ZN7S8487C22v8Ev");}
void  S8487C2 ::v9(){vfunc_called(this, "_ZN7S8487C22v9Ev");}
void  S8487C2 ::v10(){vfunc_called(this, "_ZN7S8487C23v10Ev");}
void  S8487C2 ::v11(){vfunc_called(this, "_ZN7S8487C23v11Ev");}
void  S8487C2 ::v12(){vfunc_called(this, "_ZN7S8487C23v12Ev");}
void  S8487C2 ::v13(){vfunc_called(this, "_ZN7S8487C23v13Ev");}
void  S8487C2 ::v14(){vfunc_called(this, "_ZN7S8487C23v14Ev");}
void  S8487C2 ::v15(){vfunc_called(this, "_ZN7S8487C23v15Ev");}
void  S8487C2 ::v16(){vfunc_called(this, "_ZN7S8487C23v16Ev");}
void  S8487C2 ::v17(){vfunc_called(this, "_ZN7S8487C23v17Ev");}
void  S8487C2 ::v18(){vfunc_called(this, "_ZN7S8487C23v18Ev");}
void  S8487C2 ::v19(){vfunc_called(this, "_ZN7S8487C23v19Ev");}
void  S8487C2 ::v20(){vfunc_called(this, "_ZN7S8487C23v20Ev");}
void  S8487C2 ::v21(){vfunc_called(this, "_ZN7S8487C23v21Ev");}
void  S8487C2 ::v22(){vfunc_called(this, "_ZN7S8487C23v22Ev");}
void  S8487C2 ::v23(){vfunc_called(this, "_ZN7S8487C23v23Ev");}
void  S8487C2 ::v24(){vfunc_called(this, "_ZN7S8487C23v24Ev");}
void  S8487C2 ::v25(){vfunc_called(this, "_ZN7S8487C23v25Ev");}
void  S8487C2 ::v26(){vfunc_called(this, "_ZN7S8487C23v26Ev");}
void  S8487C2 ::v27(){vfunc_called(this, "_ZN7S8487C23v27Ev");}
void  S8487C2 ::v28(){vfunc_called(this, "_ZN7S8487C23v28Ev");}
void  S8487C2 ::v29(){vfunc_called(this, "_ZN7S8487C23v29Ev");}
void  S8487C2 ::v30(){vfunc_called(this, "_ZN7S8487C23v30Ev");}
void  S8487C2 ::v31(){vfunc_called(this, "_ZN7S8487C23v31Ev");}
void  S8487C2 ::v32(){vfunc_called(this, "_ZN7S8487C23v32Ev");}
void  S8487C2 ::v33(){vfunc_called(this, "_ZN7S8487C23v33Ev");}
void  S8487C2 ::v34(){vfunc_called(this, "_ZN7S8487C23v34Ev");}
void  S8487C2 ::v35(){vfunc_called(this, "_ZN7S8487C23v35Ev");}
S8487C2 ::S8487C2(){ note_ctor("S8487C2", this);} // tgen

static void Test_S8487C2()
{
  extern Class_Descriptor cd_S8487C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,59)];
    init_test(&cd_S8487C2, buf);
    S8487C2 *dp, &lv = *(dp=new (buf) S8487C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,232), "sizeof(S8487C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8487C2)");
    check_field_offset(lv, s8487c2f0, ABISELECT(8,4), "S8487C2.s8487c2f0");
    check_field_offset(lv, s8487c2f1, ABISELECT(24,12), "S8487C2.s8487c2f1");
    check_field_offset(lv, s8487c2f2, ABISELECT(32,16), "S8487C2.s8487c2f2");
    check_field_offset(lv, s8487c2f3, ABISELECT(40,20), "S8487C2.s8487c2f3");
    check_field_offset(lv, s8487c2f4, ABISELECT(52,32), "S8487C2.s8487c2f4");
    set_bf_and_test(lv, s8487c2f5, ABISELECT(64,44), 0, 1, 1, "S8487C2");
    set_bf_and_test(lv, s8487c2f6, ABISELECT(64,44), 1, 1, 1, "S8487C2");
    set_bf_and_test(lv, s8487c2f7, ABISELECT(64,44), 2, 1, 1, "S8487C2");
    check_field_offset(lv, s8487c2f8, ABISELECT(72,48), "S8487C2.s8487c2f8");
    check_field_offset(lv, s8487c2f9, ABISELECT(88,56), "S8487C2.s8487c2f9");
    check_field_offset(lv, s8487c2f10, ABISELECT(120,76), "S8487C2.s8487c2f10");
    check_field_offset(lv, s8487c2f11, ABISELECT(128,80), "S8487C2.s8487c2f11");
    check_field_offset(lv, s8487c2f12, ABISELECT(136,84), "S8487C2.s8487c2f12");
    check_field_offset(lv, s8487c2f13, ABISELECT(168,104), "S8487C2.s8487c2f13");
    check_field_offset(lv, s8487c2f14, ABISELECT(200,136), "S8487C2.s8487c2f14");
    check_field_offset(lv, s8487c2f15, ABISELECT(212,148), "S8487C2.s8487c2f15");
    check_field_offset(lv, s8487c2f16, ABISELECT(240,176), "S8487C2.s8487c2f16");
    check_field_offset(lv, s8487c2f17, ABISELECT(256,188), "S8487C2.s8487c2f17");
    check_field_offset(lv, s8487c2f18, ABISELECT(264,196), "S8487C2.s8487c2f18");
    check_field_offset(lv, s8487c2f19, ABISELECT(272,200), "S8487C2.s8487c2f19");
    check_field_offset(lv, s8487c2f20, ABISELECT(280,204), "S8487C2.s8487c2f20");
    check_field_offset(lv, s8487c2f21, ABISELECT(296,216), "S8487C2.s8487c2f21");
    check_field_offset(lv, s8487c2f22, ABISELECT(304,224), "S8487C2.s8487c2f22");
    check_field_offset(lv, s8487c2f23, ABISELECT(312,228), "S8487C2.s8487c2f23");
    test_class_info(&lv, &cd_S8487C2);
    dp->~S8487C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8487C2(Test_S8487C2, "S8487C2", ABISELECT(320,232));

#else // __cplusplus

extern void _ZN7S8487C2C1Ev();
extern void _ZN7S8487C2D1Ev();
Name_Map name_map_S8487C2[] = {
  NSPAIR(_ZN7S8487C2C1Ev),
  NSPAIR(_ZN7S8487C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8487C2[];
extern void _ZN7S8487C2D1Ev();
extern void _ZN7S8487C2D0Ev();
extern void _ZN7S8487C22v1Ev();
extern void _ZN7S8487C22v2Ev();
extern void _ZN7S8487C22v3Ev();
extern void _ZN7S8487C22v4Ev();
extern void _ZN7S8487C22v5Ev();
extern void _ZN7S8487C22v6Ev();
extern void _ZN7S8487C22v7Ev();
extern void _ZN7S8487C22v8Ev();
extern void _ZN7S8487C22v9Ev();
extern void _ZN7S8487C23v10Ev();
extern void _ZN7S8487C23v11Ev();
extern void _ZN7S8487C23v12Ev();
extern void _ZN7S8487C23v13Ev();
extern void _ZN7S8487C23v14Ev();
extern void _ZN7S8487C23v15Ev();
extern void _ZN7S8487C23v16Ev();
extern void _ZN7S8487C23v17Ev();
extern void _ZN7S8487C23v18Ev();
extern void _ZN7S8487C23v19Ev();
extern void _ZN7S8487C23v20Ev();
extern void _ZN7S8487C23v21Ev();
extern void _ZN7S8487C23v22Ev();
extern void _ZN7S8487C23v23Ev();
extern void _ZN7S8487C23v24Ev();
extern void _ZN7S8487C23v25Ev();
extern void _ZN7S8487C23v26Ev();
extern void _ZN7S8487C23v27Ev();
extern void _ZN7S8487C23v28Ev();
extern void _ZN7S8487C23v29Ev();
extern void _ZN7S8487C23v30Ev();
extern void _ZN7S8487C23v31Ev();
extern void _ZN7S8487C23v32Ev();
extern void _ZN7S8487C23v33Ev();
extern void _ZN7S8487C23v34Ev();
extern void _ZN7S8487C23v35Ev();
static  VTBL_ENTRY vtc_S8487C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8487C2[0]),
  (VTBL_ENTRY)&_ZN7S8487C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8487C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v1Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v5Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v6Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v7Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v8Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v9Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v10Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v30Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v31Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v32Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v33Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v34Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v35Ev,
};
extern VTBL_ENTRY _ZTI7S8487C2[];
extern  VTBL_ENTRY _ZTV7S8487C2[];
Class_Descriptor cd_S8487C2 = {  "S8487C2", // class name
  0,0,//no base classes
  &(vtc_S8487C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,232), // object size
  NSPAIRA(_ZTI7S8487C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8487C2),39, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S8487C1  : S8487C2 {
  ~S8487C1(); // tgen
  S8487C1(); // tgen
};
//SIG(1 S8487C1) C1{ BC2{ 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 Fp[2] Fi Fp Fi[3] FC3{ m Fi[3]} Fi:1 Fi:1 Fi:1 Fp[2] FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} Fp Fi FC4 Fi[8] FC3 FC8{ m FC3 FC3 Fc} FC6 Fi[2] Fp Fi FC9{ BC7} Fi[2] Fp Fi}}


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

static void Test_S8487C1()
{
  extern Class_Descriptor cd_S8487C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(41,59)];
    init_test(&cd_S8487C1, buf);
    S8487C1 *dp, &lv = *(dp=new (buf) S8487C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(320,232), "sizeof(S8487C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8487C1)");
    check_base_class_offset(lv, (S8487C2*), 0, "S8487C1");
    test_class_info(&lv, &cd_S8487C1);
    dp->~S8487C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8487C1(Test_S8487C1, "S8487C1", ABISELECT(320,232));

#else // __cplusplus

extern void _ZN7S8487C1C1Ev();
extern void _ZN7S8487C1D1Ev();
Name_Map name_map_S8487C1[] = {
  NSPAIR(_ZN7S8487C1C1Ev),
  NSPAIR(_ZN7S8487C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8487C2;
extern VTBL_ENTRY _ZTI7S8487C2[];
extern  VTBL_ENTRY _ZTV7S8487C2[];
static Base_Class bases_S8487C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8487C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8487C1[];
extern void _ZN7S8487C1D1Ev();
extern void _ZN7S8487C1D0Ev();
extern void _ZN7S8487C22v1Ev();
extern void _ZN7S8487C22v2Ev();
extern void _ZN7S8487C22v3Ev();
extern void _ZN7S8487C22v4Ev();
extern void _ZN7S8487C22v5Ev();
extern void _ZN7S8487C22v6Ev();
extern void _ZN7S8487C22v7Ev();
extern void _ZN7S8487C22v8Ev();
extern void _ZN7S8487C22v9Ev();
extern void _ZN7S8487C23v10Ev();
extern void _ZN7S8487C23v11Ev();
extern void _ZN7S8487C23v12Ev();
extern void _ZN7S8487C23v13Ev();
extern void _ZN7S8487C23v14Ev();
extern void _ZN7S8487C23v15Ev();
extern void _ZN7S8487C23v16Ev();
extern void _ZN7S8487C23v17Ev();
extern void _ZN7S8487C23v18Ev();
extern void _ZN7S8487C23v19Ev();
extern void _ZN7S8487C23v20Ev();
extern void _ZN7S8487C23v21Ev();
extern void _ZN7S8487C23v22Ev();
extern void _ZN7S8487C23v23Ev();
extern void _ZN7S8487C23v24Ev();
extern void _ZN7S8487C23v25Ev();
extern void _ZN7S8487C23v26Ev();
extern void _ZN7S8487C23v27Ev();
extern void _ZN7S8487C23v28Ev();
extern void _ZN7S8487C23v29Ev();
extern void _ZN7S8487C23v30Ev();
extern void _ZN7S8487C23v31Ev();
extern void _ZN7S8487C23v32Ev();
extern void _ZN7S8487C23v33Ev();
extern void _ZN7S8487C23v34Ev();
extern void _ZN7S8487C23v35Ev();
static  VTBL_ENTRY vtc_S8487C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8487C1[0]),
  (VTBL_ENTRY)&_ZN7S8487C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8487C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v1Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v3Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v4Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v5Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v6Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v7Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v8Ev,
  (VTBL_ENTRY)&_ZN7S8487C22v9Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v10Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v11Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v12Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v13Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v14Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v15Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v16Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v17Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v18Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v19Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v20Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v21Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v22Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v23Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v24Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v25Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v26Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v27Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v28Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v29Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v30Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v31Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v32Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v33Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v34Ev,
  (VTBL_ENTRY)&_ZN7S8487C23v35Ev,
};
extern VTBL_ENTRY _ZTI7S8487C1[];
extern  VTBL_ENTRY _ZTV7S8487C1[];
Class_Descriptor cd_S8487C1 = {  "S8487C1", // class name
  bases_S8487C1, 1,
  &(vtc_S8487C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(320,232), // object size
  NSPAIRA(_ZTI7S8487C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8487C1),39, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S21124C5C1Ev();
extern void _ZN8S21124C5D1Ev();
Name_Map name_map_S21124C5[] = {
  NSPAIR(_ZN8S21124C5C1Ev),
  NSPAIR(_ZN8S21124C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21124C5[];
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY vtc_S21124C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C5[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
Class_Descriptor cd_S21124C5 = {  "S21124C5", // class name
  0,0,//no base classes
  &(vtc_S21124C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21124C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21124C5),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  S21124C6  : S21124C5 , virtual S20997C6 , S4227C37 {
  void *s21124c6f0[10];
  ~S21124C6(); // tgen
  S21124C6(); // tgen
};
//SIG(-1 S21124C6) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S21124C6()
{
  extern Class_Descriptor cd_S21124C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S21124C6, buf);
    S21124C6 *dp, &lv = *(dp=new (buf) S21124C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S21124C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21124C6)");
    check_base_class_offset(lv, (S21124C5*), 0, "S21124C6");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S21124C6");
    check_base_class_offset(lv, (S4227C37*), 0, "S21124C6");
    check_field_offset(lv, s21124c6f0, ABISELECT(8,4), "S21124C6.s21124c6f0");
    test_class_info(&lv, &cd_S21124C6);
    dp->~S21124C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C6(Test_S21124C6, "S21124C6", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN8S21124C6C1Ev();
extern void _ZN8S21124C6D1Ev();
Name_Map name_map_S21124C6[] = {
  NSPAIR(_ZN8S21124C6C1Ev),
  NSPAIR(_ZN8S21124C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S21124C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21124C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21124C6[];
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY vtc_S21124C6[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S21124C6[];
static  VTT_ENTRY vtt_S21124C6[] = {
  {&(_ZTV8S21124C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
Class_Descriptor cd_S21124C6 = {  "S21124C6", // class name
  bases_S21124C6, 3,
  &(vtc_S21124C6[0]), // expected_vtbl_contents
  &(vtt_S21124C6[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI8S21124C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21124C6),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21124C6),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  S21124C10  : virtual S21124C5 {
  ::S21124C6 s21124c10f0[9];
  ~S21124C10(); // tgen
  S21124C10(); // tgen
};
//SIG(-1 S21124C10) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S21124C10()
{
  extern Class_Descriptor cd_S21124C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S21124C10, buf);
    S21124C10 *dp, &lv = *(dp=new (buf) S21124C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S21124C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21124C10)");
    check_base_class_offset(lv, (S21124C5*), 0, "S21124C10");
    check_field_offset(lv, s21124c10f0, ABISELECT(8,4), "S21124C10.s21124c10f0");
    test_class_info(&lv, &cd_S21124C10);
    dp->~S21124C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C10(Test_S21124C10, "S21124C10", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN9S21124C10C1Ev();
extern void _ZN9S21124C10D1Ev();
Name_Map name_map_S21124C10[] = {
  NSPAIR(_ZN9S21124C10C1Ev),
  NSPAIR(_ZN9S21124C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
static Base_Class bases_S21124C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21124C5,    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 _ZTI9S21124C10[];
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY vtc_S21124C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S21124C10[];
static  VTT_ENTRY vtt_S21124C10[] = {
  {&(_ZTV9S21124C10[4]),  4,5},
  {&(_ZTV9S21124C10[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S21124C10[];
extern  VTBL_ENTRY _ZTV9S21124C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C10[];
Class_Descriptor cd_S21124C10 = {  "S21124C10", // class name
  bases_S21124C10, 1,
  &(vtc_S21124C10[0]), // expected_vtbl_contents
  &(vtt_S21124C10[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI9S21124C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21124C10),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21124C10),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  S21124C11  : virtual S20997C6 , virtual S21124C5 , S4227C37 {
  virtual  ~S21124C11(); // _ZN9S21124C11D2Ev
  S21124C11(); // tgen
};
//SIG(-1 S21124C11) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S21124C11()
{
  extern Class_Descriptor cd_S21124C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S21124C11, buf);
    S21124C11 *dp, &lv = *(dp=new (buf) S21124C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S21124C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21124C11)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S21124C11");
    check_base_class_offset(lv, (S21124C5*), 0, "S21124C11");
    check_base_class_offset(lv, (S4227C37*), 0, "S21124C11");
    test_class_info(&lv, &cd_S21124C11);
    dp->~S21124C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C11(Test_S21124C11, "S21124C11", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S21124C11C1Ev();
extern void _ZN9S21124C11D2Ev();
Name_Map name_map_S21124C11[] = {
  NSPAIR(_ZN9S21124C11C1Ev),
  NSPAIR(_ZN9S21124C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S21124C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21124C5,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21124C11[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY vtc_S21124C11[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern VTBL_ENTRY _ZTV9S21124C11[];
static  VTT_ENTRY vtt_S21124C11[] = {
  {&(_ZTV9S21124C11[5]),  5,8},
  {&(_ZTV9S21124C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
Class_Descriptor cd_S21124C11 = {  "S21124C11", // class name
  bases_S21124C11, 3,
  &(vtc_S21124C11[0]), // expected_vtbl_contents
  &(vtt_S21124C11[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S21124C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21124C11),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21124C11),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  S21124C12  : S21124C11 {
  virtual  ~S21124C12(); // _ZN9S21124C12D2Ev
  S21124C12(); // tgen
};
//SIG(-1 S21124C12) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S21124C12()
{
  extern Class_Descriptor cd_S21124C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S21124C12, buf);
    S21124C12 *dp, &lv = *(dp=new (buf) S21124C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S21124C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21124C12)");
    check_base_class_offset(lv, (S20997C6*)(S21124C11*), ABISELECT(8,4), "S21124C12");
    check_base_class_offset(lv, (S21124C5*)(S21124C11*), 0, "S21124C12");
    check_base_class_offset(lv, (S4227C37*)(S21124C11*), 0, "S21124C12");
    check_base_class_offset(lv, (S21124C11*), 0, "S21124C12");
    test_class_info(&lv, &cd_S21124C12);
    dp->~S21124C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C12(Test_S21124C12, "S21124C12", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S21124C12C1Ev();
extern void _ZN9S21124C12D2Ev();
Name_Map name_map_S21124C12[] = {
  NSPAIR(_ZN9S21124C12C1Ev),
  NSPAIR(_ZN9S21124C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
static Base_Class bases_S21124C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C5,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21124C12[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C12D1Ev();
extern void _ZN9S21124C12D0Ev();
static  VTBL_ENTRY vtc_S21124C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S21124C12[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C11__9S21124C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
static  VTT_ENTRY vtt_S21124C12[] = {
  {&(_ZTV9S21124C12[5]),  5,8},
  {&(_tg__ZTV9S21124C11__9S21124C12[5]),  5,8},
  {&(_tg__ZTV9S21124C11__9S21124C12[5]),  5,8},
  {&(_ZTV9S21124C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21124C12[];
extern  VTBL_ENTRY _ZTV9S21124C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C12[];
Class_Descriptor cd_S21124C12 = {  "S21124C12", // class name
  bases_S21124C12, 4,
  &(vtc_S21124C12[0]), // expected_vtbl_contents
  &(vtt_S21124C12[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S21124C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21124C12),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21124C12),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  S21124C9  : virtual S4227C37 , S21124C10 , S21124C11 , S21124C12 {
  ~S21124C9(); // tgen
  S21124C9(); // tgen
};
//SIG(-1 S21124C9) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S21124C9()
{
  extern Class_Descriptor cd_S21124C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S21124C9, buf);
    S21124C9 *dp, &lv = *(dp=new (buf) S21124C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S21124C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21124C9)");
    /*is_ambiguous_... S21124C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S21124C9");
    check_base_class_offset(lv, (S21124C5*)(S21124C10*), 0, "S21124C9");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C11*), 0, "S21124C9");
    check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C12*), 0, "S21124C9");
    check_base_class_offset(lv, (S21124C10*), 0, "S21124C9");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C11*), ABISELECT(1176,768), "S21124C9");
    check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C12*), ABISELECT(1176,768), "S21124C9");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C11*), ABISELECT(1160,760), "S21124C9");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C11*), ABISELECT(1160,760), "S21124C9");
    check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C12*), ABISELECT(1168,764), "S21124C9");
    check_base_class_offset(lv, (S21124C11*)(S21124C12*), ABISELECT(1168,764), "S21124C9");
    check_base_class_offset(lv, (S21124C12*), ABISELECT(1168,764), "S21124C9");
    test_class_info(&lv, &cd_S21124C9);
    dp->~S21124C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C9(Test_S21124C9, "S21124C9", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN8S21124C9C1Ev();
extern void _ZN8S21124C9D1Ev();
Name_Map name_map_S21124C9[] = {
  NSPAIR(_ZN8S21124C9C1Ev),
  NSPAIR(_ZN8S21124C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C10;
extern VTBL_ENTRY _ZTI9S21124C10[];
extern  VTBL_ENTRY _ZTV9S21124C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S21124C12;
extern VTBL_ENTRY _ZTI9S21124C12[];
extern  VTBL_ENTRY _ZTV9S21124C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C12[];
static Base_Class bases_S21124C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21124C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21124C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21124C12,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21124C9[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C9D1Ev();
extern void _ZN8S21124C9D0Ev();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev)();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev)();
static  VTBL_ENTRY vtc_S21124C9[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21124C9[];
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C10__8S21124C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C11__8S21124C9[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C11__8S21124C9[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C12D1Ev();
extern void _ZN9S21124C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C12__8S21124C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C119S21124C12__A1__8S21124C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C119S21124C12__A1__8S21124C9[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C12__8S21124C9[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
static  VTT_ENTRY vtt_S21124C9[] = {
  {&(_ZTV8S21124C9[6]),  6,25},
  {&(_tg__ZTV9S21124C10__8S21124C9[4]),  4,5},
  {&(_tg__ZTV9S21124C10__8S21124C9[4]),  4,5},
  {&(_tg__ZTV9S21124C11__8S21124C9[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C11__8S21124C9[3]),  3,4},
  {&(_tg__ZTV9S21124C12__8S21124C9[5]),  5,8},
  {&(_tg__ZTV9S21124C119S21124C12__A1__8S21124C9[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C119S21124C12__A1__8S21124C9[3]),  3,4},
  {&(_tg__ZTV8S21124C5__9S21124C12__8S21124C9[3]),  3,4},
  {&(_ZTV8S21124C9[6]),  6,25},
  {&(_ZTV8S21124C9[14]),  14,25},
  {&(_ZTV8S21124C9[22]),  22,25},
};
extern VTBL_ENTRY _ZTI8S21124C9[];
extern  VTBL_ENTRY _ZTV8S21124C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C9[];
Class_Descriptor cd_S21124C9 = {  "S21124C9", // class name
  bases_S21124C9, 9,
  &(vtc_S21124C9[0]), // expected_vtbl_contents
  &(vtt_S21124C9[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI8S21124C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21124C9),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21124C9),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  S21124C4  : virtual S21124C5 , S21124C6 , virtual S21124C9 {
  virtual  ~S21124C4(); // _ZN8S21124C4D2Ev
  S21124C4(); // tgen
};
//SIG(-1 S21124C4) C1{ VBC2{ v1} BC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC5 BC7{ VBC2 FC3[9]} BC8{ VBC4 VBC2 BC5 vd} BC9{ BC8 vd}} vd}


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

static void Test_S21124C4()
{
  extern Class_Descriptor cd_S21124C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(165,215)];
    init_test(&cd_S21124C4, buf);
    S21124C4 *dp, &lv = *(dp=new (buf) S21124C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1312,856), "sizeof(S21124C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21124C4)");
    /*is_ambiguous_... S21124C4::S21124C5 */ AMB_check_base_class_offset(lv, (S21124C5*), ABISELECT(128,84), "S21124C4");
    check_base_class_offset(lv, (S21124C5*)(S21124C10*)(S21124C9*), ABISELECT(128,84), "S21124C4");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C9*), ABISELECT(128,84), "S21124C4");
    check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(128,84), "S21124C4");
    check_base_class_offset(lv, (S21124C5*)(S21124C6*), 0, "S21124C4");
    check_base_class_offset(lv, (S20997C6*)(S21124C6*), ABISELECT(88,44), "S21124C4");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C9*), ABISELECT(88,44), "S21124C4");
    check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(88,44), "S21124C4");
    check_base_class_offset(lv, (S4227C37*)(S21124C6*), 0, "S21124C4");
    check_base_class_offset(lv, (S21124C6*), 0, "S21124C4");
    /*is_ambiguous_... S21124C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C9*), ABISELECT(1304,852), "S21124C4");
    check_base_class_offset(lv, (S21124C10*)(S21124C9*), ABISELECT(128,84), "S21124C4");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C9*), ABISELECT(1288,844), "S21124C4");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C11*)(S21124C9*), ABISELECT(1288,844), "S21124C4");
    check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1296,848), "S21124C4");
    check_base_class_offset(lv, (S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1296,848), "S21124C4");
    check_base_class_offset(lv, (S21124C12*)(S21124C9*), ABISELECT(1296,848), "S21124C4");
    check_base_class_offset(lv, (S21124C9*), ABISELECT(128,84), "S21124C4");
    test_class_info(&lv, &cd_S21124C4);
    dp->~S21124C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C4(Test_S21124C4, "S21124C4", ABISELECT(1312,856));

#else // __cplusplus

extern void _ZN8S21124C4C1Ev();
extern void _ZN8S21124C4D2Ev();
Name_Map name_map_S21124C4[] = {
  NSPAIR(_ZN8S21124C4C1Ev),
  NSPAIR(_ZN8S21124C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C10;
extern VTBL_ENTRY _ZTI9S21124C10[];
extern  VTBL_ENTRY _ZTV9S21124C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S21124C12;
extern VTBL_ENTRY _ZTI9S21124C12[];
extern  VTBL_ENTRY _ZTV9S21124C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C12[];
extern Class_Descriptor cd_S21124C9;
extern VTBL_ENTRY _ZTI8S21124C9[];
extern  VTBL_ENTRY _ZTV8S21124C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C9[];
static Base_Class bases_S21124C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21124C5,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21124C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21124C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C10,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1288,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(1288,844), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(1296,848), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21124C12,    ABISELECT(1296,848), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S21124C9,    ABISELECT(128,84), //bcp->offset
    9, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21124C4[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C4D1Ev();
extern void _ZN8S21124C4D0Ev();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21124C4D1Ev,_ZThn84_N8S21124C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21124C4D0Ev,_ZThn84_N8S21124C4D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev)();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY vtc_S21124C4[] = {
  ABISELECT(1304,852),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D0Ev,
  ABISELECT(-128,-84),
  -40,
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21124C4[];
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C6__8S21124C4[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C9D1Ev();
extern void _ZN8S21124C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C4[] = {
  -40,
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C108S21124C9__8S21124C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C4[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C118S21124C9__8S21124C4[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C12D1Ev();
extern void _ZN9S21124C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C4[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C119S21124C128S21124C9__A1__8S21124C4[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__8S21124C4[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C128S21124C9__8S21124C4[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C11__8S21124C9__8S21124C4[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C12__8S21124C9__8S21124C4[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev),
};
static  VTT_ENTRY vtt_S21124C4[] = {
  {&(_ZTV8S21124C4[6]),  6,35},
  {&(_tg__ZTV8S21124C6__8S21124C4[3]),  3,4},
  {&(_ZTV8S21124C4[16]),  16,35},
  {&(_ZTV8S21124C4[16]),  16,35},
  {&(_ZTV8S21124C4[24]),  24,35},
  {&(_ZTV8S21124C4[32]),  32,35},
  {&(_tg__ZTV8S21124C9__8S21124C4[6]),  6,9},
  {&(_tg__ZTV9S21124C108S21124C9__8S21124C4[4]),  4,5},
  {&(_tg__ZTV9S21124C108S21124C9__8S21124C4[4]),  4,5},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C4[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C118S21124C9__8S21124C4[3]),  3,4},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C4[5]),  5,8},
  {&(_tg__ZTV9S21124C119S21124C128S21124C9__A1__8S21124C4[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__8S21124C4[3]),  3,4},
  {&(_tg__ZTV8S21124C5__9S21124C128S21124C9__8S21124C4[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C4[6]),  6,9},
  {&(_tg__ZTV9S21124C11__8S21124C9__8S21124C4[5]),  5,8},
  {&(_tg__ZTV9S21124C12__8S21124C9__8S21124C4[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21124C4[];
extern  VTBL_ENTRY _ZTV8S21124C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C4[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21124C4D0Ev,_ZThn84_N8S21124C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21124C4D1Ev,_ZThn84_N8S21124C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21124C4 = {  "S21124C4", // class name
  bases_S21124C4, 13,
  &(vtc_S21124C4[0]), // expected_vtbl_contents
  &(vtt_S21124C4[0]), // expected_vtt_contents
  ABISELECT(1312,856), // object size
  NSPAIRA(_ZTI8S21124C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21124C4),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21124C4),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21124C14  : S20997C6 , S21124C5 {
  ~S21124C14(); // tgen
  S21124C14(); // tgen
};
//SIG(-1 S21124C14) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S21124C14()
{
  extern Class_Descriptor cd_S21124C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S21124C14, buf);
    S21124C14 *dp, &lv = *(dp=new (buf) S21124C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S21124C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21124C14)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S21124C14");
    check_base_class_offset(lv, (S21124C5*), 0, "S21124C14");
    test_class_info(&lv, &cd_S21124C14);
    dp->~S21124C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C14(Test_S21124C14, "S21124C14", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S21124C14C1Ev();
extern void _ZN9S21124C14D1Ev();
Name_Map name_map_S21124C14[] = {
  NSPAIR(_ZN9S21124C14C1Ev),
  NSPAIR(_ZN9S21124C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
static Base_Class bases_S21124C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21124C5,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21124C14[];
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY vtc_S21124C14[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C14[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern VTBL_ENTRY _ZTI9S21124C14[];
extern  VTBL_ENTRY _ZTV9S21124C14[];
Class_Descriptor cd_S21124C14 = {  "S21124C14", // class name
  bases_S21124C14, 2,
  &(vtc_S21124C14[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S21124C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21124C14),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21124C13  : S21124C14 {
  long double s21124c13f0;
  ~S21124C13(); // tgen
  S21124C13(); // tgen
};
//SIG(-1 S21124C13) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} FD}


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

static void Test_S21124C13()
{
  extern Class_Descriptor cd_S21124C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,15)];
    init_test(&cd_S21124C13, buf);
    S21124C13 *dp, &lv = *(dp=new (buf) S21124C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S21124C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21124C13)");
    check_base_class_offset(lv, (S20997C6*)(S21124C14*), ABISELECT(8,4), "S21124C13");
    check_base_class_offset(lv, (S21124C5*)(S21124C14*), 0, "S21124C13");
    check_base_class_offset(lv, (S21124C14*), 0, "S21124C13");
    check_field_offset(lv, s21124c13f0, ABISELECT(48,44), "S21124C13.s21124c13f0");
    test_class_info(&lv, &cd_S21124C13);
    dp->~S21124C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C13(Test_S21124C13, "S21124C13", ABISELECT(64,56));

#else // __cplusplus

extern void _ZN9S21124C13C1Ev();
extern void _ZN9S21124C13D1Ev();
Name_Map name_map_S21124C13[] = {
  NSPAIR(_ZN9S21124C13C1Ev),
  NSPAIR(_ZN9S21124C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C14;
extern VTBL_ENTRY _ZTI9S21124C14[];
extern  VTBL_ENTRY _ZTV9S21124C14[];
static Base_Class bases_S21124C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21124C5,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21124C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S21124C13[];
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY vtc_S21124C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C13[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern VTBL_ENTRY _ZTI9S21124C13[];
extern  VTBL_ENTRY _ZTV9S21124C13[];
Class_Descriptor cd_S21124C13 = {  "S21124C13", // class name
  bases_S21124C13, 3,
  &(vtc_S21124C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,56), // object size
  NSPAIRA(_ZTI9S21124C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21124C13),3, //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  S21124C3  : virtual S21124C4 , S21124C13 {
  ~S21124C3(); // tgen
  S21124C3(); // tgen
};
//SIG(-1 S21124C3) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} BC11{ BC12{ BC5 BC3} FD}}


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

static void Test_S21124C3()
{
  extern Class_Descriptor cd_S21124C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S21124C3, buf);
    S21124C3 *dp, &lv = *(dp=new (buf) S21124C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S21124C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21124C3)");
    /*is_ambiguous_... S21124C4::S21124C5 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C4*), ABISELECT(192,140), "S21124C3");
    check_base_class_offset(lv, (S21124C5*)(S21124C10*)(S21124C9*), ABISELECT(192,140), "S21124C3");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C9*), ABISELECT(192,140), "S21124C3");
    check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(192,140), "S21124C3");
    check_base_class_offset(lv, (S21124C5*)(S21124C6*)(S21124C4*), ABISELECT(64,56), "S21124C3");
    check_base_class_offset(lv, (S20997C6*)(S21124C6*)(S21124C4*), ABISELECT(152,100), "S21124C3");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C9*), ABISELECT(152,100), "S21124C3");
    check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(152,100), "S21124C3");
    check_base_class_offset(lv, (S4227C37*)(S21124C6*)(S21124C4*), ABISELECT(64,56), "S21124C3");
    check_base_class_offset(lv, (S21124C6*)(S21124C4*), ABISELECT(64,56), "S21124C3");
    /*is_ambiguous_... S21124C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C9*), 0, "S21124C3");
    check_base_class_offset(lv, (S21124C10*)(S21124C9*), ABISELECT(192,140), "S21124C3");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C9*), ABISELECT(1352,900), "S21124C3");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C11*)(S21124C9*), ABISELECT(1352,900), "S21124C3");
    check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1360,904), "S21124C3");
    check_base_class_offset(lv, (S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1360,904), "S21124C3");
    check_base_class_offset(lv, (S21124C12*)(S21124C9*), ABISELECT(1360,904), "S21124C3");
    check_base_class_offset(lv, (S21124C9*)(S21124C4*), ABISELECT(192,140), "S21124C3");
    check_base_class_offset(lv, (S21124C4*), ABISELECT(64,56), "S21124C3");
    check_base_class_offset(lv, (S20997C6*)(S21124C14*)(S21124C13*), ABISELECT(8,4), "S21124C3");
    check_base_class_offset(lv, (S21124C5*)(S21124C14*)(S21124C13*), 0, "S21124C3");
    check_base_class_offset(lv, (S21124C14*)(S21124C13*), 0, "S21124C3");
    check_base_class_offset(lv, (S21124C13*), 0, "S21124C3");
    test_class_info(&lv, &cd_S21124C3);
    dp->~S21124C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C3(Test_S21124C3, "S21124C3", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN8S21124C3C1Ev();
extern void _ZN8S21124C3D1Ev();
Name_Map name_map_S21124C3[] = {
  NSPAIR(_ZN8S21124C3C1Ev),
  NSPAIR(_ZN8S21124C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C10;
extern VTBL_ENTRY _ZTI9S21124C10[];
extern  VTBL_ENTRY _ZTV9S21124C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S21124C12;
extern VTBL_ENTRY _ZTI9S21124C12[];
extern  VTBL_ENTRY _ZTV9S21124C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C12[];
extern Class_Descriptor cd_S21124C9;
extern VTBL_ENTRY _ZTI8S21124C9[];
extern  VTBL_ENTRY _ZTV8S21124C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C9[];
extern Class_Descriptor cd_S21124C4;
extern VTBL_ENTRY _ZTI8S21124C4[];
extern  VTBL_ENTRY _ZTV8S21124C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C14;
extern VTBL_ENTRY _ZTI9S21124C14[];
extern  VTBL_ENTRY _ZTV9S21124C14[];
extern Class_Descriptor cd_S21124C13;
extern VTBL_ENTRY _ZTI9S21124C13[];
extern  VTBL_ENTRY _ZTV9S21124C13[];
static Base_Class bases_S21124C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21124C5,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21124C5,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S21124C6,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C10,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21124C11,    ABISELECT(1352,900), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21124C12,    ABISELECT(1360,904), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21124C9,    ABISELECT(192,140), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21124C4,    ABISELECT(64,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21124C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21124C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21124C3[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C3D1Ev();
extern void _ZN8S21124C3D0Ev();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21124C3D1Ev,_ZThn56_N8S21124C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S21124C3D0Ev,_ZThn56_N8S21124C3D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZThn192_N8S21124C3D1Ev,_ZThn140_N8S21124C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev)();
extern void ABISELECT(_ZThn192_N8S21124C3D0Ev,_ZThn140_N8S21124C3D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C3D1Ev,_ZTvn760_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C3D0Ev,_ZTvn760_n28_N8S21124C3D0Ev)();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C3D1Ev,_ZTvn764_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C3D0Ev,_ZTvn764_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY vtc_S21124C3[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C3D0Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C3D1Ev,_ZTvn760_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C3D0Ev,_ZTvn760_n28_N8S21124C3D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C3D1Ev,_ZTvn764_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C3D0Ev,_ZTvn764_n28_N8S21124C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21124C3[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C4D1Ev();
extern void _ZN8S21124C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C4__8S21124C3[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C68S21124C4__8S21124C3[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21124C4D1Ev,_ZThn84_N8S21124C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21124C4D0Ev,_ZThn84_N8S21124C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C4__8S21124C3[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C4__8S21124C3[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C4__8S21124C3[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C9D1Ev();
extern void _ZN8S21124C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C3[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C108S21124C9__8S21124C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C3[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C118S21124C9__8S21124C3[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C12D1Ev();
extern void _ZN9S21124C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C3[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C119S21124C128S21124C9__A1__8S21124C3[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__8S21124C3[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C128S21124C9__8S21124C3[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C11__8S21124C9__8S21124C3[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C12__8S21124C9__8S21124C3[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev),
};
static  VTT_ENTRY vtt_S21124C3[] = {
  {&(_ZTV8S21124C3[7]),  7,47},
  {&(_ZTV8S21124C3[18]),  18,47},
  {&(_ZTV8S21124C3[28]),  28,47},
  {&(_ZTV8S21124C3[28]),  28,47},
  {&(_ZTV8S21124C3[36]),  36,47},
  {&(_ZTV8S21124C3[44]),  44,47},
  {&(_tg__ZTV8S21124C4__8S21124C3[6]),  6,9},
  {&(_tg__ZTV8S21124C68S21124C4__8S21124C3[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C4__8S21124C3[7]),  7,10},
  {&(_tg__ZTV8S21124C9__8S21124C4__8S21124C3[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C4__8S21124C3[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C4__8S21124C3[5]),  5,8},
  {&(_tg__ZTV8S21124C9__8S21124C3[6]),  6,9},
  {&(_tg__ZTV9S21124C108S21124C9__8S21124C3[4]),  4,5},
  {&(_tg__ZTV9S21124C108S21124C9__8S21124C3[4]),  4,5},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C3[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C118S21124C9__8S21124C3[3]),  3,4},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C3[5]),  5,8},
  {&(_tg__ZTV9S21124C119S21124C128S21124C9__A1__8S21124C3[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__8S21124C3[3]),  3,4},
  {&(_tg__ZTV8S21124C5__9S21124C128S21124C9__8S21124C3[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C3[6]),  6,9},
  {&(_tg__ZTV9S21124C11__8S21124C9__8S21124C3[5]),  5,8},
  {&(_tg__ZTV9S21124C12__8S21124C9__8S21124C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21124C3[];
extern  VTBL_ENTRY _ZTV8S21124C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C3[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21124C4D0Ev,_ZThn84_N8S21124C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21124C4D1Ev,_ZThn84_N8S21124C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21124C3D0Ev,_ZThn140_N8S21124C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21124C3D1Ev,_ZThn140_N8S21124C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21124C3D0Ev,_ZThn56_N8S21124C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21124C3D1Ev,_ZThn56_N8S21124C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21124C3 = {  "S21124C3", // class name
  bases_S21124C3, 18,
  &(vtc_S21124C3[0]), // expected_vtbl_contents
  &(vtt_S21124C3[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI8S21124C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21124C3),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21124C3),24, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21124C2  : virtual S21124C3 {
  ~S21124C2(); // tgen
  S21124C2(); // tgen
};
//SIG(-1 S21124C2) C1{ VBC2{ VBC3{ VBC4{ v1} BC5{ BC4 VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC7 BC9{ VBC4 FC5[9]} BC10{ VBC6 VBC4 BC7 vd} BC11{ BC10 vd}} vd} BC12{ BC13{ BC6 BC4} FD}}}


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

static void Test_S21124C2()
{
  extern Class_Descriptor cd_S21124C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,229)];
    init_test(&cd_S21124C2, buf);
    S21124C2 *dp, &lv = *(dp=new (buf) S21124C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,912), "sizeof(S21124C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21124C2)");
    /*is_ambiguous_... S21124C4::S21124C5 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C4*), 0, "S21124C2");
    check_base_class_offset(lv, (S21124C5*)(S21124C10*)(S21124C9*), 0, "S21124C2");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C9*), 0, "S21124C2");
    check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C12*)(S21124C9*), 0, "S21124C2");
    check_base_class_offset(lv, (S21124C5*)(S21124C6*)(S21124C4*), ABISELECT(80,60), "S21124C2");
    check_base_class_offset(lv, (S20997C6*)(S21124C6*)(S21124C4*), ABISELECT(168,104), "S21124C2");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C9*), ABISELECT(168,104), "S21124C2");
    check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(168,104), "S21124C2");
    check_base_class_offset(lv, (S4227C37*)(S21124C6*)(S21124C4*), ABISELECT(80,60), "S21124C2");
    check_base_class_offset(lv, (S21124C6*)(S21124C4*), ABISELECT(80,60), "S21124C2");
    /*is_ambiguous_... S21124C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C9*), 0, "S21124C2");
    check_base_class_offset(lv, (S21124C10*)(S21124C9*), ABISELECT(208,144), "S21124C2");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C9*), ABISELECT(1368,904), "S21124C2");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C11*)(S21124C9*), ABISELECT(1368,904), "S21124C2");
    check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1376,908), "S21124C2");
    check_base_class_offset(lv, (S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1376,908), "S21124C2");
    check_base_class_offset(lv, (S21124C12*)(S21124C9*), ABISELECT(1376,908), "S21124C2");
    check_base_class_offset(lv, (S21124C9*)(S21124C4*), ABISELECT(208,144), "S21124C2");
    check_base_class_offset(lv, (S21124C4*)(S21124C3*), ABISELECT(80,60), "S21124C2");
    check_base_class_offset(lv, (S20997C6*)(S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(24,8), "S21124C2");
    check_base_class_offset(lv, (S21124C5*)(S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(16,4), "S21124C2");
    check_base_class_offset(lv, (S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(16,4), "S21124C2");
    check_base_class_offset(lv, (S21124C13*)(S21124C3*), ABISELECT(16,4), "S21124C2");
    check_base_class_offset(lv, (S21124C3*), ABISELECT(16,4), "S21124C2");
    test_class_info(&lv, &cd_S21124C2);
    dp->~S21124C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C2(Test_S21124C2, "S21124C2", ABISELECT(1392,912));

#else // __cplusplus

extern void _ZN8S21124C2C1Ev();
extern void _ZN8S21124C2D1Ev();
Name_Map name_map_S21124C2[] = {
  NSPAIR(_ZN8S21124C2C1Ev),
  NSPAIR(_ZN8S21124C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C10;
extern VTBL_ENTRY _ZTI9S21124C10[];
extern  VTBL_ENTRY _ZTV9S21124C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S21124C12;
extern VTBL_ENTRY _ZTI9S21124C12[];
extern  VTBL_ENTRY _ZTV9S21124C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C12[];
extern Class_Descriptor cd_S21124C9;
extern VTBL_ENTRY _ZTI8S21124C9[];
extern  VTBL_ENTRY _ZTV8S21124C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C9[];
extern Class_Descriptor cd_S21124C4;
extern VTBL_ENTRY _ZTI8S21124C4[];
extern  VTBL_ENTRY _ZTV8S21124C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C14;
extern VTBL_ENTRY _ZTI9S21124C14[];
extern  VTBL_ENTRY _ZTV9S21124C14[];
extern Class_Descriptor cd_S21124C13;
extern VTBL_ENTRY _ZTI9S21124C13[];
extern  VTBL_ENTRY _ZTV9S21124C13[];
extern Class_Descriptor cd_S21124C3;
extern VTBL_ENTRY _ZTI8S21124C3[];
extern  VTBL_ENTRY _ZTV8S21124C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C3[];
static Base_Class bases_S21124C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21124C5,    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
    6, //immediately_derived
  0, 1},
  {&cd_S21124C5,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(168,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21124C6,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C10,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1368,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(1368,904), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1376,908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(1376,908), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21124C12,    ABISELECT(1376,908), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21124C9,    ABISELECT(208,144), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21124C4,    ABISELECT(80,60), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(24,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C5,    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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21124C14,    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
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21124C13,    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
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21124C3,    ABISELECT(16,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //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 _ZTI8S21124C2[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C2D1Ev();
extern void _ZN8S21124C2D0Ev();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21124C2D1Ev,_ZTv0_n36_N8S21124C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21124C2D1Ev,_ZThn4_N8S21124C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21124C2D0Ev,_ZTv0_n36_N8S21124C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S21124C2D0Ev,_ZThn4_N8S21124C2D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21124C2D1Ev,_ZTv0_n32_N8S21124C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21124C2D1Ev,_ZThn60_N8S21124C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21124C2D0Ev,_ZTv0_n32_N8S21124C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21124C2D0Ev,_ZThn60_N8S21124C2D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C2D1Ev,_ZTv0_n28_N8S21124C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S21124C2D1Ev,_ZThn144_N8S21124C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21124C2D0Ev,_ZTv0_n28_N8S21124C2D0Ev)();
extern void ABISELECT(_ZThn208_N8S21124C2D0Ev,_ZThn144_N8S21124C2D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C2D1Ev,_ZTvn760_n28_N8S21124C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C2D0Ev,_ZTvn760_n28_N8S21124C2D0Ev)();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C2D1Ev,_ZTvn764_n28_N8S21124C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C2D0Ev,_ZTvn764_n28_N8S21124C2D0Ev)();
static  VTBL_ENTRY vtc_S21124C2[] = {
  0,
  ABISELECT(208,144),
  ABISELECT(168,104),
  0,
  ABISELECT(80,60),
  ABISELECT(16,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C2D0Ev,
  ABISELECT(-16,-4),
  0,
  ABISELECT(-16,-4),
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(-16,-4),
  ABISELECT(64,56),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21124C2D1Ev,_ZTv0_n36_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21124C2D0Ev,_ZTv0_n36_N8S21124C2D0Ev),
  ABISELECT(-80,-60),
  0,
  ABISELECT(-80,-60),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C2D1Ev,_ZTv0_n32_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C2D0Ev,_ZTv0_n32_N8S21124C2D0Ev),
  ABISELECT(-208,-144),
  -40,
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C2D1Ev,_ZTv0_n28_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C2D0Ev,_ZTv0_n28_N8S21124C2D0Ev),
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1368,-904),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C2D1Ev,_ZTvn760_n28_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C2D0Ev,_ZTvn760_n28_N8S21124C2D0Ev),
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1376,-908),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C2D1Ev,_ZTvn764_n28_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C2D0Ev,_ZTvn764_n28_N8S21124C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21124C2[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C3D1Ev();
extern void _ZN8S21124C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C3__8S21124C2[] = {
  ABISELECT(-16,-4),
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(-16,-4),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C3D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21124C3D1Ev,_ZThn56_N8S21124C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S21124C3D0Ev,_ZThn56_N8S21124C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C4__8S21124C3__8S21124C2[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-80,-60),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C3__8S21124C2[] = {
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZThn192_N8S21124C3D1Ev,_ZThn140_N8S21124C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev)();
extern void ABISELECT(_ZThn192_N8S21124C3D0Ev,_ZThn140_N8S21124C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C3__8S21124C2[] = {
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C3D1Ev,_ZTvn760_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C3D0Ev,_ZTvn760_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C3__8S21124C2[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C3D1Ev,_ZTvn760_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C3D0Ev,_ZTvn760_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C3D1Ev,_ZTvn764_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C3D0Ev,_ZTvn764_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C3__8S21124C2[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C3D1Ev,_ZTvn764_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C3D0Ev,_ZTvn764_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C4D1Ev();
extern void _ZN8S21124C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C4__8S21124C2[] = {
  ABISELECT(-80,-60),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C68S21124C4__8S21124C2[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C4__8S21124C2[] = {
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21124C4D1Ev,_ZThn84_N8S21124C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21124C4D0Ev,_ZThn84_N8S21124C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C4__8S21124C2[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C4__8S21124C2[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C4__8S21124C2[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C9D1Ev();
extern void _ZN8S21124C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C2[] = {
  -40,
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C108S21124C9__8S21124C2[] = {
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C108S21124C9__8S21124C2[] = {
  0,
  ABISELECT(208,144),
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C2[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C118S21124C9__8S21124C2[] = {
  0,
  ABISELECT(1368,904),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C12D1Ev();
extern void _ZN9S21124C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C2[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C119S21124C128S21124C9__A1__8S21124C2[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__8S21124C2[] = {
  0,
  ABISELECT(1376,908),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C128S21124C9__8S21124C2[] = {
  0,
  ABISELECT(1376,908),
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C9__8S21124C2[] = {
  0,
  ABISELECT(208,144),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C11__8S21124C9__8S21124C2[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C12__8S21124C9__8S21124C2[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev),
};
static  VTT_ENTRY vtt_S21124C2[] = {
  {&(_ZTV8S21124C2[9]),  9,61},
  {&(_ZTV8S21124C2[21]),  21,61},
  {&(_ZTV8S21124C2[32]),  32,61},
  {&(_ZTV8S21124C2[9]),  9,61},
  {&(_ZTV8S21124C2[42]),  42,61},
  {&(_ZTV8S21124C2[50]),  50,61},
  {&(_ZTV8S21124C2[58]),  58,61},
  {&(_tg__ZTV8S21124C3__8S21124C2[7]),  7,10},
  {&(_tg__ZTV8S21124C4__8S21124C3__8S21124C2[8]),  8,11},
  {&(_tg__ZTV8S21124C5__8S21124C3__8S21124C2[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C3__8S21124C2[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C3__8S21124C2[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C3__8S21124C2[5]),  5,8},
  {&(_tg__ZTV8S21124C4__8S21124C2[6]),  6,9},
  {&(_tg__ZTV8S21124C68S21124C4__8S21124C2[3]),  3,4},
  {&(_tg__ZTV8S21124C5__8S21124C4__8S21124C2[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C4__8S21124C2[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C4__8S21124C2[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C4__8S21124C2[5]),  5,8},
  {&(_tg__ZTV8S21124C9__8S21124C2[6]),  6,9},
  {&(_tg__ZTV9S21124C108S21124C9__8S21124C2[4]),  4,5},
  {&(_tg__ZTV8S21124C5__9S21124C108S21124C9__8S21124C2[3]),  3,4},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C2[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C118S21124C9__8S21124C2[3]),  3,4},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C2[5]),  5,8},
  {&(_tg__ZTV9S21124C119S21124C128S21124C9__A1__8S21124C2[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__8S21124C2[3]),  3,4},
  {&(_tg__ZTV8S21124C5__9S21124C128S21124C9__8S21124C2[3]),  3,4},
  {&(_tg__ZTV8S21124C5__8S21124C9__8S21124C2[3]),  3,4},
  {&(_tg__ZTV9S21124C11__8S21124C9__8S21124C2[5]),  5,8},
  {&(_tg__ZTV9S21124C12__8S21124C9__8S21124C2[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21124C2[];
extern  VTBL_ENTRY _ZTV8S21124C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C2[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21124C4D0Ev,_ZThn84_N8S21124C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21124C4D1Ev,_ZThn84_N8S21124C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21124C3D0Ev,_ZThn140_N8S21124C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21124C3D1Ev,_ZThn140_N8S21124C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21124C3D0Ev,_ZThn56_N8S21124C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21124C3D1Ev,_ZThn56_N8S21124C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C2D0Ev,_ZTv0_n28_N8S21124C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21124C2D0Ev,_ZThn144_N8S21124C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C2D1Ev,_ZTv0_n28_N8S21124C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21124C2D1Ev,_ZThn144_N8S21124C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C2D0Ev,_ZTv0_n32_N8S21124C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21124C2D0Ev,_ZThn60_N8S21124C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C2D1Ev,_ZTv0_n32_N8S21124C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21124C2D1Ev,_ZThn60_N8S21124C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21124C2D0Ev,_ZTv0_n36_N8S21124C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21124C2D0Ev,_ZThn4_N8S21124C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21124C2D1Ev,_ZTv0_n36_N8S21124C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21124C2D1Ev,_ZThn4_N8S21124C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21124C2 = {  "S21124C2", // class name
  bases_S21124C2, 19,
  &(vtc_S21124C2[0]), // expected_vtbl_contents
  &(vtt_S21124C2[0]), // expected_vtt_contents
  ABISELECT(1392,912), // object size
  NSPAIRA(_ZTI8S21124C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21124C2),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21124C2),31, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21124C17  : virtual S20997C6 , virtual S21124C9 , virtual S21124C3 {
  void *s21124c17f0;
  virtual  ~S21124C17(); // _ZN9S21124C17D2Ev
  S21124C17(); // tgen
};
//SIG(-1 S21124C17) C1{ VBC2{ m FL[5]} VBC3{ VBC4{ m} BC5{ VBC6{ v1} FC7{ BC6 VBC2 BC4 Fp[10]}[9]} BC8{ VBC2 VBC6 BC4 vd} BC9{ BC8 vd}} VBC10{ VBC11{ VBC6 BC7 VBC3 vd} BC12{ BC13{ BC2 BC6} FD}} vd Fp}


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

static void Test_S21124C17()
{
  extern Class_Descriptor cd_S21124C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,230)];
    init_test(&cd_S21124C17, buf);
    S21124C17 *dp, &lv = *(dp=new (buf) S21124C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,916), "sizeof(S21124C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21124C17)");
    /*is_ambiguous_... S21124C17::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(16,8), "S21124C17");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C9*), ABISELECT(16,8), "S21124C17");
    check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(16,8), "S21124C17");
    check_base_class_offset(lv, (S20997C6*)(S21124C6*)(S21124C4*), ABISELECT(16,8), "S21124C17");
    /*is_ambiguous_... S21124C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C9*), 0, "S21124C17");
    check_base_class_offset(lv, (S21124C5*)(S21124C10*)(S21124C9*), 0, "S21124C17");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C9*), 0, "S21124C17");
    check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C12*)(S21124C9*), 0, "S21124C17");
    /*is_ambiguous_... S21124C4::S21124C5 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C4*), 0, "S21124C17");
    check_base_class_offset(lv, (S21124C10*)(S21124C9*), ABISELECT(56,48), "S21124C17");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C9*), ABISELECT(1216,808), "S21124C17");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C11*)(S21124C9*), ABISELECT(1216,808), "S21124C17");
    check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1224,812), "S21124C17");
    check_base_class_offset(lv, (S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1224,812), "S21124C17");
    check_base_class_offset(lv, (S21124C12*)(S21124C9*), ABISELECT(1224,812), "S21124C17");
    check_base_class_offset(lv, (S21124C9*), ABISELECT(56,48), "S21124C17");
    check_base_class_offset(lv, (S21124C9*)(S21124C4*), ABISELECT(56,48), "S21124C17");
    check_base_class_offset(lv, (S21124C5*)(S21124C6*)(S21124C4*), ABISELECT(1296,872), "S21124C17");
    check_base_class_offset(lv, (S4227C37*)(S21124C6*)(S21124C4*), ABISELECT(1296,872), "S21124C17");
    check_base_class_offset(lv, (S21124C6*)(S21124C4*), ABISELECT(1296,872), "S21124C17");
    check_base_class_offset(lv, (S21124C4*)(S21124C3*), ABISELECT(1296,872), "S21124C17");
    check_base_class_offset(lv, (S20997C6*)(S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(1240,820), "S21124C17");
    check_base_class_offset(lv, (S21124C5*)(S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(1232,816), "S21124C17");
    check_base_class_offset(lv, (S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(1232,816), "S21124C17");
    check_base_class_offset(lv, (S21124C13*)(S21124C3*), ABISELECT(1232,816), "S21124C17");
    check_base_class_offset(lv, (S21124C3*), ABISELECT(1232,816), "S21124C17");
    check_field_offset(lv, s21124c17f0, ABISELECT(8,4), "S21124C17.s21124c17f0");
    test_class_info(&lv, &cd_S21124C17);
    dp->~S21124C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C17(Test_S21124C17, "S21124C17", ABISELECT(1392,916));

#else // __cplusplus

extern void _ZN9S21124C17C1Ev();
extern void _ZN9S21124C17D2Ev();
Name_Map name_map_S21124C17[] = {
  NSPAIR(_ZN9S21124C17C1Ev),
  NSPAIR(_ZN9S21124C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C10;
extern VTBL_ENTRY _ZTI9S21124C10[];
extern  VTBL_ENTRY _ZTV9S21124C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S21124C12;
extern VTBL_ENTRY _ZTI9S21124C12[];
extern  VTBL_ENTRY _ZTV9S21124C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C12[];
extern Class_Descriptor cd_S21124C9;
extern VTBL_ENTRY _ZTI8S21124C9[];
extern  VTBL_ENTRY _ZTV8S21124C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C9[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S21124C4;
extern VTBL_ENTRY _ZTI8S21124C4[];
extern  VTBL_ENTRY _ZTV8S21124C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C14;
extern VTBL_ENTRY _ZTI9S21124C14[];
extern  VTBL_ENTRY _ZTV9S21124C14[];
extern Class_Descriptor cd_S21124C13;
extern VTBL_ENTRY _ZTI9S21124C13[];
extern  VTBL_ENTRY _ZTV9S21124C13[];
extern Class_Descriptor cd_S21124C3;
extern VTBL_ENTRY _ZTI8S21124C3[];
extern  VTBL_ENTRY _ZTV8S21124C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C3[];
static Base_Class bases_S21124C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21124C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21124C10,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1216,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21124C11,    ABISELECT(1216,808), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1224,812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(1224,812), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21124C12,    ABISELECT(1224,812), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21124C9,    ABISELECT(56,48), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21124C5,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_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_S4227C37,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C6,    ABISELECT(1296,872), //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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21124C4,    ABISELECT(1296,872), //bcp->offset
    50, //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
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1240,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C5,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21124C14,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21124C13,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21124C3,    ABISELECT(1232,816), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21124C17[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C17D1Ev();
extern void _ZN9S21124C17D0Ev();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21124C17D1Ev,_ZTv0_n28_N9S21124C17D1Ev)();
extern void ABISELECT(_ZThn56_N9S21124C17D1Ev,_ZThn48_N9S21124C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21124C17D0Ev,_ZTv0_n28_N9S21124C17D0Ev)();
extern void ABISELECT(_ZThn56_N9S21124C17D0Ev,_ZThn48_N9S21124C17D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C17D1Ev,_ZTvn760_n28_N9S21124C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C17D0Ev,_ZTvn760_n28_N9S21124C17D0Ev)();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C17D1Ev,_ZTvn764_n28_N9S21124C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C17D0Ev,_ZTvn764_n28_N9S21124C17D0Ev)();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21124C17D1Ev,_ZTv0_n36_N9S21124C17D1Ev)();
extern void ABISELECT(_ZThn1232_N9S21124C17D1Ev,_ZThn816_N9S21124C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21124C17D0Ev,_ZTv0_n36_N9S21124C17D0Ev)();
extern void ABISELECT(_ZThn1232_N9S21124C17D0Ev,_ZThn816_N9S21124C17D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21124C17D1Ev,_ZTv0_n32_N9S21124C17D1Ev)();
extern void ABISELECT(_ZThn1296_N9S21124C17D1Ev,_ZThn872_N9S21124C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21124C17D0Ev,_ZTv0_n32_N9S21124C17D0Ev)();
extern void ABISELECT(_ZThn1296_N9S21124C17D0Ev,_ZThn872_N9S21124C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21124C17[] = {
  ABISELECT(1296,872),
  ABISELECT(1232,816),
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C17D0Ev,
  ABISELECT(-56,-48),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C17D1Ev,_ZTv0_n28_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C17D0Ev,_ZTv0_n28_N9S21124C17D0Ev),
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(-1216,-808),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C17D1Ev,_ZTvn760_n28_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C17D0Ev,_ZTvn760_n28_N9S21124C17D0Ev),
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(-1224,-812),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C17D1Ev,_ZTvn764_n28_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C17D0Ev,_ZTvn764_n28_N9S21124C17D0Ev),
  ABISELECT(-1232,-816),
  0,
  ABISELECT(-1232,-816),
  ABISELECT(-1176,-768),
  ABISELECT(-1216,-808),
  ABISELECT(-1232,-816),
  ABISELECT(64,56),
  ABISELECT(-1232,-816),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C17D1Ev,_ZTv0_n36_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C17D0Ev,_ZTv0_n36_N9S21124C17D0Ev),
  ABISELECT(-1296,-872),
  0,
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  ABISELECT(-1296,-872),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C17D1Ev,_ZTv0_n32_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C17D0Ev,_ZTv0_n32_N9S21124C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S21124C17[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C9D1Ev();
extern void _ZN8S21124C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C9__9S21124C17[] = {
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C108S21124C9__9S21124C17[] = {
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C108S21124C9__9S21124C17[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__9S21124C17[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C118S21124C9__9S21124C17[] = {
  0,
  ABISELECT(1216,808),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C12D1Ev();
extern void _ZN9S21124C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__9S21124C17[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C119S21124C128S21124C9__A1__9S21124C17[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__9S21124C17[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C128S21124C9__9S21124C17[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C9__9S21124C17[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C11__8S21124C9__9S21124C17[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C12__8S21124C9__9S21124C17[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C3D1Ev();
extern void _ZN8S21124C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C3__9S21124C17[] = {
  ABISELECT(-1232,-816),
  ABISELECT(-1176,-768),
  ABISELECT(-1216,-808),
  ABISELECT(-1232,-816),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C3D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21124C3D1Ev,_ZThn56_N8S21124C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S21124C3D0Ev,_ZThn56_N8S21124C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C4__8S21124C3__9S21124C17[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C3__9S21124C17[] = {
  0,
  ABISELECT(1232,816),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C3__9S21124C17[] = {
  ABISELECT(1176,768),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C3D1Ev,_ZTvn760_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C3D0Ev,_ZTvn760_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C3__9S21124C17[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C3D1Ev,_ZTvn760_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C3D0Ev,_ZTvn760_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C3D1Ev,_ZTvn764_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C3D0Ev,_ZTvn764_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C3__9S21124C17[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C3D1Ev,_ZTvn764_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C3D0Ev,_ZTvn764_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C4D1Ev();
extern void _ZN8S21124C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C4__9S21124C17[] = {
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C68S21124C4__9S21124C17[] = {
  ABISELECT(-1280,-864),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C4__9S21124C17[] = {
  0,
  ABISELECT(1296,872),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C4__9S21124C17[] = {
  ABISELECT(1240,824),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C4__9S21124C17[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C4__9S21124C17[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev),
};
static  VTT_ENTRY vtt_S21124C17[] = {
  {&(_ZTV9S21124C17[9]),  9,61},
  {&(_ZTV9S21124C17[19]),  19,61},
  {&(_ZTV9S21124C17[9]),  9,61},
  {&(_ZTV9S21124C17[27]),  27,61},
  {&(_ZTV9S21124C17[35]),  35,61},
  {&(_ZTV9S21124C17[47]),  47,61},
  {&(_ZTV9S21124C17[58]),  58,61},
  {&(_tg__ZTV8S21124C9__9S21124C17[6]),  6,9},
  {&(_tg__ZTV9S21124C108S21124C9__9S21124C17[4]),  4,5},
  {&(_tg__ZTV8S21124C5__9S21124C108S21124C9__9S21124C17[3]),  3,4},
  {&(_tg__ZTV9S21124C118S21124C9__9S21124C17[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C118S21124C9__9S21124C17[3]),  3,4},
  {&(_tg__ZTV9S21124C128S21124C9__9S21124C17[5]),  5,8},
  {&(_tg__ZTV9S21124C119S21124C128S21124C9__A1__9S21124C17[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__9S21124C17[3]),  3,4},
  {&(_tg__ZTV8S21124C5__9S21124C128S21124C9__9S21124C17[3]),  3,4},
  {&(_tg__ZTV8S21124C5__8S21124C9__9S21124C17[3]),  3,4},
  {&(_tg__ZTV9S21124C11__8S21124C9__9S21124C17[5]),  5,8},
  {&(_tg__ZTV9S21124C12__8S21124C9__9S21124C17[5]),  5,8},
  {&(_tg__ZTV8S21124C3__9S21124C17[7]),  7,10},
  {&(_tg__ZTV8S21124C4__8S21124C3__9S21124C17[8]),  8,11},
  {&(_tg__ZTV8S21124C5__8S21124C3__9S21124C17[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C3__9S21124C17[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C3__9S21124C17[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C3__9S21124C17[5]),  5,8},
  {&(_tg__ZTV8S21124C4__9S21124C17[6]),  6,9},
  {&(_tg__ZTV8S21124C68S21124C4__9S21124C17[3]),  3,4},
  {&(_tg__ZTV8S21124C5__8S21124C4__9S21124C17[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C4__9S21124C17[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C4__9S21124C17[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C4__9S21124C17[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21124C17[];
extern  VTBL_ENTRY _ZTV9S21124C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C17[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21124C3D0Ev,_ZThn56_N8S21124C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21124C3D1Ev,_ZThn56_N8S21124C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C17D0Ev,_ZTv0_n32_N9S21124C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N9S21124C17D0Ev,_ZThn872_N9S21124C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C17D1Ev,_ZTv0_n32_N9S21124C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N9S21124C17D1Ev,_ZThn872_N9S21124C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C17D0Ev,_ZTv0_n36_N9S21124C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N9S21124C17D0Ev,_ZThn816_N9S21124C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C17D1Ev,_ZTv0_n36_N9S21124C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N9S21124C17D1Ev,_ZThn816_N9S21124C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C17D0Ev,_ZTv0_n28_N9S21124C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21124C17D0Ev,_ZThn48_N9S21124C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C17D1Ev,_ZTv0_n28_N9S21124C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21124C17D1Ev,_ZThn48_N9S21124C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21124C17 = {  "S21124C17", // class name
  bases_S21124C17, 19,
  &(vtc_S21124C17[0]), // expected_vtbl_contents
  &(vtt_S21124C17[0]), // expected_vtt_contents
  ABISELECT(1392,916), // object size
  NSPAIRA(_ZTI9S21124C17),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21124C17),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21124C17),31, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21124C16  : virtual S21124C6 , virtual S21124C17 {
  ~S21124C16(); // tgen
  S21124C16(); // tgen
};
//SIG(-1 S21124C16) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC4 VBC7{ VBC5 BC8{ VBC3 FC2[9]} BC9{ VBC4 VBC3 BC5 vd} BC10{ BC9 vd}} VBC11{ VBC12{ VBC3 BC2 VBC7 vd} BC13{ BC14{ BC4 BC3} FD}} vd Fp}}


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

static void Test_S21124C16()
{
  extern Class_Descriptor cd_S21124C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(94,242)];
    init_test(&cd_S21124C16, buf);
    S21124C16 *dp, &lv = *(dp=new (buf) S21124C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1488,964), "sizeof(S21124C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21124C16)");
    /*is_ambiguous_... S21124C16::S21124C6 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C6*), ABISELECT(8,4), "S21124C16");
    /*is_ambiguous_... S21124C16::S21124C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C6*), ABISELECT(96,48), "S21124C16");
    /*is_ambiguous_... S21124C17::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C17*), ABISELECT(96,48), "S21124C16");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C9*), ABISELECT(96,48), "S21124C16");
    check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(96,48), "S21124C16");
    check_base_class_offset(lv, (S20997C6*)(S21124C6*)(S21124C4*), ABISELECT(96,48), "S21124C16");
    /*is_ambiguous_... S21124C16::S21124C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C6*), ABISELECT(8,4), "S21124C16");
    /*is_ambiguous_... S21124C16::S21124C6 */ AMB_check_base_class_offset(lv, (S21124C6*), ABISELECT(8,4), "S21124C16");
    /*is_ambiguous_... S21124C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C9*), 0, "S21124C16");
    check_base_class_offset(lv, (S21124C5*)(S21124C10*)(S21124C9*), 0, "S21124C16");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C9*), 0, "S21124C16");
    check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C12*)(S21124C9*), 0, "S21124C16");
    /*is_ambiguous_... S21124C4::S21124C5 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C4*), 0, "S21124C16");
    check_base_class_offset(lv, (S21124C10*)(S21124C9*), ABISELECT(152,96), "S21124C16");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C9*), ABISELECT(1312,856), "S21124C16");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C11*)(S21124C9*), ABISELECT(1312,856), "S21124C16");
    check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1320,860), "S21124C16");
    check_base_class_offset(lv, (S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1320,860), "S21124C16");
    check_base_class_offset(lv, (S21124C12*)(S21124C9*), ABISELECT(1320,860), "S21124C16");
    check_base_class_offset(lv, (S21124C9*)(S21124C17*), ABISELECT(152,96), "S21124C16");
    check_base_class_offset(lv, (S21124C9*)(S21124C4*), ABISELECT(152,96), "S21124C16");
    check_base_class_offset(lv, (S21124C5*)(S21124C6*)(S21124C4*), ABISELECT(1392,920), "S21124C16");
    check_base_class_offset(lv, (S4227C37*)(S21124C6*)(S21124C4*), ABISELECT(1392,920), "S21124C16");
    check_base_class_offset(lv, (S21124C6*)(S21124C4*), ABISELECT(1392,920), "S21124C16");
    check_base_class_offset(lv, (S21124C4*)(S21124C3*), ABISELECT(1392,920), "S21124C16");
    check_base_class_offset(lv, (S20997C6*)(S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(1336,868), "S21124C16");
    check_base_class_offset(lv, (S21124C5*)(S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(1328,864), "S21124C16");
    check_base_class_offset(lv, (S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(1328,864), "S21124C16");
    check_base_class_offset(lv, (S21124C13*)(S21124C3*), ABISELECT(1328,864), "S21124C16");
    check_base_class_offset(lv, (S21124C3*)(S21124C17*), ABISELECT(1328,864), "S21124C16");
    check_base_class_offset(lv, (S21124C17*), ABISELECT(136,88), "S21124C16");
    test_class_info(&lv, &cd_S21124C16);
    dp->~S21124C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C16(Test_S21124C16, "S21124C16", ABISELECT(1488,964));

#else // __cplusplus

extern void _ZN9S21124C16C1Ev();
extern void _ZN9S21124C16D1Ev();
Name_Map name_map_S21124C16[] = {
  NSPAIR(_ZN9S21124C16C1Ev),
  NSPAIR(_ZN9S21124C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C10;
extern VTBL_ENTRY _ZTI9S21124C10[];
extern  VTBL_ENTRY _ZTV9S21124C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S21124C12;
extern VTBL_ENTRY _ZTI9S21124C12[];
extern  VTBL_ENTRY _ZTV9S21124C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C12[];
extern Class_Descriptor cd_S21124C9;
extern VTBL_ENTRY _ZTI8S21124C9[];
extern  VTBL_ENTRY _ZTV8S21124C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C9[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S21124C4;
extern VTBL_ENTRY _ZTI8S21124C4[];
extern  VTBL_ENTRY _ZTV8S21124C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C14;
extern VTBL_ENTRY _ZTI9S21124C14[];
extern  VTBL_ENTRY _ZTV9S21124C14[];
extern Class_Descriptor cd_S21124C13;
extern VTBL_ENTRY _ZTI9S21124C13[];
extern  VTBL_ENTRY _ZTV9S21124C13[];
extern Class_Descriptor cd_S21124C3;
extern VTBL_ENTRY _ZTI8S21124C3[];
extern  VTBL_ENTRY _ZTV8S21124C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C3[];
extern Class_Descriptor cd_S21124C17;
extern VTBL_ENTRY _ZTI9S21124C17[];
extern  VTBL_ENTRY _ZTV9S21124C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C17[];
static Base_Class bases_S21124C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21124C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C6,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C5,    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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21124C10,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(1312,856), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(1320,860), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21124C12,    ABISELECT(1320,860), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21124C9,    ABISELECT(152,96), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S21124C5,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21124C6,    ABISELECT(1392,920), //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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21124C4,    ABISELECT(1392,920), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21124C5,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21124C14,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21124C13,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21124C3,    ABISELECT(1328,864), //bcp->offset
    58, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21124C17,    ABISELECT(136,88), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21124C16[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C16D1Ev();
extern void _ZN9S21124C16D0Ev();
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S21124C16D1Ev,_ZTv0_n40_N9S21124C16D1Ev)();
extern void ABISELECT(_ZThn136_N9S21124C16D1Ev,_ZThn88_N9S21124C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21124C16D0Ev,_ZTv0_n40_N9S21124C16D0Ev)();
extern void ABISELECT(_ZThn136_N9S21124C16D0Ev,_ZThn88_N9S21124C16D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21124C16D1Ev,_ZTv0_n28_N9S21124C16D1Ev)();
extern void ABISELECT(_ZThn152_N9S21124C16D1Ev,_ZThn96_N9S21124C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21124C16D0Ev,_ZTv0_n28_N9S21124C16D0Ev)();
extern void ABISELECT(_ZThn152_N9S21124C16D0Ev,_ZThn96_N9S21124C16D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C16D1Ev,_ZTvn760_n28_N9S21124C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C16D0Ev,_ZTvn760_n28_N9S21124C16D0Ev)();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C16D1Ev,_ZTvn764_n28_N9S21124C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C16D0Ev,_ZTvn764_n28_N9S21124C16D0Ev)();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21124C16D1Ev,_ZTv0_n36_N9S21124C16D1Ev)();
extern void ABISELECT(_ZThn1328_N9S21124C16D1Ev,_ZThn864_N9S21124C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21124C16D0Ev,_ZTv0_n36_N9S21124C16D0Ev)();
extern void ABISELECT(_ZThn1328_N9S21124C16D0Ev,_ZThn864_N9S21124C16D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21124C16D1Ev,_ZTv0_n32_N9S21124C16D1Ev)();
extern void ABISELECT(_ZThn1392_N9S21124C16D1Ev,_ZThn920_N9S21124C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21124C16D0Ev,_ZTv0_n32_N9S21124C16D0Ev)();
extern void ABISELECT(_ZThn1392_N9S21124C16D0Ev,_ZThn920_N9S21124C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21124C16[] = {
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  0,
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C16D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C16D1Ev,_ZTv0_n40_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C16D0Ev,_ZTv0_n40_N9S21124C16D0Ev),
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C16D1Ev,_ZTv0_n28_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C16D0Ev,_ZTv0_n28_N9S21124C16D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C16D1Ev,_ZTvn760_n28_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C16D0Ev,_ZTvn760_n28_N9S21124C16D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C16D1Ev,_ZTvn764_n28_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C16D0Ev,_ZTvn764_n28_N9S21124C16D0Ev),
  ABISELECT(-1328,-864),
  0,
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C16D1Ev,_ZTv0_n36_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C16D0Ev,_ZTv0_n36_N9S21124C16D0Ev),
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C16D1Ev,_ZTv0_n32_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C16D0Ev,_ZTv0_n32_N9S21124C16D0Ev),
};
extern VTBL_ENTRY _ZTV9S21124C16[];
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C6__9S21124C16[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C17D1Ev();
extern void _ZN9S21124C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C17__9S21124C16[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C17D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21124C17D1Ev,_ZTv0_n28_N9S21124C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21124C17D1Ev,_ZThn8_N9S21124C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21124C17D0Ev,_ZTv0_n28_N9S21124C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S21124C17D0Ev,_ZThn8_N9S21124C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C9__9S21124C17__9S21124C16[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C17D1Ev,_ZTv0_n28_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C17D0Ev,_ZTv0_n28_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C17__9S21124C16[] = {
  0,
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C17D1Ev,_ZTvn760_n28_N9S21124C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C17D0Ev,_ZTvn760_n28_N9S21124C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__9S21124C17__9S21124C16[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C17D1Ev,_ZTvn760_n28_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C17D0Ev,_ZTvn760_n28_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C17D1Ev,_ZTvn764_n28_N9S21124C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C17D0Ev,_ZTvn764_n28_N9S21124C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__9S21124C17__9S21124C16[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C17D1Ev,_ZTvn764_n28_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C17D0Ev,_ZTvn764_n28_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21124C17D1Ev,_ZTv0_n36_N9S21124C17D1Ev)();
extern void ABISELECT(_ZThn1192_N9S21124C17D1Ev,_ZThn776_N9S21124C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21124C17D0Ev,_ZTv0_n36_N9S21124C17D0Ev)();
extern void ABISELECT(_ZThn1192_N9S21124C17D0Ev,_ZThn776_N9S21124C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C3__9S21124C17__9S21124C16[] = {
  ABISELECT(-1192,-776),
  0,
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C17D1Ev,_ZTv0_n36_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C17D0Ev,_ZTv0_n36_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21124C17D1Ev,_ZTv0_n32_N9S21124C17D1Ev)();
extern void ABISELECT(_ZThn1256_N9S21124C17D1Ev,_ZThn832_N9S21124C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21124C17D0Ev,_ZTv0_n32_N9S21124C17D0Ev)();
extern void ABISELECT(_ZThn1256_N9S21124C17D0Ev,_ZThn832_N9S21124C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C4__9S21124C17__9S21124C16[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C17D1Ev,_ZTv0_n32_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C17D0Ev,_ZTv0_n32_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C9D1Ev();
extern void _ZN8S21124C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C9__9S21124C16[] = {
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C108S21124C9__9S21124C16[] = {
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C108S21124C9__9S21124C16[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__9S21124C16[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C118S21124C9__9S21124C16[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C12D1Ev();
extern void _ZN9S21124C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__9S21124C16[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C119S21124C128S21124C9__A1__9S21124C16[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__9S21124C16[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C128S21124C9__9S21124C16[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C9__9S21124C16[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C11__8S21124C9__9S21124C16[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C12__8S21124C9__9S21124C16[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C3D1Ev();
extern void _ZN8S21124C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C3__9S21124C16[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C3D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21124C3D1Ev,_ZThn56_N8S21124C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S21124C3D0Ev,_ZThn56_N8S21124C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C4__8S21124C3__9S21124C16[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C3__9S21124C16[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C3__9S21124C16[] = {
  ABISELECT(1176,768),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C3D1Ev,_ZTvn760_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C3D0Ev,_ZTvn760_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C3__9S21124C16[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C3D1Ev,_ZTvn760_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C3D0Ev,_ZTvn760_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C3D1Ev,_ZTvn764_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C3D0Ev,_ZTvn764_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C3__9S21124C16[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C3D1Ev,_ZTvn764_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C3D0Ev,_ZTvn764_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C4D1Ev();
extern void _ZN8S21124C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C4__9S21124C16[] = {
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C68S21124C4__A1__9S21124C16[] = {
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C4__9S21124C16[] = {
  0,
  ABISELECT(1392,920),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C4__9S21124C16[] = {
  ABISELECT(1240,824),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C4__9S21124C16[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C4__9S21124C16[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev),
};
static  VTT_ENTRY vtt_S21124C16[] = {
  {&(_ZTV9S21124C16[11]),  11,81},
  {&(_ZTV9S21124C16[18]),  18,81},
  {&(_ZTV9S21124C16[29]),  29,81},
  {&(_ZTV9S21124C16[39]),  39,81},
  {&(_ZTV9S21124C16[11]),  11,81},
  {&(_ZTV9S21124C16[47]),  47,81},
  {&(_ZTV9S21124C16[55]),  55,81},
  {&(_ZTV9S21124C16[67]),  67,81},
  {&(_ZTV9S21124C16[78]),  78,81},
  {&(_tg__ZTV8S21124C6__9S21124C16[3]),  3,4},
  {&(_tg__ZTV9S21124C17__9S21124C16[9]),  9,12},
  {&(_tg__ZTV8S21124C9__9S21124C17__9S21124C16[7]),  7,10},
  {&(_tg__ZTV8S21124C5__9S21124C17__9S21124C16[3]),  3,4},
  {&(_tg__ZTV9S21124C118S21124C9__9S21124C17__9S21124C16[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__9S21124C17__9S21124C16[5]),  5,8},
  {&(_tg__ZTV8S21124C3__9S21124C17__9S21124C16[9]),  9,12},
  {&(_tg__ZTV8S21124C4__9S21124C17__9S21124C16[8]),  8,11},
  {&(_tg__ZTV8S21124C9__9S21124C16[6]),  6,9},
  {&(_tg__ZTV9S21124C108S21124C9__9S21124C16[4]),  4,5},
  {&(_tg__ZTV8S21124C5__9S21124C108S21124C9__9S21124C16[3]),  3,4},
  {&(_tg__ZTV9S21124C118S21124C9__9S21124C16[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C118S21124C9__9S21124C16[3]),  3,4},
  {&(_tg__ZTV9S21124C128S21124C9__9S21124C16[5]),  5,8},
  {&(_tg__ZTV9S21124C119S21124C128S21124C9__A1__9S21124C16[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__9S21124C16[3]),  3,4},
  {&(_tg__ZTV8S21124C5__9S21124C128S21124C9__9S21124C16[3]),  3,4},
  {&(_tg__ZTV8S21124C5__8S21124C9__9S21124C16[3]),  3,4},
  {&(_tg__ZTV9S21124C11__8S21124C9__9S21124C16[5]),  5,8},
  {&(_tg__ZTV9S21124C12__8S21124C9__9S21124C16[5]),  5,8},
  {&(_tg__ZTV8S21124C3__9S21124C16[7]),  7,10},
  {&(_tg__ZTV8S21124C4__8S21124C3__9S21124C16[8]),  8,11},
  {&(_tg__ZTV8S21124C5__8S21124C3__9S21124C16[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C3__9S21124C16[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C3__9S21124C16[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C3__9S21124C16[5]),  5,8},
  {&(_tg__ZTV8S21124C4__9S21124C16[6]),  6,9},
  {&(_tg__ZTV8S21124C68S21124C4__A1__9S21124C16[3]),  3,4},
  {&(_tg__ZTV8S21124C5__8S21124C4__9S21124C16[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C4__9S21124C16[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C4__9S21124C16[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C4__9S21124C16[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21124C16[];
extern  VTBL_ENTRY _ZTV9S21124C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C16[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21124C3D0Ev,_ZThn56_N8S21124C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21124C3D1Ev,_ZThn56_N8S21124C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C17D0Ev,_ZTv0_n32_N9S21124C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N9S21124C17D0Ev,_ZThn832_N9S21124C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C17D1Ev,_ZTv0_n32_N9S21124C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N9S21124C17D1Ev,_ZThn832_N9S21124C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C17D0Ev,_ZTv0_n36_N9S21124C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N9S21124C17D0Ev,_ZThn776_N9S21124C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C17D1Ev,_ZTv0_n36_N9S21124C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N9S21124C17D1Ev,_ZThn776_N9S21124C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C17D0Ev,_ZTv0_n28_N9S21124C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21124C17D0Ev,_ZThn8_N9S21124C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C17D1Ev,_ZTv0_n28_N9S21124C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21124C17D1Ev,_ZThn8_N9S21124C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C16D0Ev,_ZTv0_n32_N9S21124C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N9S21124C16D0Ev,_ZThn920_N9S21124C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C16D1Ev,_ZTv0_n32_N9S21124C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N9S21124C16D1Ev,_ZThn920_N9S21124C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C16D0Ev,_ZTv0_n36_N9S21124C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S21124C16D0Ev,_ZThn864_N9S21124C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C16D1Ev,_ZTv0_n36_N9S21124C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S21124C16D1Ev,_ZThn864_N9S21124C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C16D0Ev,_ZTv0_n28_N9S21124C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21124C16D0Ev,_ZThn96_N9S21124C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C16D1Ev,_ZTv0_n28_N9S21124C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21124C16D1Ev,_ZThn96_N9S21124C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21124C16D0Ev,_ZTv0_n40_N9S21124C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21124C16D0Ev,_ZThn88_N9S21124C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21124C16D1Ev,_ZTv0_n40_N9S21124C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21124C16D1Ev,_ZThn88_N9S21124C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21124C16 = {  "S21124C16", // class name
  bases_S21124C16, 23,
  &(vtc_S21124C16[0]), // expected_vtbl_contents
  &(vtt_S21124C16[0]), // expected_vtt_contents
  ABISELECT(1488,964), // object size
  NSPAIRA(_ZTI9S21124C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21124C16),81, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21124C16),41, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21124C19  : virtual S10258C6_nt , virtual S21124C11 {
  virtual  ~S21124C19(); // _ZN9S21124C19D2Ev
  S21124C19(); // tgen
};
//SIG(-1 S21124C19) C1{ VBC2{ m FL[4]} VBC3{ VBC4{ m FL[5]} VBC5{ v1} BC6{ m} vd} vd}


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

static void Test_S21124C19()
{
  extern Class_Descriptor cd_S21124C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,20)];
    init_test(&cd_S21124C19, buf);
    S21124C19 *dp, &lv = *(dp=new (buf) S21124C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,76), "sizeof(S21124C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21124C19)");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(8,4), "S21124C19");
    check_base_class_offset(lv, (S20997C6*)(S21124C11*), ABISELECT(40,36), "S21124C19");
    check_base_class_offset(lv, (S21124C5*)(S21124C11*), 0, "S21124C19");
    check_base_class_offset(lv, (S4227C37*)(S21124C11*), 0, "S21124C19");
    check_base_class_offset(lv, (S21124C11*), 0, "S21124C19");
    test_class_info(&lv, &cd_S21124C19);
    dp->~S21124C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C19(Test_S21124C19, "S21124C19", ABISELECT(80,76));

#else // __cplusplus

extern void _ZN9S21124C19C1Ev();
extern void _ZN9S21124C19D2Ev();
Name_Map name_map_S21124C19[] = {
  NSPAIR(_ZN9S21124C19C1Ev),
  NSPAIR(_ZN9S21124C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
static Base_Class bases_S21124C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S21124C5,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21124C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21124C19[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C19D1Ev();
extern void _ZN9S21124C19D0Ev();
static  VTBL_ENTRY vtc_S21124C19[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C19[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C19D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C19D0Ev,
};
extern VTBL_ENTRY _ZTV9S21124C19[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C11__9S21124C19[] = {
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
static  VTT_ENTRY vtt_S21124C19[] = {
  {&(_ZTV9S21124C19[8]),  8,11},
  {&(_ZTV9S21124C19[8]),  8,11},
  {&(_ZTV9S21124C19[8]),  8,11},
  {&(_tg__ZTV9S21124C11__9S21124C19[5]),  5,8},
  {&(_tg__ZTV9S21124C11__9S21124C19[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21124C19[];
extern  VTBL_ENTRY _ZTV9S21124C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C19[];
Class_Descriptor cd_S21124C19 = {  "S21124C19", // class name
  bases_S21124C19, 5,
  &(vtc_S21124C19[0]), // expected_vtbl_contents
  &(vtt_S21124C19[0]), // expected_vtt_contents
  ABISELECT(80,76), // object size
  NSPAIRA(_ZTI9S21124C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21124C19),11, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21124C19),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21124C15  : S21124C16 , S4227C27 , S21124C19 , virtual S21124C2 {
  ~S21124C15(); // tgen
  S21124C15(); // tgen
};
//SIG(-1 S21124C15) C1{ BC2{ VBC3{ BC4{ v1} VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC5 VBC8{ VBC6 BC9{ VBC4 FC3[9]} BC10{ VBC5 VBC4 BC6 vd} BC11{ BC10 vd}} VBC12{ VBC13{ VBC4 BC3 VBC8 vd} BC14{ BC15{ BC5 BC4} FD}} vd Fp}} BC16{ m} BC17{ VBC18{ m FL[4]} VBC10 vd} VBC19{ VBC12}}


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

static void Test_S21124C15()
{
  extern Class_Descriptor cd_S21124C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(97,252)];
    init_test(&cd_S21124C15, buf);
    S21124C15 *dp, &lv = *(dp=new (buf) S21124C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1536,1004), "sizeof(S21124C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21124C15)");
    /*is_ambiguous_... S21124C15::S21124C6 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C6*), ABISELECT(16,8), "S21124C15");
    /*is_ambiguous_... S21124C15::S21124C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C6*), ABISELECT(104,52), "S21124C15");
    /*is_ambiguous_... S21124C17::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C17*), ABISELECT(104,52), "S21124C15");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C9*), ABISELECT(104,52), "S21124C15");
    check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(104,52), "S21124C15");
    check_base_class_offset(lv, (S20997C6*)(S21124C6*)(S21124C4*), ABISELECT(104,52), "S21124C15");
    /*is_ambiguous_... S21124C15::S21124C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C11*), ABISELECT(104,52), "S21124C15");
    /*is_ambiguous_... S21124C15::S21124C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C6*), ABISELECT(16,8), "S21124C15");
    /*is_ambiguous_... S21124C16::S21124C6 */ AMB_check_base_class_offset(lv, (S21124C6*)(S21124C16*), ABISELECT(16,8), "S21124C15");
    /*is_ambiguous_... S21124C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C9*), 0, "S21124C15");
    check_base_class_offset(lv, (S21124C5*)(S21124C10*)(S21124C9*), 0, "S21124C15");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C9*), 0, "S21124C15");
    check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C12*)(S21124C9*), 0, "S21124C15");
    /*is_ambiguous_... S21124C4::S21124C5 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C4*), 0, "S21124C15");
    /*is_ambiguous_... S21124C15::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C11*), 0, "S21124C15");
    check_base_class_offset(lv, (S21124C10*)(S21124C9*), ABISELECT(160,100), "S21124C15");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C9*), ABISELECT(1320,860), "S21124C15");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C11*)(S21124C9*), ABISELECT(1320,860), "S21124C15");
    check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1328,864), "S21124C15");
    check_base_class_offset(lv, (S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1328,864), "S21124C15");
    check_base_class_offset(lv, (S21124C12*)(S21124C9*), ABISELECT(1328,864), "S21124C15");
    check_base_class_offset(lv, (S21124C9*)(S21124C17*), ABISELECT(160,100), "S21124C15");
    check_base_class_offset(lv, (S21124C9*)(S21124C4*), ABISELECT(160,100), "S21124C15");
    check_base_class_offset(lv, (S21124C5*)(S21124C6*)(S21124C4*), ABISELECT(1408,924), "S21124C15");
    check_base_class_offset(lv, (S4227C37*)(S21124C6*)(S21124C4*), ABISELECT(1408,924), "S21124C15");
    check_base_class_offset(lv, (S21124C6*)(S21124C4*), ABISELECT(1408,924), "S21124C15");
    check_base_class_offset(lv, (S21124C4*)(S21124C3*), ABISELECT(1408,924), "S21124C15");
    check_base_class_offset(lv, (S20997C6*)(S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(1352,872), "S21124C15");
    check_base_class_offset(lv, (S21124C5*)(S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(1344,868), "S21124C15");
    check_base_class_offset(lv, (S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(1344,868), "S21124C15");
    check_base_class_offset(lv, (S21124C13*)(S21124C3*), ABISELECT(1344,868), "S21124C15");
    check_base_class_offset(lv, (S21124C3*)(S21124C17*), ABISELECT(1344,868), "S21124C15");
    check_base_class_offset(lv, (S21124C3*)(S21124C2*), ABISELECT(1344,868), "S21124C15");
    check_base_class_offset(lv, (S21124C17*)(S21124C16*), ABISELECT(144,92), "S21124C15");
    check_base_class_offset(lv, (S21124C16*), 0, "S21124C15");
    check_base_class_offset(lv, (S4227C27*), 0, "S21124C15");
    check_base_class_offset(lv, (S10258C6_nt*)(S21124C19*), ABISELECT(1496,968), "S21124C15");
    /*is_ambiguous_... S21124C15::S21124C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C11*), ABISELECT(8,4), "S21124C15");
    check_base_class_offset(lv, (S21124C11*)(S21124C19*), ABISELECT(8,4), "S21124C15");
    check_base_class_offset(lv, (S21124C19*), ABISELECT(8,4), "S21124C15");
    check_base_class_offset(lv, (S21124C2*), ABISELECT(1528,1000), "S21124C15");
    test_class_info(&lv, &cd_S21124C15);
    dp->~S21124C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C15(Test_S21124C15, "S21124C15", ABISELECT(1536,1004));

#else // __cplusplus

extern void _ZN9S21124C15C1Ev();
extern void _ZN9S21124C15D1Ev();
Name_Map name_map_S21124C15[] = {
  NSPAIR(_ZN9S21124C15C1Ev),
  NSPAIR(_ZN9S21124C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C10;
extern VTBL_ENTRY _ZTI9S21124C10[];
extern  VTBL_ENTRY _ZTV9S21124C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S21124C12;
extern VTBL_ENTRY _ZTI9S21124C12[];
extern  VTBL_ENTRY _ZTV9S21124C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C12[];
extern Class_Descriptor cd_S21124C9;
extern VTBL_ENTRY _ZTI8S21124C9[];
extern  VTBL_ENTRY _ZTV8S21124C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C9[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S21124C4;
extern VTBL_ENTRY _ZTI8S21124C4[];
extern  VTBL_ENTRY _ZTV8S21124C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C14;
extern VTBL_ENTRY _ZTI9S21124C14[];
extern  VTBL_ENTRY _ZTV9S21124C14[];
extern Class_Descriptor cd_S21124C13;
extern VTBL_ENTRY _ZTI9S21124C13[];
extern  VTBL_ENTRY _ZTV9S21124C13[];
extern Class_Descriptor cd_S21124C3;
extern VTBL_ENTRY _ZTI8S21124C3[];
extern  VTBL_ENTRY _ZTV8S21124C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C3[];
extern Class_Descriptor cd_S21124C17;
extern VTBL_ENTRY _ZTI9S21124C17[];
extern  VTBL_ENTRY _ZTV9S21124C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C17[];
extern Class_Descriptor cd_S21124C16;
extern VTBL_ENTRY _ZTI9S21124C16[];
extern  VTBL_ENTRY _ZTV9S21124C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C16[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S21124C19;
extern VTBL_ENTRY _ZTI9S21124C19[];
extern  VTBL_ENTRY _ZTV9S21124C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C19[];
extern Class_Descriptor cd_S21124C2;
extern VTBL_ENTRY _ZTI8S21124C2[];
extern  VTBL_ENTRY _ZTV8S21124C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C2[];
static Base_Class bases_S21124C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21124C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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_S4227C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S21124C6,    ABISELECT(16,8), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C5,    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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21124C10,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(1320,860), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21124C11,    ABISELECT(1328,864), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21124C12,    ABISELECT(1328,864), //bcp->offset
    64, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21124C9,    ABISELECT(160,100), //bcp->offset
    46, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S21124C5,    ABISELECT(1408,924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1408,924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21124C6,    ABISELECT(1408,924), //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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21124C4,    ABISELECT(1408,924), //bcp->offset
    84, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1352,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C5,    ABISELECT(1344,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21124C14,    ABISELECT(1344,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21124C13,    ABISELECT(1344,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21124C3,    ABISELECT(1344,868), //bcp->offset
    72, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21124C17,    ABISELECT(144,92), //bcp->offset
    33, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S21124C16,    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
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10258C6_nt,    ABISELECT(1496,968), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S21124C19,    ABISELECT(8,4), //bcp->offset
    17, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21124C2,    ABISELECT(1528,1000), //bcp->offset
    95, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21124C15[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C15D1Ev();
extern void _ZN9S21124C15D0Ev();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21124C15D1Ev,_ZTv0_n24_N9S21124C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S21124C15D1Ev,_ZThn4_N9S21124C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21124C15D0Ev,_ZTv0_n24_N9S21124C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S21124C15D0Ev,_ZThn4_N9S21124C15D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S21124C15D1Ev,_ZTv0_n40_N9S21124C15D1Ev)();
extern void ABISELECT(_ZThn144_N9S21124C15D1Ev,_ZThn92_N9S21124C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21124C15D0Ev,_ZTv0_n40_N9S21124C15D0Ev)();
extern void ABISELECT(_ZThn144_N9S21124C15D0Ev,_ZThn92_N9S21124C15D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21124C15D1Ev,_ZTv0_n28_N9S21124C15D1Ev)();
extern void ABISELECT(_ZThn160_N9S21124C15D1Ev,_ZThn100_N9S21124C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21124C15D0Ev,_ZTv0_n28_N9S21124C15D0Ev)();
extern void ABISELECT(_ZThn160_N9S21124C15D0Ev,_ZThn100_N9S21124C15D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C15D1Ev,_ZTvn760_n28_N9S21124C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C15D0Ev,_ZTvn760_n28_N9S21124C15D0Ev)();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C15D1Ev,_ZTvn764_n28_N9S21124C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C15D0Ev,_ZTvn764_n28_N9S21124C15D0Ev)();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21124C15D1Ev,_ZTv0_n36_N9S21124C15D1Ev)();
extern void ABISELECT(_ZThn1344_N9S21124C15D1Ev,_ZThn868_N9S21124C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21124C15D0Ev,_ZTv0_n36_N9S21124C15D0Ev)();
extern void ABISELECT(_ZThn1344_N9S21124C15D0Ev,_ZThn868_N9S21124C15D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21124C15D1Ev,_ZTv0_n32_N9S21124C15D1Ev)();
extern void ABISELECT(_ZThn1408_N9S21124C15D1Ev,_ZThn924_N9S21124C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21124C15D0Ev,_ZTv0_n32_N9S21124C15D0Ev)();
extern void ABISELECT(_ZThn1408_N9S21124C15D0Ev,_ZThn924_N9S21124C15D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S21124C15D1Ev,_ZTv0_n40_N9S21124C15D1Ev)();
extern void ABISELECT(_ZThn1528_N9S21124C15D1Ev,_ZThn1000_N9S21124C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21124C15D0Ev,_ZTv0_n40_N9S21124C15D0Ev)();
extern void ABISELECT(_ZThn1528_N9S21124C15D0Ev,_ZThn1000_N9S21124C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21124C15[] = {
  ABISELECT(1528,1000),
  ABISELECT(8,4),
  ABISELECT(1496,968),
  ABISELECT(1408,924),
  ABISELECT(1344,868),
  0,
  0,
  ABISELECT(160,100),
  ABISELECT(144,92),
  ABISELECT(104,52),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C15D0Ev,
  0,
  ABISELECT(1488,964),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(96,48),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C15D1Ev,_ZTv0_n24_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C15D0Ev,_ZTv0_n24_N9S21124C15D0Ev),
  0,
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  ABISELECT(-144,-92),
  ABISELECT(1264,832),
  ABISELECT(1200,776),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(16,8),
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C15D1Ev,_ZTv0_n40_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C15D0Ev,_ZTv0_n40_N9S21124C15D0Ev),
  ABISELECT(-160,-100),
  ABISELECT(-56,-48),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C15D1Ev,_ZTv0_n28_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C15D0Ev,_ZTv0_n28_N9S21124C15D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1216,-808),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C15D1Ev,_ZTvn760_n28_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C15D0Ev,_ZTvn760_n28_N9S21124C15D0Ev),
  ABISELECT(-1328,-864),
  ABISELECT(-1224,-812),
  ABISELECT(-1328,-864),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C15D1Ev,_ZTvn764_n28_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C15D0Ev,_ZTvn764_n28_N9S21124C15D0Ev),
  ABISELECT(-1344,-868),
  0,
  ABISELECT(-1344,-868),
  ABISELECT(-1184,-768),
  ABISELECT(-1240,-816),
  ABISELECT(-1344,-868),
  ABISELECT(64,56),
  ABISELECT(-1344,-868),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C15D1Ev,_ZTv0_n36_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C15D0Ev,_ZTv0_n36_N9S21124C15D0Ev),
  ABISELECT(-1408,-924),
  0,
  ABISELECT(-1408,-924),
  ABISELECT(-1248,-824),
  ABISELECT(-1408,-924),
  ABISELECT(-1304,-872),
  ABISELECT(-1408,-924),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C15D1Ev,_ZTv0_n32_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C15D0Ev,_ZTv0_n32_N9S21124C15D0Ev),
  ABISELECT(-1528,-1000),
  ABISELECT(-1528,-1000),
  ABISELECT(-1368,-900),
  ABISELECT(-1424,-948),
  ABISELECT(-1528,-1000),
  ABISELECT(-120,-76),
  ABISELECT(-184,-132),
  ABISELECT(-1528,-1000),
  ABISELECT(-1528,-1000),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C15D1Ev,_ZTv0_n40_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C15D0Ev,_ZTv0_n40_N9S21124C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21124C15[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C16D1Ev();
extern void _ZN9S21124C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C16__9S21124C15[] = {
  ABISELECT(1408,924),
  ABISELECT(1344,868),
  0,
  0,
  ABISELECT(160,100),
  ABISELECT(144,92),
  ABISELECT(104,52),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C16D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C6__9S21124C16__9S21124C15[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S21124C16D1Ev,_ZTv0_n40_N9S21124C16D1Ev)();
extern void ABISELECT(_ZThn144_N9S21124C16D1Ev,_ZThn92_N9S21124C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21124C16D0Ev,_ZTv0_n40_N9S21124C16D0Ev)();
extern void ABISELECT(_ZThn144_N9S21124C16D0Ev,_ZThn92_N9S21124C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21124C17__9S21124C16__9S21124C15[] = {
  ABISELECT(-144,-92),
  ABISELECT(1264,832),
  ABISELECT(1200,776),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(16,8),
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C16D1Ev,_ZTv0_n40_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C16D0Ev,_ZTv0_n40_N9S21124C16D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21124C16D1Ev,_ZTv0_n28_N9S21124C16D1Ev)();
extern void ABISELECT(_ZThn160_N9S21124C16D1Ev,_ZThn100_N9S21124C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21124C16D0Ev,_ZTv0_n28_N9S21124C16D0Ev)();
extern void ABISELECT(_ZThn160_N9S21124C16D0Ev,_ZThn100_N9S21124C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C9__9S21124C16__9S21124C15[] = {
  ABISELECT(-160,-100),
  ABISELECT(-56,-48),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C16D1Ev,_ZTv0_n28_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C16D0Ev,_ZTv0_n28_N9S21124C16D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C16D1Ev,_ZTvn760_n28_N9S21124C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C16D0Ev,_ZTvn760_n28_N9S21124C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__9S21124C16__9S21124C15[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1216,-808),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C16D1Ev,_ZTvn760_n28_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C16D0Ev,_ZTvn760_n28_N9S21124C16D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C16D1Ev,_ZTvn764_n28_N9S21124C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C16D0Ev,_ZTvn764_n28_N9S21124C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__9S21124C16__9S21124C15[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1224,-812),
  ABISELECT(-1328,-864),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C16D1Ev,_ZTvn764_n28_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C16D0Ev,_ZTvn764_n28_N9S21124C16D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21124C16D1Ev,_ZTv0_n36_N9S21124C16D1Ev)();
extern void ABISELECT(_ZThn1344_N9S21124C16D1Ev,_ZThn868_N9S21124C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21124C16D0Ev,_ZTv0_n36_N9S21124C16D0Ev)();
extern void ABISELECT(_ZThn1344_N9S21124C16D0Ev,_ZThn868_N9S21124C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C3__9S21124C16__9S21124C15[] = {
  ABISELECT(-1344,-868),
  0,
  ABISELECT(-1344,-868),
  ABISELECT(-1184,-768),
  ABISELECT(-1240,-816),
  ABISELECT(-1344,-868),
  ABISELECT(64,56),
  ABISELECT(-1344,-868),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C16D1Ev,_ZTv0_n36_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C16D0Ev,_ZTv0_n36_N9S21124C16D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21124C16D1Ev,_ZTv0_n32_N9S21124C16D1Ev)();
extern void ABISELECT(_ZThn1408_N9S21124C16D1Ev,_ZThn924_N9S21124C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21124C16D0Ev,_ZTv0_n32_N9S21124C16D0Ev)();
extern void ABISELECT(_ZThn1408_N9S21124C16D0Ev,_ZThn924_N9S21124C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C4__9S21124C16__9S21124C15[] = {
  ABISELECT(-1408,-924),
  0,
  ABISELECT(-1408,-924),
  ABISELECT(-1248,-824),
  ABISELECT(-1408,-924),
  ABISELECT(-1304,-872),
  ABISELECT(-1408,-924),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C16D1Ev,_ZTv0_n32_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C16D0Ev,_ZTv0_n32_N9S21124C16D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev)();
extern void _ZN9S21124C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev)();
extern void _ZN9S21124C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21124C19__9S21124C15[] = {
  0,
  ABISELECT(1488,964),
  0,
  ABISELECT(-8,-4),
  ABISELECT(96,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C19[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C19__9S21124C15[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S21124C19[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C6__9S21124C15[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C17D1Ev();
extern void _ZN9S21124C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C17__9S21124C15[] = {
  ABISELECT(1264,832),
  ABISELECT(1200,776),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(16,8),
  -40,
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C17D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21124C17D1Ev,_ZTv0_n28_N9S21124C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S21124C17D1Ev,_ZThn8_N9S21124C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21124C17D0Ev,_ZTv0_n28_N9S21124C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S21124C17D0Ev,_ZThn8_N9S21124C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C9__9S21124C17__9S21124C15[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C17D1Ev,_ZTv0_n28_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C17D0Ev,_ZTv0_n28_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C17__9S21124C15[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C17D1Ev,_ZTvn760_n28_N9S21124C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C17D0Ev,_ZTvn760_n28_N9S21124C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__9S21124C17__9S21124C15[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1216,-808),
  ABISELECT(-1320,-860),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C17D1Ev,_ZTvn760_n28_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C17D0Ev,_ZTvn760_n28_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C17D1Ev,_ZTvn764_n28_N9S21124C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C17D0Ev,_ZTvn764_n28_N9S21124C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__9S21124C17__9S21124C15[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1224,-812),
  ABISELECT(-1328,-864),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C17D1Ev,_ZTvn764_n28_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C17D0Ev,_ZTvn764_n28_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21124C17D1Ev,_ZTv0_n36_N9S21124C17D1Ev)();
extern void ABISELECT(_ZThn1200_N9S21124C17D1Ev,_ZThn776_N9S21124C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21124C17D0Ev,_ZTv0_n36_N9S21124C17D0Ev)();
extern void ABISELECT(_ZThn1200_N9S21124C17D0Ev,_ZThn776_N9S21124C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C3__9S21124C17__9S21124C15[] = {
  ABISELECT(-1200,-776),
  0,
  ABISELECT(-1344,-868),
  ABISELECT(-1184,-768),
  ABISELECT(-1240,-816),
  ABISELECT(-1344,-868),
  ABISELECT(64,56),
  ABISELECT(-1200,-776),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C17D1Ev,_ZTv0_n36_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C17D0Ev,_ZTv0_n36_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21124C17D1Ev,_ZTv0_n32_N9S21124C17D1Ev)();
extern void ABISELECT(_ZThn1264_N9S21124C17D1Ev,_ZThn832_N9S21124C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21124C17D0Ev,_ZTv0_n32_N9S21124C17D0Ev)();
extern void ABISELECT(_ZThn1264_N9S21124C17D0Ev,_ZThn832_N9S21124C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C4__9S21124C17__9S21124C15[] = {
  ABISELECT(-1264,-832),
  0,
  ABISELECT(-1408,-924),
  ABISELECT(-1248,-824),
  ABISELECT(-1408,-924),
  ABISELECT(-1304,-872),
  ABISELECT(-1264,-832),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C17D1Ev,_ZTv0_n32_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C17D0Ev,_ZTv0_n32_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C9D1Ev();
extern void _ZN8S21124C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C9__9S21124C15[] = {
  ABISELECT(-56,-48),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C108S21124C9__9S21124C15[] = {
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C108S21124C9__9S21124C15[] = {
  0,
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__9S21124C15[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1216,-808),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C118S21124C9__9S21124C15[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C12D1Ev();
extern void _ZN9S21124C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__9S21124C15[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1224,-812),
  ABISELECT(-1328,-864),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C119S21124C128S21124C9__A1__9S21124C15[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1224,-812),
  ABISELECT(-1328,-864),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__9S21124C15[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C128S21124C9__9S21124C15[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C9__9S21124C15[] = {
  0,
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C11__8S21124C9__9S21124C15[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1216,-808),
  ABISELECT(-1320,-860),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C12__8S21124C9__9S21124C15[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1224,-812),
  ABISELECT(-1328,-864),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C3D1Ev();
extern void _ZN8S21124C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C3__9S21124C15[] = {
  ABISELECT(-1344,-868),
  ABISELECT(-1184,-768),
  ABISELECT(-1240,-816),
  ABISELECT(-1344,-868),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C3D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21124C3D1Ev,_ZThn56_N8S21124C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S21124C3D0Ev,_ZThn56_N8S21124C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C4__8S21124C3__9S21124C15[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1408,-924),
  ABISELECT(-1248,-824),
  ABISELECT(-1408,-924),
  ABISELECT(-1304,-872),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C3__9S21124C15[] = {
  0,
  ABISELECT(1344,868),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C3__9S21124C15[] = {
  ABISELECT(1184,768),
  ABISELECT(-56,-48),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(1184,768),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C3D1Ev,_ZTvn760_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C3D0Ev,_ZTvn760_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C3__9S21124C15[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1216,-808),
  ABISELECT(-1320,-860),
  ABISELECT(24,8),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C3D1Ev,_ZTvn760_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C3D0Ev,_ZTvn760_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C3D1Ev,_ZTvn764_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C3D0Ev,_ZTvn764_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C3__9S21124C15[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1224,-812),
  ABISELECT(-1328,-864),
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C3D1Ev,_ZTvn764_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C3D0Ev,_ZTvn764_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C4D1Ev();
extern void _ZN8S21124C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C4__9S21124C15[] = {
  ABISELECT(-1408,-924),
  ABISELECT(-1248,-824),
  ABISELECT(-1408,-924),
  ABISELECT(-1304,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C68S21124C4__A1__9S21124C15[] = {
  ABISELECT(-1304,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C4__9S21124C15[] = {
  0,
  ABISELECT(1408,924),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C4__9S21124C15[] = {
  ABISELECT(1248,824),
  ABISELECT(-56,-48),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(1248,824),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C4__9S21124C15[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1216,-808),
  ABISELECT(-1320,-860),
  ABISELECT(88,64),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C4__9S21124C15[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1224,-812),
  ABISELECT(-1328,-864),
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C11__A2__9S21124C15[] = {
  ABISELECT(-8,-4),
  ABISELECT(96,48),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C11__A2__9S21124C15[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C2D1Ev();
extern void _ZN8S21124C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C2__9S21124C15[] = {
  ABISELECT(-1528,-1000),
  ABISELECT(-1368,-900),
  ABISELECT(-1424,-948),
  ABISELECT(-1528,-1000),
  ABISELECT(-120,-76),
  ABISELECT(-184,-132),
  ABISELECT(-1528,-1000),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C2D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21124C2D1Ev,_ZTv0_n36_N8S21124C2D1Ev)();
extern void ABISELECT(_ZTv0_n72_N8S21124C2D0Ev,_ZTv0_n36_N8S21124C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21124C3__8S21124C2__9S21124C15[] = {
  ABISELECT(184,132),
  0,
  ABISELECT(-1344,-868),
  ABISELECT(-1184,-768),
  ABISELECT(-1240,-816),
  ABISELECT(-1344,-868),
  ABISELECT(64,56),
  ABISELECT(184,132),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21124C2D1Ev,_ZTv0_n36_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21124C2D0Ev,_ZTv0_n36_N8S21124C2D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21124C2D1Ev,_ZTv0_n32_N8S21124C2D1Ev)();
extern void ABISELECT(_ZTv0_n64_N8S21124C2D0Ev,_ZTv0_n32_N8S21124C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21124C4__8S21124C2__9S21124C15[] = {
  ABISELECT(120,76),
  0,
  ABISELECT(-1408,-924),
  ABISELECT(-1248,-824),
  ABISELECT(-1408,-924),
  ABISELECT(-1304,-872),
  ABISELECT(120,76),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C2D1Ev,_ZTv0_n32_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C2D0Ev,_ZTv0_n32_N8S21124C2D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C2__9S21124C15[] = {
  0,
  ABISELECT(1528,1000),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C2D1Ev,_ZTv0_n28_N8S21124C2D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21124C2D0Ev,_ZTv0_n28_N8S21124C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C2__9S21124C15[] = {
  ABISELECT(1368,900),
  ABISELECT(-56,-48),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(1368,900),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C2D1Ev,_ZTv0_n28_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C2D0Ev,_ZTv0_n28_N8S21124C2D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C2D1Ev,_ZTvn760_n28_N8S21124C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C2D0Ev,_ZTvn760_n28_N8S21124C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C2__9S21124C15[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1216,-808),
  ABISELECT(-1320,-860),
  ABISELECT(208,140),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C2D1Ev,_ZTvn760_n28_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C2D0Ev,_ZTvn760_n28_N8S21124C2D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C2D1Ev,_ZTvn764_n28_N8S21124C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C2D0Ev,_ZTvn764_n28_N8S21124C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C2__9S21124C15[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1224,-812),
  ABISELECT(-1328,-864),
  ABISELECT(200,136),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C2D1Ev,_ZTvn764_n28_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C2D0Ev,_ZTvn764_n28_N8S21124C2D0Ev),
};
static  VTT_ENTRY vtt_S21124C15[] = {
  {&(_ZTV9S21124C15[14]),  14,108},
  {&(_tg__ZTV9S21124C16__9S21124C15[11]),  11,14},
  {&(_tg__ZTV8S21124C6__9S21124C16__9S21124C15[4]),  4,5},
  {&(_tg__ZTV9S21124C17__9S21124C16__9S21124C15[10]),  10,13},
  {&(_tg__ZTV8S21124C9__9S21124C16__9S21124C15[7]),  7,10},
  {&(_tg__ZTV9S21124C16__9S21124C15[11]),  11,14},
  {&(_tg__ZTV9S21124C118S21124C9__9S21124C16__9S21124C15[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__9S21124C16__9S21124C15[5]),  5,8},
  {&(_tg__ZTV8S21124C3__9S21124C16__9S21124C15[9]),  9,12},
  {&(_tg__ZTV8S21124C4__9S21124C16__9S21124C15[8]),  8,11},
  {&(_tg__ZTV9S21124C19__9S21124C15[8]),  8,11},
  {&(_tg__ZTV9S21124C19__9S21124C15[8]),  8,11},
  {&(_tg__ZTV8S21124C5__9S21124C19__9S21124C15[3]),  3,4},
  {&(_ZTV9S21124C15[32]),  32,108},
  {&(_ZTV9S21124C15[43]),  43,108},
  {&(_ZTV9S21124C15[53]),  53,108},
  {&(_ZTV9S21124C15[14]),  14,108},
  {&(_ZTV9S21124C15[61]),  61,108},
  {&(_ZTV9S21124C15[69]),  69,108},
  {&(_ZTV9S21124C15[81]),  81,108},
  {&(_ZTV9S21124C15[92]),  92,108},
  {&(_ZTV9S21124C15[25]),  25,108},
  {&(_ZTV9S21124C15[25]),  25,108},
  {&(_ZTV9S21124C15[105]),  105,108},
  {&(_tg__ZTV8S21124C6__9S21124C15[3]),  3,4},
  {&(_tg__ZTV9S21124C17__9S21124C15[9]),  9,12},
  {&(_tg__ZTV8S21124C9__9S21124C17__9S21124C15[7]),  7,10},
  {&(_tg__ZTV8S21124C5__9S21124C17__9S21124C15[3]),  3,4},
  {&(_tg__ZTV9S21124C118S21124C9__9S21124C17__9S21124C15[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__9S21124C17__9S21124C15[5]),  5,8},
  {&(_tg__ZTV8S21124C3__9S21124C17__9S21124C15[9]),  9,12},
  {&(_tg__ZTV8S21124C4__9S21124C17__9S21124C15[8]),  8,11},
  {&(_tg__ZTV8S21124C9__9S21124C15[6]),  6,9},
  {&(_tg__ZTV9S21124C108S21124C9__9S21124C15[4]),  4,5},
  {&(_tg__ZTV8S21124C5__9S21124C108S21124C9__9S21124C15[3]),  3,4},
  {&(_tg__ZTV9S21124C118S21124C9__9S21124C15[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C118S21124C9__9S21124C15[3]),  3,4},
  {&(_tg__ZTV9S21124C128S21124C9__9S21124C15[5]),  5,8},
  {&(_tg__ZTV9S21124C119S21124C128S21124C9__A1__9S21124C15[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__9S21124C15[3]),  3,4},
  {&(_tg__ZTV8S21124C5__9S21124C128S21124C9__9S21124C15[3]),  3,4},
  {&(_tg__ZTV8S21124C5__8S21124C9__9S21124C15[3]),  3,4},
  {&(_tg__ZTV9S21124C11__8S21124C9__9S21124C15[5]),  5,8},
  {&(_tg__ZTV9S21124C12__8S21124C9__9S21124C15[5]),  5,8},
  {&(_tg__ZTV8S21124C3__9S21124C15[7]),  7,10},
  {&(_tg__ZTV8S21124C4__8S21124C3__9S21124C15[8]),  8,11},
  {&(_tg__ZTV8S21124C5__8S21124C3__9S21124C15[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C3__9S21124C15[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C3__9S21124C15[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C3__9S21124C15[5]),  5,8},
  {&(_tg__ZTV8S21124C4__9S21124C15[6]),  6,9},
  {&(_tg__ZTV8S21124C68S21124C4__A1__9S21124C15[3]),  3,4},
  {&(_tg__ZTV8S21124C5__8S21124C4__9S21124C15[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C4__9S21124C15[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C4__9S21124C15[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C4__9S21124C15[5]),  5,8},
  {&(_tg__ZTV9S21124C11__A2__9S21124C15[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C11__A2__9S21124C15[3]),  3,4},
  {&(_tg__ZTV8S21124C2__9S21124C15[9]),  9,12},
  {&(_tg__ZTV8S21124C3__8S21124C2__9S21124C15[9]),  9,12},
  {&(_tg__ZTV8S21124C4__8S21124C2__9S21124C15[8]),  8,11},
  {&(_tg__ZTV8S21124C5__8S21124C2__9S21124C15[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C2__9S21124C15[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C2__9S21124C15[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C2__9S21124C15[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21124C15[];
extern  VTBL_ENTRY _ZTV9S21124C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C15[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21124C3D0Ev,_ZThn56_N8S21124C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21124C3D1Ev,_ZThn56_N8S21124C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C17D0Ev,_ZTv0_n32_N9S21124C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1264_N9S21124C17D0Ev,_ZThn832_N9S21124C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C17D1Ev,_ZTv0_n32_N9S21124C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1264_N9S21124C17D1Ev,_ZThn832_N9S21124C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C17D0Ev,_ZTv0_n36_N9S21124C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N9S21124C17D0Ev,_ZThn776_N9S21124C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C17D1Ev,_ZTv0_n36_N9S21124C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N9S21124C17D1Ev,_ZThn776_N9S21124C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C17D0Ev,_ZTv0_n28_N9S21124C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21124C17D0Ev,_ZThn8_N9S21124C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C17D1Ev,_ZTv0_n28_N9S21124C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21124C17D1Ev,_ZThn8_N9S21124C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S21124C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S21124C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C16D0Ev,_ZTv0_n32_N9S21124C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S21124C16D0Ev,_ZThn924_N9S21124C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C16D1Ev,_ZTv0_n32_N9S21124C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S21124C16D1Ev,_ZThn924_N9S21124C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C16D0Ev,_ZTv0_n36_N9S21124C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N9S21124C16D0Ev,_ZThn868_N9S21124C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C16D1Ev,_ZTv0_n36_N9S21124C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N9S21124C16D1Ev,_ZThn868_N9S21124C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C16D0Ev,_ZTv0_n28_N9S21124C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21124C16D0Ev,_ZThn100_N9S21124C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C16D1Ev,_ZTv0_n28_N9S21124C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21124C16D1Ev,_ZThn100_N9S21124C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21124C16D0Ev,_ZTv0_n40_N9S21124C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21124C16D0Ev,_ZThn92_N9S21124C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21124C16D1Ev,_ZTv0_n40_N9S21124C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21124C16D1Ev,_ZThn92_N9S21124C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C15D0Ev,_ZTv0_n32_N9S21124C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S21124C15D0Ev,_ZThn924_N9S21124C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C15D1Ev,_ZTv0_n32_N9S21124C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1408_N9S21124C15D1Ev,_ZThn924_N9S21124C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C15D0Ev,_ZTv0_n36_N9S21124C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N9S21124C15D0Ev,_ZThn868_N9S21124C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C15D1Ev,_ZTv0_n36_N9S21124C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1344_N9S21124C15D1Ev,_ZThn868_N9S21124C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C15D0Ev,_ZTv0_n28_N9S21124C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21124C15D0Ev,_ZThn100_N9S21124C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C15D1Ev,_ZTv0_n28_N9S21124C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21124C15D1Ev,_ZThn100_N9S21124C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21124C15D0Ev,_ZTv0_n40_N9S21124C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1528_N9S21124C15D0Ev,_ZThn1000_N9S21124C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21124C15D0Ev,_ZThn92_N9S21124C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21124C15D1Ev,_ZTv0_n40_N9S21124C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1528_N9S21124C15D1Ev,_ZThn1000_N9S21124C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S21124C15D1Ev,_ZThn92_N9S21124C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21124C15D0Ev,_ZTv0_n24_N9S21124C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21124C15D0Ev,_ZThn4_N9S21124C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21124C15D1Ev,_ZTv0_n24_N9S21124C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21124C15D1Ev,_ZThn4_N9S21124C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21124C15 = {  "S21124C15", // class name
  bases_S21124C15, 30,
  &(vtc_S21124C15[0]), // expected_vtbl_contents
  &(vtt_S21124C15[0]), // expected_vtt_contents
  ABISELECT(1536,1004), // object size
  NSPAIRA(_ZTI9S21124C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S21124C15),108, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21124C15),65, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21124C22  : S21124C14 , S21124C6 {
  ~S21124C22(); // tgen
  S21124C22(); // tgen
};
//SIG(-1 S21124C22) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} BC5{ BC4 VBC3 BC6{ m} Fp[10]}}


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

static void Test_S21124C22()
{
  extern Class_Descriptor cd_S21124C22;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S21124C22, buf);
    S21124C22 *dp, &lv = *(dp=new (buf) S21124C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S21124C22)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21124C22)");
    check_base_class_offset(lv, (S20997C6*)(S21124C14*), ABISELECT(8,4), "S21124C22");
    check_base_class_offset(lv, (S21124C5*)(S21124C14*), 0, "S21124C22");
    check_base_class_offset(lv, (S21124C14*), 0, "S21124C22");
    check_base_class_offset(lv, (S21124C5*)(S21124C6*), ABISELECT(48,44), "S21124C22");
    check_base_class_offset(lv, (S20997C6*)(S21124C6*), ABISELECT(136,88), "S21124C22");
    check_base_class_offset(lv, (S4227C37*)(S21124C6*), ABISELECT(48,44), "S21124C22");
    check_base_class_offset(lv, (S21124C6*), ABISELECT(48,44), "S21124C22");
    test_class_info(&lv, &cd_S21124C22);
    dp->~S21124C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C22(Test_S21124C22, "S21124C22", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN9S21124C22C1Ev();
extern void _ZN9S21124C22D1Ev();
Name_Map name_map_S21124C22[] = {
  NSPAIR(_ZN9S21124C22C1Ev),
  NSPAIR(_ZN9S21124C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C14;
extern VTBL_ENTRY _ZTI9S21124C14[];
extern  VTBL_ENTRY _ZTV9S21124C14[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
static Base_Class bases_S21124C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21124C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21124C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S21124C5,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    6, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21124C6,    ABISELECT(48,44), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21124C22[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY vtc_S21124C22[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C22[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  ABISELECT(88,44),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S21124C22[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S21124C22[];
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C6__9S21124C22[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
static  VTT_ENTRY vtt_S21124C22[] = {
  {&(_ZTV9S21124C22[3]),  3,8},
  {&(_tg__ZTV8S21124C6__9S21124C22[3]),  3,4},
  {&(_ZTV9S21124C22[7]),  7,8},
};
extern VTBL_ENTRY _ZTI9S21124C22[];
extern  VTBL_ENTRY _ZTV9S21124C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C22[];
Class_Descriptor cd_S21124C22 = {  "S21124C22", // class name
  bases_S21124C22, 7,
  &(vtc_S21124C22[0]), // expected_vtbl_contents
  &(vtt_S21124C22[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI9S21124C22),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21124C22),8, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21124C22),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  S21124C24  : S4227C20 {
};
//SIG(-1 S21124C24) C1{ BC2{ m}}



static void Test_S21124C24()
{
  extern Class_Descriptor cd_S21124C24;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S21124C24, buf);
    S21124C24 &lv = *(new (buf) S21124C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S21124C24)");
    check2(__alignof__(lv), 1, "__alignof__(S21124C24)");
    check_base_class_offset(lv, (S4227C20*), 0, "S21124C24");
    test_class_info(&lv, &cd_S21124C24);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C24(Test_S21124C24, "S21124C24", 1);

#else // __cplusplus

extern Class_Descriptor cd_S4227C20;
extern VTBL_ENTRY _ZTI8S4227C20[];
static Base_Class bases_S21124C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21124C24[];
Class_Descriptor cd_S21124C24 = {  "S21124C24", // class name
  bases_S21124C24, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI9S21124C24),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  S21124C21  : virtual S21124C6 , virtual S21124C19 , virtual S21124C22 , S4227C23 , virtual S21124C24 {
  virtual  ~S21124C21(); // _ZN9S21124C21D2Ev
  S21124C21(); // tgen
};
//SIG(-1 S21124C21) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC7{ m FL[4]} VBC8{ VBC4 VBC3 BC5 vd} vd} VBC9{ BC10{ BC4 BC3} BC2} BC11{ m} VBC12{ BC13{ m}} vd}


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

static void Test_S21124C21()
{
  extern Class_Descriptor cd_S21124C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,53)];
    init_test(&cd_S21124C21, buf);
    S21124C21 *dp, &lv = *(dp=new (buf) S21124C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,208), "sizeof(S21124C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21124C21)");
    /*is_ambiguous_... S21124C21::S21124C6 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C6*), ABISELECT(8,4), "S21124C21");
    /*is_ambiguous_... S21124C21::S21124C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C6*), ABISELECT(96,48), "S21124C21");
    check_base_class_offset(lv, (S20997C6*)(S21124C11*), ABISELECT(96,48), "S21124C21");
    check_base_class_offset(lv, (S20997C6*)(S21124C6*)(S21124C22*), ABISELECT(96,48), "S21124C21");
    /*is_ambiguous_... S21124C21::S21124C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C6*), ABISELECT(8,4), "S21124C21");
    /*is_ambiguous_... S21124C21::S21124C6 */ AMB_check_base_class_offset(lv, (S21124C6*), ABISELECT(8,4), "S21124C21");
    check_base_class_offset(lv, (S10258C6_nt*)(S21124C19*), ABISELECT(136,88), "S21124C21");
    check_base_class_offset(lv, (S21124C5*)(S21124C11*), 0, "S21124C21");
    check_base_class_offset(lv, (S4227C37*)(S21124C11*), 0, "S21124C21");
    check_base_class_offset(lv, (S21124C11*)(S21124C19*), 0, "S21124C21");
    check_base_class_offset(lv, (S21124C19*), 0, "S21124C21");
    check_base_class_offset(lv, (S20997C6*)(S21124C14*)(S21124C22*), ABISELECT(176,124), "S21124C21");
    check_base_class_offset(lv, (S21124C5*)(S21124C14*)(S21124C22*), ABISELECT(168,120), "S21124C21");
    check_base_class_offset(lv, (S21124C14*)(S21124C22*), ABISELECT(168,120), "S21124C21");
    check_base_class_offset(lv, (S21124C5*)(S21124C6*)(S21124C22*), ABISELECT(216,164), "S21124C21");
    check_base_class_offset(lv, (S4227C37*)(S21124C6*)(S21124C22*), ABISELECT(216,164), "S21124C21");
    check_base_class_offset(lv, (S21124C6*)(S21124C22*), ABISELECT(216,164), "S21124C21");
    check_base_class_offset(lv, (S21124C22*), ABISELECT(168,120), "S21124C21");
    check_base_class_offset(lv, (S4227C23*), 0, "S21124C21");
    check_base_class_offset(lv, (S4227C20*)(S21124C24*), 0, "S21124C21");
    check_base_class_offset(lv, (S21124C24*), 0, "S21124C21");
    test_class_info(&lv, &cd_S21124C21);
    dp->~S21124C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C21(Test_S21124C21, "S21124C21", ABISELECT(304,208));

#else // __cplusplus

extern void _ZN9S21124C21C1Ev();
extern void _ZN9S21124C21D2Ev();
Name_Map name_map_S21124C21[] = {
  NSPAIR(_ZN9S21124C21C1Ev),
  NSPAIR(_ZN9S21124C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S21124C19;
extern VTBL_ENTRY _ZTI9S21124C19[];
extern  VTBL_ENTRY _ZTV9S21124C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C19[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C14;
extern VTBL_ENTRY _ZTI9S21124C14[];
extern  VTBL_ENTRY _ZTV9S21124C14[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S21124C22;
extern VTBL_ENTRY _ZTI9S21124C22[];
extern  VTBL_ENTRY _ZTV9S21124C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C22[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S4227C20;
extern VTBL_ENTRY _ZTI8S4227C20[];
extern Class_Descriptor cd_S21124C24;
extern VTBL_ENTRY _ZTI9S21124C24[];
static Base_Class bases_S21124C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21124C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C6,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_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
    8, //immediately_derived
  0, 1},
  {&cd_S21124C5,    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
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 1},
  {&cd_S21124C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(176,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
    11, //immediately_derived
  0, 0},
  {&cd_S21124C5,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21124C14,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21124C5,    ABISELECT(216,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
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S21124C6,    ABISELECT(216,164), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21124C22,    ABISELECT(168,120), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S21124C21[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C21D1Ev();
extern void _ZN9S21124C21D0Ev();
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY vtc_S21124C21[] = {
  0,
  ABISELECT(168,120),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(136,88),
  0,
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C21[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C21D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C21D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21124C21[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  0,
  -72,
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI9S21124C21[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  ABISELECT(-120,-116),
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI9S21124C21[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S21124C21[];
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C6__9S21124C21[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev)();
extern void _ZN9S21124C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev)();
extern void _ZN9S21124C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21124C19__9S21124C21[] = {
  0,
  ABISELECT(136,88),
  0,
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C19[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C11__9S21124C21[] = {
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C22__9S21124C21[] = {
  -72,
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C22[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C69S21124C22__A1__9S21124C21[] = {
  ABISELECT(-120,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C6__9S21124C22__9S21124C21[] = {
  ABISELECT(-120,-116),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S21124C22[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
static  VTT_ENTRY vtt_S21124C21[] = {
  {&(_ZTV9S21124C21[12]),  12,29},
  {&(_ZTV9S21124C21[19]),  19,29},
  {&(_ZTV9S21124C21[12]),  12,29},
  {&(_ZTV9S21124C21[12]),  12,29},
  {&(_ZTV9S21124C21[12]),  12,29},
  {&(_ZTV9S21124C21[24]),  24,29},
  {&(_ZTV9S21124C21[28]),  28,29},
  {&(_tg__ZTV8S21124C6__9S21124C21[3]),  3,4},
  {&(_tg__ZTV9S21124C19__9S21124C21[8]),  8,11},
  {&(_tg__ZTV9S21124C19__9S21124C21[8]),  8,11},
  {&(_tg__ZTV9S21124C19__9S21124C21[8]),  8,11},
  {&(_tg__ZTV9S21124C11__9S21124C21[5]),  5,8},
  {&(_tg__ZTV9S21124C11__9S21124C21[5]),  5,8},
  {&(_tg__ZTV9S21124C22__9S21124C21[3]),  3,4},
  {&(_tg__ZTV8S21124C69S21124C22__A1__9S21124C21[3]),  3,4},
  {&(_tg__ZTV8S21124C6__9S21124C22__9S21124C21[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S21124C21[];
extern  VTBL_ENTRY _ZTV9S21124C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C21[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S21124C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S21124C19D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21124C21 = {  "S21124C21", // class name
  bases_S21124C21, 19,
  &(vtc_S21124C21[0]), // expected_vtbl_contents
  &(vtt_S21124C21[0]), // expected_vtt_contents
  ABISELECT(304,208), // object size
  NSPAIRA(_ZTI9S21124C21),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21124C21),29, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21124C21),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21124C1  : virtual S21124C2 , S21124C15 , virtual S21124C21 , S4227C27 {
  virtual  ~S21124C1(); // _ZN8S21124C1D2Ev
  S21124C1(); // tgen
};
//SIG(1 S21124C1) C1{ VBC2{ VBC3{ VBC4{ VBC5{ v1} BC6{ BC5 VBC7{ m FL[5]} BC8{ m} Fp[10]} VBC9{ VBC8 BC10{ VBC5 FC6[9]} BC11{ VBC7 VBC5 BC8 vd} BC12{ BC11 vd}} vd} BC13{ BC14{ BC7 BC5} FD}}} BC15{ BC16{ VBC6 VBC17{ VBC7 VBC9 VBC3 vd Fp}} BC18{ m} BC19{ VBC20{ m FL[4]} VBC11 vd} VBC2} VBC21{ VBC6 VBC19 VBC22{ BC14 BC6} BC23{ m} VBC24{ BC25{ m}} vd} BC18 vd}


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

static void Test_S21124C1()
{
  extern Class_Descriptor cd_S21124C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(106,275)];
    init_test(&cd_S21124C1, buf);
    S21124C1 *dp, &lv = *(dp=new (buf) S21124C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1680,1096), "sizeof(S21124C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21124C1)");
    /*is_ambiguous_... S21124C4::S21124C5 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C4*), ABISELECT(16,8), "S21124C1");
    check_base_class_offset(lv, (S21124C5*)(S21124C10*)(S21124C9*), ABISELECT(16,8), "S21124C1");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C9*), ABISELECT(16,8), "S21124C1");
    check_base_class_offset(lv, (S21124C5*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(16,8), "S21124C1");
    /*is_ambiguous_... S21124C1::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C11*), ABISELECT(16,8), "S21124C1");
    check_base_class_offset(lv, (S21124C5*)(S21124C6*)(S21124C4*), ABISELECT(96,68), "S21124C1");
    check_base_class_offset(lv, (S20997C6*)(S21124C6*)(S21124C4*), ABISELECT(184,112), "S21124C1");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C9*), ABISELECT(184,112), "S21124C1");
    check_base_class_offset(lv, (S20997C6*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(184,112), "S21124C1");
    /*is_ambiguous_... S21124C1::S21124C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C6*), ABISELECT(184,112), "S21124C1");
    /*is_ambiguous_... S21124C17::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C17*), ABISELECT(184,112), "S21124C1");
    /*is_ambiguous_... S21124C1::S21124C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21124C11*), ABISELECT(184,112), "S21124C1");
    check_base_class_offset(lv, (S20997C6*)(S21124C6*)(S21124C22*), ABISELECT(184,112), "S21124C1");
    check_base_class_offset(lv, (S4227C37*)(S21124C6*)(S21124C4*), ABISELECT(96,68), "S21124C1");
    check_base_class_offset(lv, (S21124C6*)(S21124C4*), ABISELECT(96,68), "S21124C1");
    /*is_ambiguous_... S21124C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C9*), 0, "S21124C1");
    check_base_class_offset(lv, (S21124C10*)(S21124C9*), ABISELECT(224,152), "S21124C1");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C9*), ABISELECT(1384,912), "S21124C1");
    /*is_ambiguous_... S21124C9::S21124C11 */ AMB_check_base_class_offset(lv, (S21124C11*)(S21124C9*), ABISELECT(1384,912), "S21124C1");
    check_base_class_offset(lv, (S4227C37*)(S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1392,916), "S21124C1");
    check_base_class_offset(lv, (S21124C11*)(S21124C12*)(S21124C9*), ABISELECT(1392,916), "S21124C1");
    check_base_class_offset(lv, (S21124C12*)(S21124C9*), ABISELECT(1392,916), "S21124C1");
    check_base_class_offset(lv, (S21124C9*)(S21124C4*), ABISELECT(224,152), "S21124C1");
    check_base_class_offset(lv, (S21124C9*)(S21124C17*), ABISELECT(224,152), "S21124C1");
    check_base_class_offset(lv, (S21124C4*)(S21124C3*), ABISELECT(96,68), "S21124C1");
    check_base_class_offset(lv, (S20997C6*)(S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(40,16), "S21124C1");
    check_base_class_offset(lv, (S21124C5*)(S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(32,12), "S21124C1");
    check_base_class_offset(lv, (S21124C14*)(S21124C13*)(S21124C3*), ABISELECT(32,12), "S21124C1");
    check_base_class_offset(lv, (S21124C13*)(S21124C3*), ABISELECT(32,12), "S21124C1");
    check_base_class_offset(lv, (S21124C3*)(S21124C2*), ABISELECT(32,12), "S21124C1");
    check_base_class_offset(lv, (S21124C3*)(S21124C17*), ABISELECT(32,12), "S21124C1");
    check_base_class_offset(lv, (S21124C2*), ABISELECT(16,8), "S21124C1");
    check_base_class_offset(lv, (S21124C2*)(S21124C15*), ABISELECT(16,8), "S21124C1");
    /*is_ambiguous_... S21124C1::S21124C6 */ AMB_check_base_class_offset(lv, (S21124C5*)(S21124C6*), ABISELECT(1400,920), "S21124C1");
    /*is_ambiguous_... S21124C1::S21124C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C6*), ABISELECT(1400,920), "S21124C1");
    /*is_ambiguous_... S21124C16::S21124C6 */ AMB_check_base_class_offset(lv, (S21124C6*)(S21124C16*)(S21124C15*), ABISELECT(1400,920), "S21124C1");
    /*is_ambiguous_... S21124C21::S21124C6 */ AMB_check_base_class_offset(lv, (S21124C6*)(S21124C21*), ABISELECT(1400,920), "S21124C1");
    check_base_class_offset(lv, (S21124C17*)(S21124C16*)(S21124C15*), ABISELECT(1488,964), "S21124C1");
    check_base_class_offset(lv, (S21124C16*)(S21124C15*), 0, "S21124C1");
    check_base_class_offset(lv, (S4227C27*)(S21124C15*), 0, "S21124C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S21124C19*)(S21124C15*), ABISELECT(1504,972), "S21124C1");
    /*is_ambiguous_... S21124C1::S21124C19 */ AMB_check_base_class_offset(lv, (S10258C6_nt*)(S21124C19*), ABISELECT(1504,972), "S21124C1");
    /*is_ambiguous_... S21124C1::S21124C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21124C11*), ABISELECT(8,4), "S21124C1");
    check_base_class_offset(lv, (S21124C11*)(S21124C19*)(S21124C15*), ABISELECT(8,4), "S21124C1");
    /*is_ambiguous_... S21124C1::S21124C19 */ AMB_check_base_class_offset(lv, (S21124C11*)(S21124C19*), ABISELECT(8,4), "S21124C1");
    check_base_class_offset(lv, (S21124C19*)(S21124C15*), ABISELECT(8,4), "S21124C1");
    check_base_class_offset(lv, (S21124C15*), 0, "S21124C1");
    check_base_class_offset(lv, (S21124C19*)(S21124C21*), ABISELECT(1536,1004), "S21124C1");
    check_base_class_offset(lv, (S20997C6*)(S21124C14*)(S21124C22*), ABISELECT(1552,1012), "S21124C1");
    check_base_class_offset(lv, (S21124C5*)(S21124C14*)(S21124C22*), ABISELECT(1544,1008), "S21124C1");
    check_base_class_offset(lv, (S21124C14*)(S21124C22*), ABISELECT(1544,1008), "S21124C1");
    check_base_class_offset(lv, (S21124C5*)(S21124C6*)(S21124C22*), ABISELECT(1592,1052), "S21124C1");
    check_base_class_offset(lv, (S4227C37*)(S21124C6*)(S21124C22*), ABISELECT(1592,1052), "S21124C1");
    check_base_class_offset(lv, (S21124C6*)(S21124C22*), ABISELECT(1592,1052), "S21124C1");
    check_base_class_offset(lv, (S21124C22*)(S21124C21*), ABISELECT(1544,1008), "S21124C1");
    check_base_class_offset(lv, (S4227C23*)(S21124C21*), ABISELECT(1536,1004), "S21124C1");
    check_base_class_offset(lv, (S4227C20*)(S21124C24*), 0, "S21124C1");
    check_base_class_offset(lv, (S21124C24*)(S21124C21*), 0, "S21124C1");
    check_base_class_offset(lv, (S21124C21*), ABISELECT(1536,1004), "S21124C1");
    /*is_ambiguous_... S21124C1::S4227C27 */ AMB_check_base_class_offset(lv, (S4227C27*), ABISELECT(16,8), "S21124C1");
    test_class_info(&lv, &cd_S21124C1);
    dp->~S21124C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21124C1(Test_S21124C1, "S21124C1", ABISELECT(1680,1096));

#else // __cplusplus

extern void _ZN8S21124C1C1Ev();
extern void _ZN8S21124C1D2Ev();
Name_Map name_map_S21124C1[] = {
  NSPAIR(_ZN8S21124C1C1Ev),
  NSPAIR(_ZN8S21124C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C10;
extern VTBL_ENTRY _ZTI9S21124C10[];
extern  VTBL_ENTRY _ZTV9S21124C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S21124C12;
extern VTBL_ENTRY _ZTI9S21124C12[];
extern  VTBL_ENTRY _ZTV9S21124C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C12[];
extern Class_Descriptor cd_S21124C9;
extern VTBL_ENTRY _ZTI8S21124C9[];
extern  VTBL_ENTRY _ZTV8S21124C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C9[];
extern Class_Descriptor cd_S21124C4;
extern VTBL_ENTRY _ZTI8S21124C4[];
extern  VTBL_ENTRY _ZTV8S21124C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C14;
extern VTBL_ENTRY _ZTI9S21124C14[];
extern  VTBL_ENTRY _ZTV9S21124C14[];
extern Class_Descriptor cd_S21124C13;
extern VTBL_ENTRY _ZTI9S21124C13[];
extern  VTBL_ENTRY _ZTV9S21124C13[];
extern Class_Descriptor cd_S21124C3;
extern VTBL_ENTRY _ZTI8S21124C3[];
extern  VTBL_ENTRY _ZTV8S21124C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C3[];
extern Class_Descriptor cd_S21124C2;
extern VTBL_ENTRY _ZTI8S21124C2[];
extern  VTBL_ENTRY _ZTV8S21124C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C2[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S21124C17;
extern VTBL_ENTRY _ZTI9S21124C17[];
extern  VTBL_ENTRY _ZTV9S21124C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C17[];
extern Class_Descriptor cd_S21124C16;
extern VTBL_ENTRY _ZTI9S21124C16[];
extern  VTBL_ENTRY _ZTV9S21124C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C16[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C11;
extern VTBL_ENTRY _ZTI9S21124C11[];
extern  VTBL_ENTRY _ZTV9S21124C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C11[];
extern Class_Descriptor cd_S21124C19;
extern VTBL_ENTRY _ZTI9S21124C19[];
extern  VTBL_ENTRY _ZTV9S21124C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C19[];
extern Class_Descriptor cd_S21124C15;
extern VTBL_ENTRY _ZTI9S21124C15[];
extern  VTBL_ENTRY _ZTV9S21124C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C15[];
extern Class_Descriptor cd_S21124C19;
extern VTBL_ENTRY _ZTI9S21124C19[];
extern  VTBL_ENTRY _ZTV9S21124C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C19[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S21124C14;
extern VTBL_ENTRY _ZTI9S21124C14[];
extern  VTBL_ENTRY _ZTV9S21124C14[];
extern Class_Descriptor cd_S21124C5;
extern VTBL_ENTRY _ZTI8S21124C5[];
extern  VTBL_ENTRY _ZTV8S21124C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21124C6;
extern VTBL_ENTRY _ZTI8S21124C6[];
extern  VTBL_ENTRY _ZTV8S21124C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C6[];
extern Class_Descriptor cd_S21124C22;
extern VTBL_ENTRY _ZTI9S21124C22[];
extern  VTBL_ENTRY _ZTV9S21124C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C22[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S4227C20;
extern VTBL_ENTRY _ZTI8S4227C20[];
extern Class_Descriptor cd_S21124C24;
extern VTBL_ENTRY _ZTI9S21124C24[];
extern Class_Descriptor cd_S21124C21;
extern VTBL_ENTRY _ZTI9S21124C21[];
extern  VTBL_ENTRY _ZTV9S21124C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21124C21[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
static Base_Class bases_S21124C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21124C5,    ABISELECT(16,8), //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
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21124C5,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21124C6,    ABISELECT(96,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C10,    ABISELECT(224,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1384,912), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21124C11,    ABISELECT(1384,912), //bcp->offset
    78, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(1392,916), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21124C12,    ABISELECT(1392,916), //bcp->offset
    86, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21124C9,    ABISELECT(224,152), //bcp->offset
    68, //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
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21124C4,    ABISELECT(96,68), //bcp->offset
    57, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(40,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21124C5,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21124C14,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21124C13,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21124C3,    ABISELECT(32,12), //bcp->offset
    45, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S21124C2,    ABISELECT(16,8), //bcp->offset
    32, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21124C5,    ABISELECT(1400,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1400,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21124C6,    ABISELECT(1400,920), //bcp->offset
    94, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S21124C17,    ABISELECT(1488,964), //bcp->offset
    99, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S21124C16,    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
    26, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S4227C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S10258C6_nt,    ABISELECT(1504,972), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C11,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S21124C19,    ABISELECT(8,4), //bcp->offset
    21, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S21124C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //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_S21124C19,    ABISELECT(1536,1004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1552,1012), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21124C5,    ABISELECT(1544,1008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S21124C14,    ABISELECT(1544,1008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S21124C5,    ABISELECT(1592,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1592,1052), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S21124C6,    ABISELECT(1592,1052), //bcp->offset
    132, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S21124C22,    ABISELECT(1544,1008), //bcp->offset
    127, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    42, //immediately_derived
  0, 1},
  {&cd_S4227C23,    ABISELECT(1536,1004), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S21124C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S21124C21,    ABISELECT(1536,1004), //bcp->offset
    112, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C27,    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 _ZTI8S21124C1[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C1D1Ev();
extern void _ZN8S21124C1D0Ev();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21124C1D1Ev,_ZTv0_n24_N8S21124C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S21124C1D1Ev,_ZThn4_N8S21124C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21124C1D0Ev,_ZTv0_n24_N8S21124C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S21124C1D0Ev,_ZThn4_N8S21124C1D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S21124C1D1Ev,_ZTv0_n40_N8S21124C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21124C1D1Ev,_ZThn8_N8S21124C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21124C1D0Ev,_ZTv0_n40_N8S21124C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21124C1D0Ev,_ZThn8_N8S21124C1D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21124C1D1Ev,_ZTv0_n36_N8S21124C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S21124C1D1Ev,_ZThn12_N8S21124C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21124C1D0Ev,_ZTv0_n36_N8S21124C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S21124C1D0Ev,_ZThn12_N8S21124C1D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21124C1D1Ev,_ZTv0_n32_N8S21124C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S21124C1D1Ev,_ZThn68_N8S21124C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21124C1D0Ev,_ZTv0_n32_N8S21124C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S21124C1D0Ev,_ZThn68_N8S21124C1D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C1D1Ev,_ZTv0_n28_N8S21124C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S21124C1D1Ev,_ZThn152_N8S21124C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21124C1D0Ev,_ZTv0_n28_N8S21124C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S21124C1D0Ev,_ZThn152_N8S21124C1D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C1D1Ev,_ZTvn760_n28_N8S21124C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C1D0Ev,_ZTvn760_n28_N8S21124C1D0Ev)();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C1D1Ev,_ZTvn764_n28_N8S21124C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C1D0Ev,_ZTvn764_n28_N8S21124C1D0Ev)();
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S21124C1D1Ev,_ZTv0_n40_N8S21124C1D1Ev)();
extern void ABISELECT(_ZThn1488_N8S21124C1D1Ev,_ZThn964_N8S21124C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21124C1D0Ev,_ZTv0_n40_N8S21124C1D0Ev)();
extern void ABISELECT(_ZThn1488_N8S21124C1D0Ev,_ZThn964_N8S21124C1D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S21124C1D1Ev,_ZTv0_n24_N8S21124C1D1Ev)();
extern void ABISELECT(_ZThn1536_N8S21124C1D1Ev,_ZThn1004_N8S21124C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21124C1D0Ev,_ZTv0_n24_N8S21124C1D0Ev)();
extern void ABISELECT(_ZThn1536_N8S21124C1D0Ev,_ZThn1004_N8S21124C1D0Ev)() __attribute__((weak));
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY vtc_S21124C1[] = {
  0,
  ABISELECT(1544,1008),
  ABISELECT(1536,1004),
  ABISELECT(1536,1004),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(1504,972),
  ABISELECT(96,68),
  ABISELECT(32,12),
  ABISELECT(16,8),
  0,
  ABISELECT(224,152),
  ABISELECT(1488,964),
  ABISELECT(184,112),
  ABISELECT(1400,920),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C1D0Ev,
  0,
  ABISELECT(1496,968),
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(176,108),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21124C1D1Ev,_ZTv0_n24_N8S21124C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21124C1D0Ev,_ZTv0_n24_N8S21124C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(208,144),
  ABISELECT(168,104),
  0,
  ABISELECT(80,60),
  ABISELECT(16,4),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21124C1D1Ev,_ZTv0_n40_N8S21124C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21124C1D0Ev,_ZTv0_n40_N8S21124C1D0Ev),
  ABISELECT(-32,-12),
  0,
  ABISELECT(-32,-12),
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(-16,-4),
  ABISELECT(64,56),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21124C1D1Ev,_ZTv0_n36_N8S21124C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21124C1D0Ev,_ZTv0_n36_N8S21124C1D0Ev),
  ABISELECT(-96,-68),
  0,
  ABISELECT(-96,-68),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C1D1Ev,_ZTv0_n32_N8S21124C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C1D0Ev,_ZTv0_n32_N8S21124C1D0Ev),
  ABISELECT(-224,-152),
  -40,
  ABISELECT(-224,-152),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C1D1Ev,_ZTv0_n28_N8S21124C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C1D0Ev,_ZTv0_n28_N8S21124C1D0Ev),
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1384,-912),
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C1D1Ev,_ZTvn760_n28_N8S21124C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C1D0Ev,_ZTvn760_n28_N8S21124C1D0Ev),
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1392,-916),
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C1D1Ev,_ZTvn764_n28_N8S21124C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C1D0Ev,_ZTvn764_n28_N8S21124C1D0Ev),
  0,
  ABISELECT(-1216,-808),
  ABISELECT(-1400,-920),
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  ABISELECT(-1488,-964),
  ABISELECT(-1392,-896),
  ABISELECT(-1456,-952),
  ABISELECT(-1472,-956),
  ABISELECT(-1488,-964),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1472,-956),
  ABISELECT(-1488,-964),
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21124C1D1Ev,_ZTv0_n40_N8S21124C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21124C1D0Ev,_ZTv0_n40_N8S21124C1D0Ev),
  ABISELECT(-1536,-1004),
  ABISELECT(8,4),
  0,
  ABISELECT(-136,-84),
  ABISELECT(-1528,-1000),
  -32,
  ABISELECT(-1536,-1004),
  ABISELECT(-1520,-996),
  ABISELECT(-1352,-892),
  ABISELECT(-1520,-996),
  ABISELECT(-1536,-1004),
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21124C1D1Ev,_ZTv0_n24_N8S21124C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21124C1D0Ev,_ZTv0_n24_N8S21124C1D0Ev),
  0,
  ABISELECT(-1360,-896),
  ABISELECT(-1544,-1008),
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  ABISELECT(-1408,-940),
  ABISELECT(-1592,-1052),
  (VTBL_ENTRY)&(_ZTI8S21124C1[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S21124C1[];
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C15D1Ev();
extern void _ZN9S21124C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C15__8S21124C1[] = {
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(1504,972),
  ABISELECT(96,68),
  ABISELECT(32,12),
  ABISELECT(16,8),
  0,
  ABISELECT(224,152),
  ABISELECT(1488,964),
  ABISELECT(184,112),
  ABISELECT(1400,920),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C15D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C16D1Ev();
extern void _ZN9S21124C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C169S21124C15__8S21124C1[] = {
  ABISELECT(96,68),
  ABISELECT(32,12),
  ABISELECT(16,8),
  0,
  ABISELECT(224,152),
  ABISELECT(1488,964),
  ABISELECT(184,112),
  ABISELECT(1400,920),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C16D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C16D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C6__9S21124C169S21124C15__8S21124C1[] = {
  0,
  ABISELECT(-1216,-808),
  ABISELECT(-1400,-920),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S21124C16D1Ev,_ZTv0_n40_N9S21124C16D1Ev)();
extern void ABISELECT(_ZThn1488_N9S21124C16D1Ev,_ZThn964_N9S21124C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21124C16D0Ev,_ZTv0_n40_N9S21124C16D0Ev)();
extern void ABISELECT(_ZThn1488_N9S21124C16D0Ev,_ZThn964_N9S21124C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21124C17__9S21124C169S21124C15__8S21124C1[] = {
  ABISELECT(-1488,-964),
  ABISELECT(-1392,-896),
  ABISELECT(-1456,-952),
  ABISELECT(-1472,-956),
  ABISELECT(-1488,-964),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1472,-956),
  ABISELECT(-1488,-964),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C16D1Ev,_ZTv0_n40_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C16D0Ev,_ZTv0_n40_N9S21124C16D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21124C16D1Ev,_ZTv0_n28_N9S21124C16D1Ev)();
extern void ABISELECT(_ZThn224_N9S21124C16D1Ev,_ZThn152_N9S21124C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21124C16D0Ev,_ZTv0_n28_N9S21124C16D0Ev)();
extern void ABISELECT(_ZThn224_N9S21124C16D0Ev,_ZThn152_N9S21124C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C9__9S21124C169S21124C15__8S21124C1[] = {
  ABISELECT(-224,-152),
  -40,
  ABISELECT(-224,-152),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C16D1Ev,_ZTv0_n28_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C16D0Ev,_ZTv0_n28_N9S21124C16D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__A1__9S21124C169S21124C15__8S21124C1[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C16D1Ev,_ZTvn760_n28_N9S21124C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C16D0Ev,_ZTvn760_n28_N9S21124C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__9S21124C169S21124C15__8S21124C1[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1384,-912),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C16D1Ev,_ZTvn760_n28_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C16D0Ev,_ZTvn760_n28_N9S21124C16D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C16D1Ev,_ZTvn764_n28_N9S21124C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C16D0Ev,_ZTvn764_n28_N9S21124C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__9S21124C169S21124C15__8S21124C1[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1392,-916),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C16D1Ev,_ZTvn764_n28_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C16D0Ev,_ZTvn764_n28_N9S21124C16D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21124C16D1Ev,_ZTv0_n36_N9S21124C16D1Ev)();
extern void ABISELECT(_ZThn32_N9S21124C16D1Ev,_ZThn12_N9S21124C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21124C16D0Ev,_ZTv0_n36_N9S21124C16D0Ev)();
extern void ABISELECT(_ZThn32_N9S21124C16D0Ev,_ZThn12_N9S21124C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C3__9S21124C169S21124C15__8S21124C1[] = {
  ABISELECT(-32,-12),
  0,
  ABISELECT(-32,-12),
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(-16,-4),
  ABISELECT(64,56),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C16D1Ev,_ZTv0_n36_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C16D0Ev,_ZTv0_n36_N9S21124C16D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21124C16D1Ev,_ZTv0_n32_N9S21124C16D1Ev)();
extern void ABISELECT(_ZThn96_N9S21124C16D1Ev,_ZThn68_N9S21124C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21124C16D0Ev,_ZTv0_n32_N9S21124C16D0Ev)();
extern void ABISELECT(_ZThn96_N9S21124C16D0Ev,_ZThn68_N9S21124C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C4__9S21124C169S21124C15__8S21124C1[] = {
  ABISELECT(-96,-68),
  0,
  ABISELECT(-96,-68),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI9S21124C16[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C16D1Ev,_ZTv0_n32_N9S21124C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C16D0Ev,_ZTv0_n32_N9S21124C16D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev)();
extern void _ZN9S21124C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev)();
extern void _ZN9S21124C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21124C199S21124C15__8S21124C1[] = {
  0,
  ABISELECT(1496,968),
  0,
  ABISELECT(8,4),
  ABISELECT(176,108),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C19[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C199S21124C15__8S21124C1[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21124C19[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C6__9S21124C15__8S21124C1[] = {
  0,
  ABISELECT(-1216,-808),
  ABISELECT(-1400,-920),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S21124C15D1Ev,_ZTv0_n40_N9S21124C15D1Ev)();
extern void ABISELECT(_ZThn1488_N9S21124C15D1Ev,_ZThn964_N9S21124C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21124C15D0Ev,_ZTv0_n40_N9S21124C15D0Ev)();
extern void ABISELECT(_ZThn1488_N9S21124C15D0Ev,_ZThn964_N9S21124C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21124C17__9S21124C15__8S21124C1[] = {
  ABISELECT(-1488,-964),
  ABISELECT(-1392,-896),
  ABISELECT(-1456,-952),
  ABISELECT(-1472,-956),
  ABISELECT(-1488,-964),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1472,-956),
  ABISELECT(-1488,-964),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C15D1Ev,_ZTv0_n40_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C15D0Ev,_ZTv0_n40_N9S21124C15D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21124C15D1Ev,_ZTv0_n28_N9S21124C15D1Ev)();
extern void ABISELECT(_ZThn224_N9S21124C15D1Ev,_ZThn152_N9S21124C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21124C15D0Ev,_ZTv0_n28_N9S21124C15D0Ev)();
extern void ABISELECT(_ZThn224_N9S21124C15D0Ev,_ZThn152_N9S21124C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C9__9S21124C15__8S21124C1[] = {
  ABISELECT(-224,-152),
  -40,
  ABISELECT(-224,-152),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-224,-152),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C15D1Ev,_ZTv0_n28_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C15D0Ev,_ZTv0_n28_N9S21124C15D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S21124C15D1Ev,_ZTv0_n40_N9S21124C15D1Ev)();
extern void ABISELECT(_ZThn16_N9S21124C15D1Ev,_ZThn8_N9S21124C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21124C15D0Ev,_ZTv0_n40_N9S21124C15D0Ev)();
extern void ABISELECT(_ZThn16_N9S21124C15D0Ev,_ZThn8_N9S21124C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C2__9S21124C15__8S21124C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(208,144),
  ABISELECT(168,104),
  0,
  ABISELECT(80,60),
  ABISELECT(16,4),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C15D1Ev,_ZTv0_n40_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21124C15D0Ev,_ZTv0_n40_N9S21124C15D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C15D1Ev,_ZTvn760_n28_N9S21124C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C15D0Ev,_ZTvn760_n28_N9S21124C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__9S21124C15__8S21124C1[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1384,-912),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C15D1Ev,_ZTvn760_n28_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C15D0Ev,_ZTvn760_n28_N9S21124C15D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C15D1Ev,_ZTvn764_n28_N9S21124C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C15D0Ev,_ZTvn764_n28_N9S21124C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__9S21124C15__8S21124C1[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1392,-916),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C15D1Ev,_ZTvn764_n28_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C15D0Ev,_ZTvn764_n28_N9S21124C15D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21124C15D1Ev,_ZTv0_n36_N9S21124C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S21124C15D1Ev,_ZThn12_N9S21124C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21124C15D0Ev,_ZTv0_n36_N9S21124C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S21124C15D0Ev,_ZThn12_N9S21124C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C3__9S21124C15__8S21124C1[] = {
  ABISELECT(-32,-12),
  0,
  ABISELECT(-32,-12),
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(-16,-4),
  ABISELECT(64,56),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C15D1Ev,_ZTv0_n36_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C15D0Ev,_ZTv0_n36_N9S21124C15D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21124C15D1Ev,_ZTv0_n32_N9S21124C15D1Ev)();
extern void ABISELECT(_ZThn96_N9S21124C15D1Ev,_ZThn68_N9S21124C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21124C15D0Ev,_ZTv0_n32_N9S21124C15D0Ev)();
extern void ABISELECT(_ZThn96_N9S21124C15D0Ev,_ZThn68_N9S21124C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C4__9S21124C15__8S21124C1[] = {
  ABISELECT(-96,-68),
  0,
  ABISELECT(-96,-68),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  ABISELECT(-96,-68),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C15D1Ev,_ZTv0_n32_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C15D0Ev,_ZTv0_n32_N9S21124C15D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21124C15D1Ev,_ZTv0_n24_N9S21124C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S21124C15D1Ev,_ZThn4_N9S21124C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21124C15D0Ev,_ZTv0_n24_N9S21124C15D0Ev)();
extern void ABISELECT(_ZThn8_N9S21124C15D0Ev,_ZThn4_N9S21124C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21124C19__9S21124C15__8S21124C1[] = {
  0,
  ABISELECT(1496,968),
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(176,108),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21124C15[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C15D1Ev,_ZTv0_n24_N9S21124C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C15D0Ev,_ZTv0_n24_N9S21124C15D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C2D1Ev();
extern void _ZN8S21124C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C2__8S21124C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(208,144),
  ABISELECT(168,104),
  0,
  ABISELECT(80,60),
  ABISELECT(16,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C2D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21124C2D1Ev,_ZTv0_n36_N8S21124C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21124C2D1Ev,_ZThn4_N8S21124C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21124C2D0Ev,_ZTv0_n36_N8S21124C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S21124C2D0Ev,_ZThn4_N8S21124C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C3__8S21124C2__8S21124C1[] = {
  ABISELECT(-16,-4),
  0,
  ABISELECT(-32,-12),
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(-16,-4),
  ABISELECT(64,56),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21124C2D1Ev,_ZTv0_n36_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21124C2D0Ev,_ZTv0_n36_N8S21124C2D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21124C2D1Ev,_ZTv0_n32_N8S21124C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S21124C2D1Ev,_ZThn60_N8S21124C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21124C2D0Ev,_ZTv0_n32_N8S21124C2D0Ev)();
extern void ABISELECT(_ZThn80_N8S21124C2D0Ev,_ZThn60_N8S21124C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C4__8S21124C2__8S21124C1[] = {
  ABISELECT(-80,-60),
  0,
  ABISELECT(-96,-68),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C2D1Ev,_ZTv0_n32_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C2D0Ev,_ZTv0_n32_N8S21124C2D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C2D1Ev,_ZTv0_n28_N8S21124C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S21124C2D1Ev,_ZThn144_N8S21124C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21124C2D0Ev,_ZTv0_n28_N8S21124C2D0Ev)();
extern void ABISELECT(_ZThn208_N8S21124C2D0Ev,_ZThn144_N8S21124C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C2__8S21124C1[] = {
  ABISELECT(-208,-144),
  -40,
  ABISELECT(-224,-152),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C2D1Ev,_ZTv0_n28_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C2D0Ev,_ZTv0_n28_N8S21124C2D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C2D1Ev,_ZTvn760_n28_N8S21124C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C2D0Ev,_ZTvn760_n28_N8S21124C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C2__8S21124C1[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1368,-904),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C2D1Ev,_ZTvn760_n28_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C2D0Ev,_ZTvn760_n28_N8S21124C2D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C2D1Ev,_ZTvn764_n28_N8S21124C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C2D0Ev,_ZTvn764_n28_N8S21124C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C2__8S21124C1[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1376,-908),
  (VTBL_ENTRY)&(_ZTI8S21124C2[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C2D1Ev,_ZTvn764_n28_N8S21124C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C2D0Ev,_ZTvn764_n28_N8S21124C2D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C3D1Ev();
extern void _ZN8S21124C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C3__8S21124C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(-16,-4),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C3D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S21124C3D1Ev,_ZThn56_N8S21124C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S21124C3D0Ev,_ZThn56_N8S21124C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C4__8S21124C3__8S21124C1[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-96,-68),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C3__8S21124C1[] = {
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZThn192_N8S21124C3D1Ev,_ZThn140_N8S21124C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev)();
extern void ABISELECT(_ZThn192_N8S21124C3D0Ev,_ZThn140_N8S21124C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C3__8S21124C1[] = {
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-224,-152),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C3D1Ev,_ZTvn760_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C3D0Ev,_ZTvn760_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C3__8S21124C1[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C3D1Ev,_ZTvn760_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C3D0Ev,_ZTvn760_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C3D1Ev,_ZTvn764_n28_N8S21124C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C3D0Ev,_ZTvn764_n28_N8S21124C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C3__8S21124C1[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI8S21124C3[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C3D1Ev,_ZTvn764_n28_N8S21124C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C3D0Ev,_ZTvn764_n28_N8S21124C3D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C4D1Ev();
extern void _ZN8S21124C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C4__8S21124C1[] = {
  ABISELECT(-96,-68),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C4D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C68S21124C4__8S21124C1[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C4__8S21124C1[] = {
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21124C4D1Ev,_ZThn84_N8S21124C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21124C4D0Ev,_ZThn84_N8S21124C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C4__8S21124C1[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-224,-152),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C4__8S21124C1[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D1Ev,_ZTvn760_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21124C4D0Ev,_ZTvn760_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C4__8S21124C1[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21124C4[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D1Ev,_ZTvn764_n28_N8S21124C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21124C4D0Ev,_ZTvn764_n28_N8S21124C4D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN8S21124C9D1Ev();
extern void _ZN8S21124C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C9__8S21124C1[] = {
  -40,
  ABISELECT(-224,-152),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21124C9D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C108S21124C9__8S21124C1[] = {
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C108S21124C9__8S21124C1[] = {
  0,
  ABISELECT(208,144),
  (VTBL_ENTRY)&(_ZTI9S21124C10[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__8S21124C1[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C118S21124C9__8S21124C1[] = {
  0,
  ABISELECT(1368,904),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C12D1Ev();
extern void _ZN9S21124C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__8S21124C1[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C12D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C119S21124C128S21124C9__A1__8S21124C1[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__8S21124C1[] = {
  0,
  ABISELECT(1376,908),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C128S21124C9__8S21124C1[] = {
  0,
  ABISELECT(1376,908),
  (VTBL_ENTRY)&(_ZTI9S21124C12[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__8S21124C9__8S21124C1[] = {
  0,
  ABISELECT(208,144),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C11__8S21124C9__8S21124C1[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D1Ev,_ZThn760_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21124C9D0Ev,_ZThn760_N8S21124C9D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C12__8S21124C9__8S21124C1[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21124C9[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D1Ev,_ZThn764_N8S21124C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21124C9D0Ev,_ZThn764_N8S21124C9D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C6__A1__8S21124C1[] = {
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C17D1Ev();
extern void _ZN9S21124C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C17__8S21124C1[] = {
  ABISELECT(-1392,-896),
  ABISELECT(-1456,-952),
  ABISELECT(-1472,-956),
  ABISELECT(-1488,-964),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1472,-956),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C17D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C17D0Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21124C17D1Ev,_ZTv0_n28_N9S21124C17D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S21124C17D0Ev,_ZTv0_n28_N9S21124C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21124C9__9S21124C17__8S21124C1[] = {
  ABISELECT(1264,812),
  -40,
  ABISELECT(-224,-152),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(1264,812),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C17D1Ev,_ZTv0_n28_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21124C17D0Ev,_ZTv0_n28_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C17__8S21124C1[] = {
  0,
  ABISELECT(1472,956),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C17D1Ev,_ZTvn760_n28_N9S21124C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21124C17D0Ev,_ZTvn760_n28_N9S21124C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C118S21124C9__9S21124C17__8S21124C1[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C17D1Ev,_ZTvn760_n28_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21124C17D0Ev,_ZTvn760_n28_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C17D1Ev,_ZTvn764_n28_N9S21124C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21124C17D0Ev,_ZTvn764_n28_N9S21124C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C128S21124C9__9S21124C17__8S21124C1[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C17D1Ev,_ZTvn764_n28_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21124C17D0Ev,_ZTvn764_n28_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21124C17D1Ev,_ZTv0_n36_N9S21124C17D1Ev)();
extern void ABISELECT(_ZTv0_n72_N9S21124C17D0Ev,_ZTv0_n36_N9S21124C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21124C3__9S21124C17__8S21124C1[] = {
  ABISELECT(1456,952),
  0,
  ABISELECT(-32,-12),
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(-16,-4),
  ABISELECT(64,56),
  ABISELECT(1456,952),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C17D1Ev,_ZTv0_n36_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21124C17D0Ev,_ZTv0_n36_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21124C17D1Ev,_ZTv0_n32_N9S21124C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21124C17D0Ev,_ZTv0_n32_N9S21124C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21124C4__9S21124C17__8S21124C1[] = {
  ABISELECT(1392,896),
  0,
  ABISELECT(-96,-68),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  ABISELECT(1392,896),
  (VTBL_ENTRY)&(_ZTI9S21124C17[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C17D1Ev,_ZTv0_n32_N9S21124C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21124C17D0Ev,_ZTv0_n32_N9S21124C17D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void _ZN9S21124C11D1Ev();
extern void _ZN9S21124C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C11__A2__8S21124C1[] = {
  ABISELECT(8,4),
  ABISELECT(176,108),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21124C11D0Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C11__A2__8S21124C1[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21124C11[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21124C21D1Ev,_ZTv0_n24_N9S21124C21D1Ev)();
extern void _ZN9S21124C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21124C21D0Ev,_ZTv0_n24_N9S21124C21D0Ev)();
extern void _ZN9S21124C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21124C21__8S21124C1[] = {
  ABISELECT(-1536,-1004),
  ABISELECT(8,4),
  0,
  ABISELECT(-136,-84),
  ABISELECT(-1528,-1000),
  -32,
  0,
  ABISELECT(-1520,-996),
  ABISELECT(-1352,-892),
  ABISELECT(-1520,-996),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C21[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C21D1Ev,_ZTv0_n24_N9S21124C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C21D0Ev,_ZTv0_n24_N9S21124C21D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C6__9S21124C21__8S21124C1[] = {
  0,
  ABISELECT(-1216,-808),
  ABISELECT(136,84),
  (VTBL_ENTRY)&(_ZTI9S21124C21[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21124C21D1Ev,_ZTv0_n24_N9S21124C21D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21124C21D0Ev,_ZTv0_n24_N9S21124C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C11__9S21124C21__8S21124C1[] = {
  ABISELECT(1528,1000),
  ABISELECT(8,4),
  ABISELECT(176,108),
  ABISELECT(8,4),
  ABISELECT(1528,1000),
  (VTBL_ENTRY)&(_ZTI9S21124C21[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C21D1Ev,_ZTv0_n24_N9S21124C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C21D0Ev,_ZTv0_n24_N9S21124C21D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__A1__9S21124C21__8S21124C1[] = {
  0,
  ABISELECT(1520,996),
  (VTBL_ENTRY)&(_ZTI9S21124C21[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C22__9S21124C21__8S21124C1[] = {
  0,
  ABISELECT(-1360,-896),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21124C21[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C69S21124C22__A1__9S21124C21__8S21124C1[] = {
  ABISELECT(-1408,-940),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S21124C21[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev)();
extern void _ZN9S21124C19D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev)();
extern void _ZN9S21124C19D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21124C19__A1__8S21124C1[] = {
  ABISELECT(-1528,-1000),
  -32,
  0,
  ABISELECT(-1520,-996),
  ABISELECT(-1352,-892),
  ABISELECT(-1520,-996),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C19[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev),
};
extern void _ZN8S21124C52v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21124C11__9S21124C19__A1__8S21124C1[] = {
  ABISELECT(1528,1000),
  ABISELECT(8,4),
  ABISELECT(176,108),
  ABISELECT(8,4),
  ABISELECT(1528,1000),
  (VTBL_ENTRY)&(_ZTI9S21124C19[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev),
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C5__9S21124C19__A1__8S21124C1[] = {
  0,
  ABISELECT(1520,996),
  (VTBL_ENTRY)&(_ZTI9S21124C19[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21124C22__8S21124C1[] = {
  ABISELECT(-1360,-896),
  0,
  (VTBL_ENTRY)&(_ZTI9S21124C22[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C69S21124C22__A2__8S21124C1[] = {
  ABISELECT(-1408,-940),
  0,
  (VTBL_ENTRY)&(_ZTI8S21124C6[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
extern void _ZN8S21124C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21124C6__9S21124C22__8S21124C1[] = {
  ABISELECT(-1408,-940),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S21124C22[0]),
  (VTBL_ENTRY)&_ZN8S21124C52v1Ev,
};
static  VTT_ENTRY vtt_S21124C1[] = {
  {&(_ZTV8S21124C1[18]),  18,136},
  {&(_tg__ZTV9S21124C15__8S21124C1[14]),  14,17},
  {&(_tg__ZTV9S21124C169S21124C15__8S21124C1[11]),  11,14},
  {&(_tg__ZTV8S21124C6__9S21124C169S21124C15__8S21124C1[4]),  4,5},
  {&(_tg__ZTV9S21124C17__9S21124C169S21124C15__8S21124C1[10]),  10,13},
  {&(_tg__ZTV8S21124C9__9S21124C169S21124C15__8S21124C1[7]),  7,10},
  {&(_tg__ZTV8S21124C5__A1__9S21124C169S21124C15__8S21124C1[3]),  3,4},
  {&(_tg__ZTV9S21124C118S21124C9__9S21124C169S21124C15__8S21124C1[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__9S21124C169S21124C15__8S21124C1[5]),  5,8},
  {&(_tg__ZTV8S21124C3__9S21124C169S21124C15__8S21124C1[9]),  9,12},
  {&(_tg__ZTV8S21124C4__9S21124C169S21124C15__8S21124C1[8]),  8,11},
  {&(_tg__ZTV9S21124C199S21124C15__8S21124C1[8]),  8,11},
  {&(_tg__ZTV9S21124C199S21124C15__8S21124C1[8]),  8,11},
  {&(_tg__ZTV8S21124C5__9S21124C199S21124C15__8S21124C1[3]),  3,4},
  {&(_tg__ZTV8S21124C6__9S21124C15__8S21124C1[4]),  4,5},
  {&(_tg__ZTV9S21124C17__9S21124C15__8S21124C1[10]),  10,13},
  {&(_tg__ZTV8S21124C9__9S21124C15__8S21124C1[7]),  7,10},
  {&(_tg__ZTV8S21124C2__9S21124C15__8S21124C1[10]),  10,13},
  {&(_tg__ZTV9S21124C118S21124C9__9S21124C15__8S21124C1[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__9S21124C15__8S21124C1[5]),  5,8},
  {&(_tg__ZTV8S21124C3__9S21124C15__8S21124C1[9]),  9,12},
  {&(_tg__ZTV8S21124C4__9S21124C15__8S21124C1[8]),  8,11},
  {&(_tg__ZTV9S21124C19__9S21124C15__8S21124C1[8]),  8,11},
  {&(_tg__ZTV9S21124C19__9S21124C15__8S21124C1[8]),  8,11},
  {&(_tg__ZTV8S21124C2__9S21124C15__8S21124C1[10]),  10,13},
  {&(_ZTV8S21124C1[42]),  42,136},
  {&(_ZTV8S21124C1[54]),  54,136},
  {&(_ZTV8S21124C1[65]),  65,136},
  {&(_ZTV8S21124C1[42]),  42,136},
  {&(_ZTV8S21124C1[75]),  75,136},
  {&(_ZTV8S21124C1[83]),  83,136},
  {&(_ZTV8S21124C1[91]),  91,136},
  {&(_ZTV8S21124C1[98]),  98,136},
  {&(_ZTV8S21124C1[109]),  109,136},
  {&(_ZTV8S21124C1[29]),  29,136},
  {&(_ZTV8S21124C1[29]),  29,136},
  {&(_ZTV8S21124C1[124]),  124,136},
  {&(_ZTV8S21124C1[124]),  124,136},
  {&(_ZTV8S21124C1[131]),  131,136},
  {&(_ZTV8S21124C1[135]),  135,136},
  {&(_tg__ZTV8S21124C2__8S21124C1[9]),  9,12},
  {&(_tg__ZTV8S21124C3__8S21124C2__8S21124C1[9]),  9,12},
  {&(_tg__ZTV8S21124C4__8S21124C2__8S21124C1[8]),  8,11},
  {&(_tg__ZTV8S21124C2__8S21124C1[9]),  9,12},
  {&(_tg__ZTV8S21124C9__8S21124C2__8S21124C1[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C2__8S21124C1[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C2__8S21124C1[5]),  5,8},
  {&(_tg__ZTV8S21124C3__8S21124C1[7]),  7,10},
  {&(_tg__ZTV8S21124C4__8S21124C3__8S21124C1[8]),  8,11},
  {&(_tg__ZTV8S21124C5__8S21124C3__8S21124C1[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C3__8S21124C1[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C3__8S21124C1[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C3__8S21124C1[5]),  5,8},
  {&(_tg__ZTV8S21124C4__8S21124C1[6]),  6,9},
  {&(_tg__ZTV8S21124C68S21124C4__8S21124C1[3]),  3,4},
  {&(_tg__ZTV8S21124C5__8S21124C4__8S21124C1[3]),  3,4},
  {&(_tg__ZTV8S21124C9__8S21124C4__8S21124C1[7]),  7,10},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C4__8S21124C1[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C4__8S21124C1[5]),  5,8},
  {&(_tg__ZTV8S21124C9__8S21124C1[6]),  6,9},
  {&(_tg__ZTV9S21124C108S21124C9__8S21124C1[4]),  4,5},
  {&(_tg__ZTV8S21124C5__9S21124C108S21124C9__8S21124C1[3]),  3,4},
  {&(_tg__ZTV9S21124C118S21124C9__8S21124C1[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C118S21124C9__8S21124C1[3]),  3,4},
  {&(_tg__ZTV9S21124C128S21124C9__8S21124C1[5]),  5,8},
  {&(_tg__ZTV9S21124C119S21124C128S21124C9__A1__8S21124C1[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C119S21124C128S21124C9__A1__8S21124C1[3]),  3,4},
  {&(_tg__ZTV8S21124C5__9S21124C128S21124C9__8S21124C1[3]),  3,4},
  {&(_tg__ZTV8S21124C5__8S21124C9__8S21124C1[3]),  3,4},
  {&(_tg__ZTV9S21124C11__8S21124C9__8S21124C1[5]),  5,8},
  {&(_tg__ZTV9S21124C12__8S21124C9__8S21124C1[5]),  5,8},
  {&(_tg__ZTV8S21124C6__A1__8S21124C1[3]),  3,4},
  {&(_tg__ZTV9S21124C17__8S21124C1[9]),  9,12},
  {&(_tg__ZTV8S21124C9__9S21124C17__8S21124C1[7]),  7,10},
  {&(_tg__ZTV8S21124C5__9S21124C17__8S21124C1[3]),  3,4},
  {&(_tg__ZTV9S21124C118S21124C9__9S21124C17__8S21124C1[5]),  5,8},
  {&(_tg__ZTV9S21124C128S21124C9__9S21124C17__8S21124C1[5]),  5,8},
  {&(_tg__ZTV8S21124C3__9S21124C17__8S21124C1[9]),  9,12},
  {&(_tg__ZTV8S21124C4__9S21124C17__8S21124C1[8]),  8,11},
  {&(_tg__ZTV9S21124C11__A2__8S21124C1[5]),  5,8},
  {&(_tg__ZTV8S21124C5__9S21124C11__A2__8S21124C1[3]),  3,4},
  {&(_tg__ZTV9S21124C21__8S21124C1[12]),  12,15},
  {&(_tg__ZTV8S21124C6__9S21124C21__8S21124C1[4]),  4,5},
  {&(_tg__ZTV9S21124C21__8S21124C1[12]),  12,15},
  {&(_tg__ZTV9S21124C11__9S21124C21__8S21124C1[6]),  6,9},
  {&(_tg__ZTV8S21124C5__A1__9S21124C21__8S21124C1[3]),  3,4},
  {&(_tg__ZTV9S21124C22__9S21124C21__8S21124C1[4]),  4,5},
  {&(_tg__ZTV8S21124C69S21124C22__A1__9S21124C21__8S21124C1[3]),  3,4},
  {&(_tg__ZTV9S21124C19__A1__8S21124C1[8]),  8,11},
  {&(_tg__ZTV9S21124C11__9S21124C19__A1__8S21124C1[6]),  6,9},
  {&(_tg__ZTV8S21124C5__9S21124C19__A1__8S21124C1[3]),  3,4},
  {&(_tg__ZTV9S21124C22__8S21124C1[3]),  3,4},
  {&(_tg__ZTV8S21124C69S21124C22__A2__8S21124C1[3]),  3,4},
  {&(_tg__ZTV8S21124C6__9S21124C22__8S21124C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21124C1[];
extern  VTBL_ENTRY _ZTV8S21124C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21124C1[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21124C21D0Ev,_ZTv0_n24_N9S21124C21D0Ev), // 
  (VTBL_ENTRY)_ZN9S21124C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21124C21D1Ev,_ZTv0_n24_N9S21124C21D1Ev), // 
  (VTBL_ENTRY)_ZN9S21124C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C4D0Ev,_ZTv0_n28_N8S21124C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21124C4D0Ev,_ZThn84_N8S21124C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C4D1Ev,_ZTv0_n28_N8S21124C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21124C4D1Ev,_ZThn84_N8S21124C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C3D0Ev,_ZTv0_n28_N8S21124C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21124C3D0Ev,_ZThn140_N8S21124C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C3D1Ev,_ZTv0_n28_N8S21124C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S21124C3D1Ev,_ZThn140_N8S21124C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C3D0Ev,_ZTv0_n32_N8S21124C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21124C3D0Ev,_ZThn56_N8S21124C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C3D1Ev,_ZTv0_n32_N8S21124C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S21124C3D1Ev,_ZThn56_N8S21124C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C2D0Ev,_ZTv0_n28_N8S21124C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21124C2D0Ev,_ZThn144_N8S21124C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C2D1Ev,_ZTv0_n28_N8S21124C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S21124C2D1Ev,_ZThn144_N8S21124C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C2D0Ev,_ZTv0_n32_N8S21124C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21124C2D0Ev,_ZThn60_N8S21124C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C2D1Ev,_ZTv0_n32_N8S21124C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S21124C2D1Ev,_ZThn60_N8S21124C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21124C2D0Ev,_ZTv0_n36_N8S21124C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21124C2D0Ev,_ZThn4_N8S21124C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21124C2D1Ev,_ZTv0_n36_N8S21124C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21124C2D1Ev,_ZThn4_N8S21124C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21124C15D0Ev,_ZTv0_n24_N9S21124C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21124C15D0Ev,_ZThn4_N9S21124C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21124C15D1Ev,_ZTv0_n24_N9S21124C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S21124C15D1Ev,_ZThn4_N9S21124C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C15D0Ev,_ZTv0_n32_N9S21124C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21124C15D0Ev,_ZThn68_N9S21124C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C15D1Ev,_ZTv0_n32_N9S21124C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21124C15D1Ev,_ZThn68_N9S21124C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C15D0Ev,_ZTv0_n36_N9S21124C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21124C15D0Ev,_ZThn12_N9S21124C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C15D1Ev,_ZTv0_n36_N9S21124C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21124C15D1Ev,_ZThn12_N9S21124C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C15D0Ev,_ZTv0_n28_N9S21124C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21124C15D0Ev,_ZThn152_N9S21124C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C15D1Ev,_ZTv0_n28_N9S21124C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21124C15D1Ev,_ZThn152_N9S21124C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21124C15D0Ev,_ZTv0_n40_N9S21124C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21124C15D0Ev,_ZThn8_N9S21124C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N9S21124C15D0Ev,_ZThn964_N9S21124C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21124C15D1Ev,_ZTv0_n40_N9S21124C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21124C15D1Ev,_ZThn8_N9S21124C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N9S21124C15D1Ev,_ZThn964_N9S21124C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21124C19D0Ev,_ZTv0_n24_N9S21124C19D0Ev), // 
  (VTBL_ENTRY)_ZN9S21124C19D0Ev,
  (VTBL_ENTRY)_ZN9S21124C19D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S21124C19D1Ev,_ZTv0_n24_N9S21124C19D1Ev), // 
  (VTBL_ENTRY)_ZN9S21124C19D1Ev,
  (VTBL_ENTRY)_ZN9S21124C19D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C16D0Ev,_ZTv0_n32_N9S21124C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21124C16D0Ev,_ZThn68_N9S21124C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21124C16D1Ev,_ZTv0_n32_N9S21124C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S21124C16D1Ev,_ZThn68_N9S21124C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C16D0Ev,_ZTv0_n36_N9S21124C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21124C16D0Ev,_ZThn12_N9S21124C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21124C16D1Ev,_ZTv0_n36_N9S21124C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21124C16D1Ev,_ZThn12_N9S21124C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C16D0Ev,_ZTv0_n28_N9S21124C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21124C16D0Ev,_ZThn152_N9S21124C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21124C16D1Ev,_ZTv0_n28_N9S21124C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S21124C16D1Ev,_ZThn152_N9S21124C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21124C16D0Ev,_ZTv0_n40_N9S21124C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N9S21124C16D0Ev,_ZThn964_N9S21124C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21124C16D1Ev,_ZTv0_n40_N9S21124C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N9S21124C16D1Ev,_ZThn964_N9S21124C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C1D0Ev,_ZTv0_n28_N8S21124C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21124C1D0Ev,_ZThn152_N8S21124C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21124C1D1Ev,_ZTv0_n28_N8S21124C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S21124C1D1Ev,_ZThn152_N8S21124C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C1D0Ev,_ZTv0_n32_N8S21124C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21124C1D0Ev,_ZThn68_N8S21124C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21124C1D1Ev,_ZTv0_n32_N8S21124C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S21124C1D1Ev,_ZThn68_N8S21124C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21124C1D0Ev,_ZTv0_n36_N8S21124C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21124C1D0Ev,_ZThn12_N8S21124C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21124C1D1Ev,_ZTv0_n36_N8S21124C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21124C1D1Ev,_ZThn12_N8S21124C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21124C1D0Ev,_ZTv0_n40_N8S21124C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S21124C1D0Ev,_ZThn964_N8S21124C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21124C1D0Ev,_ZThn8_N8S21124C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21124C1D1Ev,_ZTv0_n40_N8S21124C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1488_N8S21124C1D1Ev,_ZThn964_N8S21124C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21124C1D1Ev,_ZThn8_N8S21124C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21124C1D0Ev,_ZTv0_n24_N8S21124C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1536_N8S21124C1D0Ev,_ZThn1004_N8S21124C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21124C1D0Ev,_ZThn4_N8S21124C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21124C1D1Ev,_ZTv0_n24_N8S21124C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1536_N8S21124C1D1Ev,_ZThn1004_N8S21124C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21124C1D1Ev,_ZThn4_N8S21124C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21124C1 = {  "S21124C1", // class name
  bases_S21124C1, 44,
  &(vtc_S21124C1[0]), // expected_vtbl_contents
  &(vtt_S21124C1[0]), // expected_vtt_contents
  ABISELECT(1680,1096), // object size
  NSPAIRA(_ZTI8S21124C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21124C1),136, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21124C1),94, //virtual table table var
  28, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3577C4_nt  {
  int s3577c4f0;
  void  mf3577c4(); // _ZN10S3577C4_nt8mf3577c4Ev
  virtual  ~S3577C4_nt(); // _ZN10S3577C4_ntD1Ev
  S3577C4_nt(); // tgen
};
//SIG(-1 S3577C4_nt) C1{ vd m Fi}


void  S3577C4_nt ::mf3577c4(){}
 S3577C4_nt ::~S3577C4_nt(){ note_dtor("S3577C4_nt", this);}
S3577C4_nt ::S3577C4_nt(){ note_ctor("S3577C4_nt", this);} // tgen

//skip512 S3577C4_nt

#else // __cplusplus

extern void _ZN10S3577C4_ntC1Ev();
extern void _ZN10S3577C4_ntD1Ev();
Name_Map name_map_S3577C4_nt[] = {
  NSPAIR(_ZN10S3577C4_ntC1Ev),
  NSPAIR(_ZN10S3577C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern void _ZN10S3577C4_ntD1Ev();
extern void _ZN10S3577C4_ntD0Ev();
static  VTBL_ENTRY vtc_S3577C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3577C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S3577C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3577C4_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
VTBL_ENTRY *P__ZTI10S3577C4_nt = _ZTI10S3577C4_nt; 
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
Class_Descriptor cd_S3577C4_nt = {  "S3577C4_nt", // class name
  0,0,//no base classes
  &(vtc_S3577C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S3577C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3577C4_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  S3577C3  : virtual S3577C4_nt {
  void *s3577c3f0[2];
  unsigned int s3577c3f1:1;
  virtual  ~S3577C3(); // _ZN7S3577C3D2Ev
  virtual void  v5(); // _ZN7S3577C32v5Ev
  virtual void  v6(); // _ZN7S3577C32v6Ev
  S3577C3(); // tgen
};
//SIG(-1 S3577C3) C1{ VBC2{ vd m Fi} vd v1 v2 Fp[2] Fi:1}


 S3577C3 ::~S3577C3(){ note_dtor("S3577C3", this);}
void  S3577C3 ::v5(){vfunc_called(this, "_ZN7S3577C32v5Ev");}
void  S3577C3 ::v6(){vfunc_called(this, "_ZN7S3577C32v6Ev");}
S3577C3 ::S3577C3(){ note_ctor("S3577C3", this);} // tgen

static void Test_S3577C3()
{
  extern Class_Descriptor cd_S3577C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S3577C3, buf);
    S3577C3 *dp, &lv = *(dp=new (buf) S3577C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S3577C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3577C3)");
    check_base_class_offset(lv, (S3577C4_nt*), ABISELECT(32,16), "S3577C3");
    check_field_offset(lv, s3577c3f0, ABISELECT(8,4), "S3577C3.s3577c3f0");
    set_bf_and_test(lv, s3577c3f1, ABISELECT(24,12), 0, 1, 1, "S3577C3");
    test_class_info(&lv, &cd_S3577C3);
    dp->~S3577C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3577C3(Test_S3577C3, "S3577C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S3577C3C1Ev();
extern void _ZN7S3577C3D2Ev();
Name_Map name_map_S3577C3[] = {
  NSPAIR(_ZN7S3577C3C1Ev),
  NSPAIR(_ZN7S3577C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S3577C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3577C3[];
extern void _ZN7S3577C3D1Ev();
extern void _ZN7S3577C3D0Ev();
extern void _ZN7S3577C32v5Ev();
extern void _ZN7S3577C32v6Ev();
extern void ABISELECT(_ZTv0_n24_N7S3577C3D1Ev,_ZTv0_n12_N7S3577C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S3577C3D1Ev,_ZThn16_N7S3577C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3577C3D0Ev,_ZTv0_n12_N7S3577C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S3577C3D0Ev,_ZThn16_N7S3577C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3577C3[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3577C3[0]),
  (VTBL_ENTRY)&_ZN7S3577C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3577C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3577C32v6Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S3577C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C3D1Ev,_ZTv0_n12_N7S3577C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C3D0Ev,_ZTv0_n12_N7S3577C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S3577C3[];
static  VTT_ENTRY vtt_S3577C3[] = {
  {&(_ZTV7S3577C3[3]),  3,12},
  {&(_ZTV7S3577C3[10]),  10,12},
};
extern VTBL_ENTRY _ZTI7S3577C3[];
extern  VTBL_ENTRY _ZTV7S3577C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3577C3[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C3D0Ev,_ZTv0_n12_N7S3577C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3577C3D0Ev,_ZThn16_N7S3577C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C3D1Ev,_ZTv0_n12_N7S3577C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3577C3D1Ev,_ZThn16_N7S3577C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3577C3 = {  "S3577C3", // class name
  bases_S3577C3, 1,
  &(vtc_S3577C3[0]), // expected_vtbl_contents
  &(vtt_S3577C3[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S3577C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3577C3),12, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3577C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3577C2  : S3577C3 {
  int s3577c2f0[4];
  virtual void  v7(); // _ZN7S3577C22v7Ev
  virtual void  v8(); // _ZN7S3577C22v8Ev
  ~S3577C2(); // tgen
  S3577C2(); // tgen
};
//SIG(-1 S3577C2) C1{ BC2{ VBC3{ vd m Fi} vd v3 v4 Fp[2] Fi:1} v1 v2 Fi[4]}


void  S3577C2 ::v7(){vfunc_called(this, "_ZN7S3577C22v7Ev");}
void  S3577C2 ::v8(){vfunc_called(this, "_ZN7S3577C22v8Ev");}
S3577C2 ::~S3577C2(){ note_dtor("S3577C2", this);} // tgen
S3577C2 ::S3577C2(){ note_ctor("S3577C2", this);} // tgen

static void Test_S3577C2()
{
  extern Class_Descriptor cd_S3577C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S3577C2, buf);
    S3577C2 *dp, &lv = *(dp=new (buf) S3577C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S3577C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3577C2)");
    check_base_class_offset(lv, (S3577C4_nt*)(S3577C3*), ABISELECT(48,32), "S3577C2");
    check_base_class_offset(lv, (S3577C3*), 0, "S3577C2");
    check_field_offset(lv, s3577c2f0, ABISELECT(28,16), "S3577C2.s3577c2f0");
    test_class_info(&lv, &cd_S3577C2);
    dp->~S3577C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3577C2(Test_S3577C2, "S3577C2", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S3577C2C1Ev();
extern void _ZN7S3577C2D1Ev();
Name_Map name_map_S3577C2[] = {
  NSPAIR(_ZN7S3577C2C1Ev),
  NSPAIR(_ZN7S3577C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S3577C3;
extern VTBL_ENTRY _ZTI7S3577C3[];
extern  VTBL_ENTRY _ZTV7S3577C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3577C3[];
static Base_Class bases_S3577C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(48,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3577C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3577C2[];
extern void _ZN7S3577C2D1Ev();
extern void _ZN7S3577C2D0Ev();
extern void _ZN7S3577C32v5Ev();
extern void _ZN7S3577C32v6Ev();
extern void _ZN7S3577C22v7Ev();
extern void _ZN7S3577C22v8Ev();
extern void ABISELECT(_ZTv0_n24_N7S3577C2D1Ev,_ZTv0_n12_N7S3577C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S3577C2D1Ev,_ZThn32_N7S3577C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3577C2D0Ev,_ZTv0_n12_N7S3577C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S3577C2D0Ev,_ZThn32_N7S3577C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3577C2[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3577C2[0]),
  (VTBL_ENTRY)&_ZN7S3577C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3577C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3577C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3577C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3577C22v8Ev,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S3577C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C2D1Ev,_ZTv0_n12_N7S3577C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C2D0Ev,_ZTv0_n12_N7S3577C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S3577C2[];
extern void _ZN7S3577C3D1Ev();
extern void _ZN7S3577C3D0Ev();
extern void _ZN7S3577C32v5Ev();
extern void _ZN7S3577C32v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3577C3__7S3577C2[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3577C3[0]),
  (VTBL_ENTRY)&_ZN7S3577C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3577C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3577C32v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3577C3D1Ev,_ZTv0_n12_N7S3577C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S3577C3D1Ev,_ZThn32_N7S3577C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3577C3D0Ev,_ZTv0_n12_N7S3577C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S3577C3D0Ev,_ZThn32_N7S3577C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3577C3__7S3577C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S3577C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C3D1Ev,_ZTv0_n12_N7S3577C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C3D0Ev,_ZTv0_n12_N7S3577C3D0Ev),
};
static  VTT_ENTRY vtt_S3577C2[] = {
  {&(_ZTV7S3577C2[3]),  3,14},
  {&(_tg__ZTV7S3577C3__7S3577C2[3]),  3,7},
  {&(_tg__ZTV10S3577C4_nt__7S3577C3__7S3577C2[3]),  3,5},
  {&(_ZTV7S3577C2[12]),  12,14},
};
extern VTBL_ENTRY _ZTI7S3577C2[];
extern  VTBL_ENTRY _ZTV7S3577C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3577C2[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C3D0Ev,_ZTv0_n12_N7S3577C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3577C3D0Ev,_ZThn32_N7S3577C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C3D1Ev,_ZTv0_n12_N7S3577C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3577C3D1Ev,_ZThn32_N7S3577C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C2D0Ev,_ZTv0_n12_N7S3577C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3577C2D0Ev,_ZThn32_N7S3577C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C2D1Ev,_ZTv0_n12_N7S3577C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3577C2D1Ev,_ZThn32_N7S3577C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3577C2 = {  "S3577C2", // class name
  bases_S3577C2, 2,
  &(vtc_S3577C2[0]), // expected_vtbl_contents
  &(vtt_S3577C2[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S3577C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3577C2),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3577C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names76,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3577C5  : virtual S3577C4_nt {
  int s3577c5f0[2];
  unsigned int s3577c5f1:1;
  unsigned int s3577c5f2:1;
  ::S9141C28_nt s3577c5f3;
  ::S9142C8_nt s3577c5f4;
  virtual  ~S3577C5(); // _ZN7S3577C5D2Ev
  virtual void  v9(); // _ZN7S3577C52v9Ev
  virtual void  v10(); // _ZN7S3577C53v10Ev
  virtual void  v11(); // _ZN7S3577C53v11Ev
  virtual void  v12(); // _ZN7S3577C53v12Ev
  virtual void  v13(); // _ZN7S3577C53v13Ev
  virtual void  v14(); // _ZN7S3577C53v14Ev
  virtual void  v15(); // _ZN7S3577C53v15Ev
  S3577C5(); // tgen
};
//SIG(-1 S3577C5) C1{ VBC2{ vd m Fi} vd v1 v2 v3 v4 v5 v6 v7 Fi[2] Fi:1 Fi:1 FC3{ BC4{ m Fp Fi[2]}} FC5{ m FC6{ m Fi[3]} FC6 Fc}}


 S3577C5 ::~S3577C5(){ note_dtor("S3577C5", this);}
void  S3577C5 ::v9(){vfunc_called(this, "_ZN7S3577C52v9Ev");}
void  S3577C5 ::v10(){vfunc_called(this, "_ZN7S3577C53v10Ev");}
void  S3577C5 ::v11(){vfunc_called(this, "_ZN7S3577C53v11Ev");}
void  S3577C5 ::v12(){vfunc_called(this, "_ZN7S3577C53v12Ev");}
void  S3577C5 ::v13(){vfunc_called(this, "_ZN7S3577C53v13Ev");}
void  S3577C5 ::v14(){vfunc_called(this, "_ZN7S3577C53v14Ev");}
void  S3577C5 ::v15(){vfunc_called(this, "_ZN7S3577C53v15Ev");}
S3577C5 ::S3577C5(){ note_ctor("S3577C5", this);} // tgen

static void Test_S3577C5()
{
  extern Class_Descriptor cd_S3577C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S3577C5, buf);
    S3577C5 *dp, &lv = *(dp=new (buf) S3577C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S3577C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3577C5)");
    check_base_class_offset(lv, (S3577C4_nt*), ABISELECT(72,56), "S3577C5");
    check_field_offset(lv, s3577c5f0, ABISELECT(8,4), "S3577C5.s3577c5f0");
    set_bf_and_test(lv, s3577c5f1, ABISELECT(16,12), 0, 1, 1, "S3577C5");
    set_bf_and_test(lv, s3577c5f2, ABISELECT(16,12), 1, 1, 1, "S3577C5");
    check_field_offset(lv, s3577c5f3, ABISELECT(24,16), "S3577C5.s3577c5f3");
    check_field_offset(lv, s3577c5f4, ABISELECT(40,28), "S3577C5.s3577c5f4");
    test_class_info(&lv, &cd_S3577C5);
    dp->~S3577C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3577C5(Test_S3577C5, "S3577C5", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN7S3577C5C1Ev();
extern void _ZN7S3577C5D2Ev();
Name_Map name_map_S3577C5[] = {
  NSPAIR(_ZN7S3577C5C1Ev),
  NSPAIR(_ZN7S3577C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S3577C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(72,56), //bcp->offset
    12, //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 _ZTI7S3577C5[];
extern void _ZN7S3577C5D1Ev();
extern void _ZN7S3577C5D0Ev();
extern void _ZN7S3577C52v9Ev();
extern void _ZN7S3577C53v10Ev();
extern void _ZN7S3577C53v11Ev();
extern void _ZN7S3577C53v12Ev();
extern void _ZN7S3577C53v13Ev();
extern void _ZN7S3577C53v14Ev();
extern void _ZN7S3577C53v15Ev();
extern void ABISELECT(_ZTv0_n24_N7S3577C5D1Ev,_ZTv0_n12_N7S3577C5D1Ev)();
extern void ABISELECT(_ZThn72_N7S3577C5D1Ev,_ZThn56_N7S3577C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3577C5D0Ev,_ZTv0_n12_N7S3577C5D0Ev)();
extern void ABISELECT(_ZThn72_N7S3577C5D0Ev,_ZThn56_N7S3577C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3577C5[] = {
  ABISELECT(72,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S3577C5[0]),
  (VTBL_ENTRY)&_ZN7S3577C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3577C5D0Ev,
  (VTBL_ENTRY)&_ZN7S3577C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v15Ev,
  ABISELECT(-72,-56),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S3577C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C5D1Ev,_ZTv0_n12_N7S3577C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C5D0Ev,_ZTv0_n12_N7S3577C5D0Ev),
};
extern VTBL_ENTRY _ZTV7S3577C5[];
static  VTT_ENTRY vtt_S3577C5[] = {
  {&(_ZTV7S3577C5[3]),  3,17},
  {&(_ZTV7S3577C5[15]),  15,17},
};
extern VTBL_ENTRY _ZTI7S3577C5[];
extern  VTBL_ENTRY _ZTV7S3577C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3577C5[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C5D0Ev,_ZTv0_n12_N7S3577C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S3577C5D0Ev,_ZThn56_N7S3577C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C5D1Ev,_ZTv0_n12_N7S3577C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S3577C5D1Ev,_ZThn56_N7S3577C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3577C5 = {  "S3577C5", // class name
  bases_S3577C5, 1,
  &(vtc_S3577C5[0]), // expected_vtbl_contents
  &(vtt_S3577C5[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI7S3577C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3577C5),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3577C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3577C10  {
  int s3577c10f0;
  ::S3214C23 s3577c10f1;
  ::S3214C13_nt s3577c10f2;
  ::S3214C13_nt s3577c10f3;
  ::S3214C13_nt s3577c10f4;
  ::S4227C37 s3577c10f5;
  ::S4227C37 s3577c10f6;
  ::S9141C28_nt s3577c10f7;
  ::S9142C8_nt s3577c10f8;
  int s3577c10f9[2];
  ::S3214C18 s3577c10f10;
  ::S3214C23 s3577c10f11;
};
//SIG(-1 S3577C10) C1{ Fi FC2{ BC3{ m Fp Fi[2]}} FC4{ m Fi[3]} FC4 FC4 FC5{ m} FC5 FC6{ BC3} FC7{ m FC4 FC4 Fc} Fi[2] FC8{ BC3} FC2}



static void Test_S3577C10()
{
  {
    init_simple_test("S3577C10");
    S3577C10 lv;
    check2(sizeof(lv), ABISELECT(152,128), "sizeof(S3577C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3577C10)");
    check_field_offset(lv, s3577c10f0, 0, "S3577C10.s3577c10f0");
    check_field_offset(lv, s3577c10f1, ABISELECT(8,4), "S3577C10.s3577c10f1");
    check_field_offset(lv, s3577c10f2, ABISELECT(24,16), "S3577C10.s3577c10f2");
    check_field_offset(lv, s3577c10f3, ABISELECT(36,28), "S3577C10.s3577c10f3");
    check_field_offset(lv, s3577c10f4, ABISELECT(48,40), "S3577C10.s3577c10f4");
    check_field_offset(lv, s3577c10f5, ABISELECT(60,52), "S3577C10.s3577c10f5");
    check_field_offset(lv, s3577c10f6, ABISELECT(61,53), "S3577C10.s3577c10f6");
    check_field_offset(lv, s3577c10f7, ABISELECT(64,56), "S3577C10.s3577c10f7");
    check_field_offset(lv, s3577c10f8, ABISELECT(80,68), "S3577C10.s3577c10f8");
    check_field_offset(lv, s3577c10f9, ABISELECT(108,96), "S3577C10.s3577c10f9");
    check_field_offset(lv, s3577c10f10, ABISELECT(120,104), "S3577C10.s3577c10f10");
    check_field_offset(lv, s3577c10f11, ABISELECT(136,116), "S3577C10.s3577c10f11");
  }
}
static Arrange_To_Call_Me vS3577C10(Test_S3577C10, "S3577C10", ABISELECT(152,128));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3577C1  : S3577C2 , S3577C5 {
  ::S3577C10 s3577c1f0;
  int s3577c1f1;
  void *s3577c1f2;
  ::S9141C26 s3577c1f3;
  ::S9141C8_nt s3577c1f4;
  virtual  ~S3577C1(); // _ZN7S3577C1D2Ev
  virtual void  v1(); // _ZN7S3577C12v1Ev
  virtual void  v2(); // _ZN7S3577C12v2Ev
  virtual void  v3(); // _ZN7S3577C12v3Ev
  virtual void  v4(); // _ZN7S3577C12v4Ev
  S3577C1(); // tgen
};
//SIG(1 S3577C1) C1{ BC2{ BC3{ VBC4{ vd m Fi} vd v5 v6 Fp[2] Fi:1} v7 v8 Fi[4]} BC5{ VBC4 vd v9 v10 v11 v12 v13 v14 v15 Fi[2] Fi:1 Fi:1 FC6{ BC7{ m Fp Fi[2]}} FC8{ m FC9{ m Fi[3]} FC9 Fc}} vd v1 v2 v3 v4 FC10{ Fi FC11{ BC7} FC9 FC9 FC9 FC12{ m} FC12 FC6 FC8 Fi[2] FC13{ BC7} FC11} Fi Fp FC14{ BC15{ m FC6 Fp Fi}} FC16{ m Fp}}


 S3577C1 ::~S3577C1(){ note_dtor("S3577C1", this);}
void  S3577C1 ::v1(){vfunc_called(this, "_ZN7S3577C12v1Ev");}
void  S3577C1 ::v2(){vfunc_called(this, "_ZN7S3577C12v2Ev");}
void  S3577C1 ::v3(){vfunc_called(this, "_ZN7S3577C12v3Ev");}
void  S3577C1 ::v4(){vfunc_called(this, "_ZN7S3577C12v4Ev");}
S3577C1 ::S3577C1(){ note_ctor("S3577C1", this);} // tgen

static void Test_S3577C1()
{
  extern Class_Descriptor cd_S3577C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(44,65)];
    init_test(&cd_S3577C1, buf);
    S3577C1 *dp, &lv = *(dp=new (buf) S3577C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(344,256), "sizeof(S3577C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3577C1)");
    check_base_class_offset(lv, (S3577C4_nt*)(S3577C3*)(S3577C2*), ABISELECT(328,248), "S3577C1");
    check_base_class_offset(lv, (S3577C4_nt*)(S3577C5*), ABISELECT(328,248), "S3577C1");
    check_base_class_offset(lv, (S3577C3*)(S3577C2*), 0, "S3577C1");
    check_base_class_offset(lv, (S3577C2*), 0, "S3577C1");
    check_base_class_offset(lv, (S3577C5*), ABISELECT(48,32), "S3577C1");
    check_field_offset(lv, s3577c1f0, ABISELECT(120,88), "S3577C1.s3577c1f0");
    check_field_offset(lv, s3577c1f1, ABISELECT(272,216), "S3577C1.s3577c1f1");
    check_field_offset(lv, s3577c1f2, ABISELECT(280,220), "S3577C1.s3577c1f2");
    check_field_offset(lv, s3577c1f3, ABISELECT(288,224), "S3577C1.s3577c1f3");
    check_field_offset(lv, s3577c1f4, ABISELECT(320,244), "S3577C1.s3577c1f4");
    test_class_info(&lv, &cd_S3577C1);
    dp->~S3577C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3577C1(Test_S3577C1, "S3577C1", ABISELECT(344,256));

#else // __cplusplus

extern void _ZN7S3577C1C1Ev();
extern void _ZN7S3577C1D2Ev();
Name_Map name_map_S3577C1[] = {
  NSPAIR(_ZN7S3577C1C1Ev),
  NSPAIR(_ZN7S3577C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S3577C3;
extern VTBL_ENTRY _ZTI7S3577C3[];
extern  VTBL_ENTRY _ZTV7S3577C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3577C3[];
extern Class_Descriptor cd_S3577C2;
extern VTBL_ENTRY _ZTI7S3577C2[];
extern  VTBL_ENTRY _ZTV7S3577C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3577C2[];
extern Class_Descriptor cd_S3577C5;
extern VTBL_ENTRY _ZTI7S3577C5[];
extern  VTBL_ENTRY _ZTV7S3577C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3577C5[];
static Base_Class bases_S3577C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(328,248), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3577C3,    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
    2, //immediately_derived
  0, 0},
  {&cd_S3577C2,    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_S3577C5,    ABISELECT(48,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3577C1[];
extern void _ZN7S3577C1D1Ev();
extern void _ZN7S3577C1D0Ev();
extern void _ZN7S3577C32v5Ev();
extern void _ZN7S3577C32v6Ev();
extern void _ZN7S3577C22v7Ev();
extern void _ZN7S3577C22v8Ev();
extern void _ZN7S3577C12v1Ev();
extern void _ZN7S3577C12v2Ev();
extern void _ZN7S3577C12v3Ev();
extern void _ZN7S3577C12v4Ev();
extern void ABISELECT(_ZThn48_N7S3577C1D1Ev,_ZThn32_N7S3577C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S3577C1D0Ev,_ZThn32_N7S3577C1D0Ev)();
extern void _ZN7S3577C52v9Ev();
extern void _ZN7S3577C53v10Ev();
extern void _ZN7S3577C53v11Ev();
extern void _ZN7S3577C53v12Ev();
extern void _ZN7S3577C53v13Ev();
extern void _ZN7S3577C53v14Ev();
extern void _ZN7S3577C53v15Ev();
extern void ABISELECT(_ZTv0_n24_N7S3577C1D1Ev,_ZTv0_n12_N7S3577C1D1Ev)();
extern void ABISELECT(_ZThn328_N7S3577C1D1Ev,_ZThn248_N7S3577C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3577C1D0Ev,_ZTv0_n12_N7S3577C1D0Ev)();
extern void ABISELECT(_ZThn328_N7S3577C1D0Ev,_ZThn248_N7S3577C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3577C1[] = {
  ABISELECT(328,248),
  0,
  (VTBL_ENTRY)&(_ZTI7S3577C1[0]),
  (VTBL_ENTRY)&_ZN7S3577C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3577C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3577C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3577C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3577C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3577C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3577C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3577C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3577C12v4Ev,
  ABISELECT(280,216),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S3577C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S3577C1D1Ev,_ZThn32_N7S3577C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S3577C1D0Ev,_ZThn32_N7S3577C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3577C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v15Ev,
  ABISELECT(-328,-248),
  ABISELECT(-328,-248),
  (VTBL_ENTRY)&(_ZTI7S3577C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C1D1Ev,_ZTv0_n12_N7S3577C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C1D0Ev,_ZTv0_n12_N7S3577C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S3577C1[];
extern void _ZN7S3577C2D1Ev();
extern void _ZN7S3577C2D0Ev();
extern void _ZN7S3577C32v5Ev();
extern void _ZN7S3577C32v6Ev();
extern void _ZN7S3577C22v7Ev();
extern void _ZN7S3577C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S3577C2__7S3577C1[] = {
  ABISELECT(328,248),
  0,
  (VTBL_ENTRY)&(_ZTI7S3577C2[0]),
  (VTBL_ENTRY)&_ZN7S3577C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3577C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3577C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3577C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3577C22v8Ev,
};
extern void _ZN7S3577C3D1Ev();
extern void _ZN7S3577C3D0Ev();
extern void _ZN7S3577C32v5Ev();
extern void _ZN7S3577C32v6Ev();
static  VTBL_ENTRY _tg__ZTV7S3577C37S3577C2__7S3577C1[] = {
  ABISELECT(328,248),
  0,
  (VTBL_ENTRY)&(_ZTI7S3577C3[0]),
  (VTBL_ENTRY)&_ZN7S3577C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3577C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3577C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3577C32v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3577C3D1Ev,_ZTv0_n12_N7S3577C3D1Ev)();
extern void ABISELECT(_ZThn328_N7S3577C3D1Ev,_ZThn248_N7S3577C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3577C3D0Ev,_ZTv0_n12_N7S3577C3D0Ev)();
extern void ABISELECT(_ZThn328_N7S3577C3D0Ev,_ZThn248_N7S3577C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3577C37S3577C2__7S3577C1[] = {
  ABISELECT(-328,-248),
  ABISELECT(-328,-248),
  (VTBL_ENTRY)&(_ZTI7S3577C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C3D1Ev,_ZTv0_n12_N7S3577C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C3D0Ev,_ZTv0_n12_N7S3577C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3577C2D1Ev,_ZTv0_n12_N7S3577C2D1Ev)();
extern void ABISELECT(_ZThn328_N7S3577C2D1Ev,_ZThn248_N7S3577C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3577C2D0Ev,_ZTv0_n12_N7S3577C2D0Ev)();
extern void ABISELECT(_ZThn328_N7S3577C2D0Ev,_ZThn248_N7S3577C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3577C2__7S3577C1[] = {
  ABISELECT(-328,-248),
  ABISELECT(-328,-248),
  (VTBL_ENTRY)&(_ZTI7S3577C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C2D1Ev,_ZTv0_n12_N7S3577C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C2D0Ev,_ZTv0_n12_N7S3577C2D0Ev),
};
extern void _ZN7S3577C5D1Ev();
extern void _ZN7S3577C5D0Ev();
extern void _ZN7S3577C52v9Ev();
extern void _ZN7S3577C53v10Ev();
extern void _ZN7S3577C53v11Ev();
extern void _ZN7S3577C53v12Ev();
extern void _ZN7S3577C53v13Ev();
extern void _ZN7S3577C53v14Ev();
extern void _ZN7S3577C53v15Ev();
static  VTBL_ENTRY _tg__ZTV7S3577C5__7S3577C1[] = {
  ABISELECT(280,216),
  0,
  (VTBL_ENTRY)&(_ZTI7S3577C5[0]),
  (VTBL_ENTRY)&_ZN7S3577C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3577C5D0Ev,
  (VTBL_ENTRY)&_ZN7S3577C52v9Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v10Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v11Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v12Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v13Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v14Ev,
  (VTBL_ENTRY)&_ZN7S3577C53v15Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3577C5D1Ev,_ZTv0_n12_N7S3577C5D1Ev)();
extern void ABISELECT(_ZThn280_N7S3577C5D1Ev,_ZThn216_N7S3577C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3577C5D0Ev,_ZTv0_n12_N7S3577C5D0Ev)();
extern void ABISELECT(_ZThn280_N7S3577C5D0Ev,_ZThn216_N7S3577C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3577C5__7S3577C1[] = {
  ABISELECT(-280,-216),
  ABISELECT(-280,-216),
  (VTBL_ENTRY)&(_ZTI7S3577C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C5D1Ev,_ZTv0_n12_N7S3577C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3577C5D0Ev,_ZTv0_n12_N7S3577C5D0Ev),
};
static  VTT_ENTRY vtt_S3577C1[] = {
  {&(_ZTV7S3577C1[3]),  3,30},
  {&(_tg__ZTV7S3577C2__7S3577C1[3]),  3,9},
  {&(_tg__ZTV7S3577C37S3577C2__7S3577C1[3]),  3,7},
  {&(_tg__ZTV10S3577C4_nt__7S3577C37S3577C2__7S3577C1[3]),  3,5},
  {&(_tg__ZTV10S3577C4_nt__7S3577C2__7S3577C1[3]),  3,5},
  {&(_tg__ZTV7S3577C5__7S3577C1[3]),  3,12},
  {&(_tg__ZTV10S3577C4_nt__7S3577C5__7S3577C1[3]),  3,5},
  {&(_ZTV7S3577C1[28]),  28,30},
  {&(_ZTV7S3577C1[16]),  16,30},
};
extern VTBL_ENTRY _ZTI7S3577C1[];
extern  VTBL_ENTRY _ZTV7S3577C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3577C1[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C5D0Ev,_ZTv0_n12_N7S3577C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3577C5D0Ev,_ZThn216_N7S3577C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C5D1Ev,_ZTv0_n12_N7S3577C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3577C5D1Ev,_ZThn216_N7S3577C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C2D0Ev,_ZTv0_n12_N7S3577C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3577C2D0Ev,_ZThn248_N7S3577C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C2D1Ev,_ZTv0_n12_N7S3577C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3577C2D1Ev,_ZThn248_N7S3577C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C3D0Ev,_ZTv0_n12_N7S3577C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3577C3D0Ev,_ZThn248_N7S3577C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C3D1Ev,_ZTv0_n12_N7S3577C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3577C3D1Ev,_ZThn248_N7S3577C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C1D0Ev,_ZTv0_n12_N7S3577C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3577C1D0Ev,_ZThn248_N7S3577C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3577C1D1Ev,_ZTv0_n12_N7S3577C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn328_N7S3577C1D1Ev,_ZThn248_N7S3577C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3577C1 = {  "S3577C1", // class name
  bases_S3577C1, 4,
  &(vtc_S3577C1[0]), // expected_vtbl_contents
  &(vtt_S3577C1[0]), // expected_vtt_contents
  ABISELECT(344,256), // object size
  NSPAIRA(_ZTI7S3577C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3577C1),30, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3577C1),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7874C2  : virtual S3577C4_nt {
  int s7874c2f0[2];
  unsigned int s7874c2f1:1;
  unsigned int s7874c2f2:1;
  ::S9141C28_nt s7874c2f3;
  ::S9142C8_nt s7874c2f4;
  virtual  ~S7874C2(); // _ZN7S7874C2D2Ev
  virtual void  v6(); // _ZN7S7874C22v6Ev
  virtual void  v7(); // _ZN7S7874C22v7Ev
  virtual void  v8(); // _ZN7S7874C22v8Ev
  virtual void  v9(); // _ZN7S7874C22v9Ev
  virtual void  v10(); // _ZN7S7874C23v10Ev
  virtual void  v11(); // _ZN7S7874C23v11Ev
  virtual void  v12(); // _ZN7S7874C23v12Ev
  S7874C2(); // tgen
};
//SIG(-1 S7874C2) C1{ VBC2{ vd m Fi} vd v1 v2 v3 v4 v5 v6 v7 Fi[2] Fi:1 Fi:1 FC3{ BC4{ m Fp Fi[2]}} FC5{ m FC6{ m Fi[3]} FC6 Fc}}


 S7874C2 ::~S7874C2(){ note_dtor("S7874C2", this);}
void  S7874C2 ::v6(){vfunc_called(this, "_ZN7S7874C22v6Ev");}
void  S7874C2 ::v7(){vfunc_called(this, "_ZN7S7874C22v7Ev");}
void  S7874C2 ::v8(){vfunc_called(this, "_ZN7S7874C22v8Ev");}
void  S7874C2 ::v9(){vfunc_called(this, "_ZN7S7874C22v9Ev");}
void  S7874C2 ::v10(){vfunc_called(this, "_ZN7S7874C23v10Ev");}
void  S7874C2 ::v11(){vfunc_called(this, "_ZN7S7874C23v11Ev");}
void  S7874C2 ::v12(){vfunc_called(this, "_ZN7S7874C23v12Ev");}
S7874C2 ::S7874C2(){ note_ctor("S7874C2", this);} // tgen

static void Test_S7874C2()
{
  extern Class_Descriptor cd_S7874C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S7874C2, buf);
    S7874C2 *dp, &lv = *(dp=new (buf) S7874C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S7874C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7874C2)");
    check_base_class_offset(lv, (S3577C4_nt*), ABISELECT(72,56), "S7874C2");
    check_field_offset(lv, s7874c2f0, ABISELECT(8,4), "S7874C2.s7874c2f0");
    set_bf_and_test(lv, s7874c2f1, ABISELECT(16,12), 0, 1, 1, "S7874C2");
    set_bf_and_test(lv, s7874c2f2, ABISELECT(16,12), 1, 1, 1, "S7874C2");
    check_field_offset(lv, s7874c2f3, ABISELECT(24,16), "S7874C2.s7874c2f3");
    check_field_offset(lv, s7874c2f4, ABISELECT(40,28), "S7874C2.s7874c2f4");
    test_class_info(&lv, &cd_S7874C2);
    dp->~S7874C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7874C2(Test_S7874C2, "S7874C2", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN7S7874C2C1Ev();
extern void _ZN7S7874C2D2Ev();
Name_Map name_map_S7874C2[] = {
  NSPAIR(_ZN7S7874C2C1Ev),
  NSPAIR(_ZN7S7874C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S7874C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(72,56), //bcp->offset
    12, //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 _ZTI7S7874C2[];
extern void _ZN7S7874C2D1Ev();
extern void _ZN7S7874C2D0Ev();
extern void _ZN7S7874C22v6Ev();
extern void _ZN7S7874C22v7Ev();
extern void _ZN7S7874C22v8Ev();
extern void _ZN7S7874C22v9Ev();
extern void _ZN7S7874C23v10Ev();
extern void _ZN7S7874C23v11Ev();
extern void _ZN7S7874C23v12Ev();
extern void ABISELECT(_ZTv0_n24_N7S7874C2D1Ev,_ZTv0_n12_N7S7874C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7874C2D1Ev,_ZThn56_N7S7874C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7874C2D0Ev,_ZTv0_n12_N7S7874C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7874C2D0Ev,_ZThn56_N7S7874C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7874C2[] = {
  ABISELECT(72,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7874C2[0]),
  (VTBL_ENTRY)&_ZN7S7874C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7874C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7874C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7874C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7874C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7874C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7874C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7874C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7874C23v12Ev,
  ABISELECT(-72,-56),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S7874C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7874C2D1Ev,_ZTv0_n12_N7S7874C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7874C2D0Ev,_ZTv0_n12_N7S7874C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7874C2[];
static  VTT_ENTRY vtt_S7874C2[] = {
  {&(_ZTV7S7874C2[3]),  3,17},
  {&(_ZTV7S7874C2[15]),  15,17},
};
extern VTBL_ENTRY _ZTI7S7874C2[];
extern  VTBL_ENTRY _ZTV7S7874C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7874C2[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7874C2D0Ev,_ZTv0_n12_N7S7874C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7874C2D0Ev,_ZThn56_N7S7874C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7874C2D1Ev,_ZTv0_n12_N7S7874C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7874C2D1Ev,_ZThn56_N7S7874C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7874C2 = {  "S7874C2", // class name
  bases_S7874C2, 1,
  &(vtc_S7874C2[0]), // expected_vtbl_contents
  &(vtt_S7874C2[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI7S7874C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7874C2),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7874C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7874C9_nt  {
  void *s7874c9f0[3];
  int s7874c9f1;
  void *s7874c9f2;
  int s7874c9f3;
  void *s7874c9f4[2];
  ::S4227C37 s7874c9f5;
  ::S4227C37 s7874c9f6;
  int s7874c9f7[10];
  void *s7874c9f8;
  unsigned int s7874c9f9:1;
  unsigned int s7874c9f10:1;
  unsigned int s7874c9f11:1;
  unsigned int s7874c9f12:1;
  int s7874c9f13:3;
  int s7874c9f14:2;
  int s7874c9f15:3;
  unsigned int s7874c9f16:1;
  unsigned int s7874c9f17:1;
  void  mf7874c9(); // _ZN10S7874C9_nt8mf7874c9Ev
};
//SIG(-1 S7874C9_nt) C1{ m Fp[3] Fi Fp Fi Fp[2] FC2{ m} FC2 Fi[10] Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:2 Fi:3 Fi:1 Fi:1}


void  S7874C9_nt ::mf7874c9(){}

//skip512 S7874C9_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S7874C12_nt  {
  ::S3214C23 s7874c12f0;
  ::S3214C18 s7874c12f1;
  void  mf7874c12(); // _ZN11S7874C12_nt9mf7874c12Ev
};
//SIG(-1 S7874C12_nt) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC4{ BC3}}


void  S7874C12_nt ::mf7874c12(){}

//skip512 S7874C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7874C11  {
  ::S7874C12_nt s7874c11f0;
  void *s7874c11f1[2];
  ::S7874C9_nt s7874c11f2;
  int s7874c11f3;
  void  mf7874c11(); // _ZN8S7874C119mf7874c11Ev
};
//SIG(-1 S7874C11) C1{ m FC2{ m FC3{ BC4{ m Fp Fi[2]}} FC5{ BC4}} Fp[2] FC6{ m Fp[3] Fi Fp Fi Fp[2] FC7{ m} FC7 Fi[10] Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:2 Fi:3 Fi:1 Fi:1} Fi}


void  S7874C11 ::mf7874c11(){}

static void Test_S7874C11()
{
  {
    init_simple_test("S7874C11");
    static S7874C11 lv;
    check2(sizeof(lv), ABISELECT(184,120), "sizeof(S7874C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7874C11)");
    check_field_offset(lv, s7874c11f0, 0, "S7874C11.s7874c11f0");
    check_field_offset(lv, s7874c11f1, ABISELECT(32,24), "S7874C11.s7874c11f1");
    check_field_offset(lv, s7874c11f2, ABISELECT(48,32), "S7874C11.s7874c11f2");
    check_field_offset(lv, s7874c11f3, ABISELECT(176,116), "S7874C11.s7874c11f3");
  }
}
static Arrange_To_Call_Me vS7874C11(Test_S7874C11, "S7874C11", ABISELECT(184,120));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7874C1  : S7874C2 {
  ::S9141C8_nt s7874c1f0;
  int s7874c1f1;
  ::S7874C9_nt s7874c1f2;
  int s7874c1f3;
  ::S7874C11 s7874c1f4;
  virtual void  v1(); // _ZN7S7874C12v1Ev
  virtual void  v2(); // _ZN7S7874C12v2Ev
  virtual void  v3(); // _ZN7S7874C12v3Ev
  virtual void  v4(); // _ZN7S7874C12v4Ev
  virtual void  v5(); // _ZN7S7874C12v5Ev
  ~S7874C1(); // tgen
  S7874C1(); // tgen
};
//SIG(1 S7874C1) C1{ BC2{ VBC3{ vd m Fi} vd v6 v7 v8 v9 v10 v11 v12 Fi[2] Fi:1 Fi:1 FC4{ BC5{ m Fp Fi[2]}} FC6{ m FC7{ m Fi[3]} FC7 Fc}} v1 v2 v3 v4 v5 FC8{ m Fp} Fi FC9{ m Fp[3] Fi Fp Fi Fp[2] FC10{ m} FC10 Fi[10] Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:2 Fi:3 Fi:1 Fi:1} Fi FC11{ m FC12{ m FC13{ BC5} FC14{ BC5}} Fp[2] FC9 Fi}}


void  S7874C1 ::v1(){vfunc_called(this, "_ZN7S7874C12v1Ev");}
void  S7874C1 ::v2(){vfunc_called(this, "_ZN7S7874C12v2Ev");}
void  S7874C1 ::v3(){vfunc_called(this, "_ZN7S7874C12v3Ev");}
void  S7874C1 ::v4(){vfunc_called(this, "_ZN7S7874C12v4Ev");}
void  S7874C1 ::v5(){vfunc_called(this, "_ZN7S7874C12v5Ev");}
S7874C1 ::~S7874C1(){ note_dtor("S7874C1", this);} // tgen
S7874C1 ::S7874C1(){ note_ctor("S7874C1", this);} // tgen

static void Test_S7874C1()
{
  extern Class_Descriptor cd_S7874C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(54,71)];
    init_test(&cd_S7874C1, buf);
    S7874C1 *dp, &lv = *(dp=new (buf) S7874C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(424,280), "sizeof(S7874C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7874C1)");
    check_base_class_offset(lv, (S3577C4_nt*)(S7874C2*), ABISELECT(408,272), "S7874C1");
    check_base_class_offset(lv, (S7874C2*), 0, "S7874C1");
    check_field_offset(lv, s7874c1f0, ABISELECT(72,56), "S7874C1.s7874c1f0");
    check_field_offset(lv, s7874c1f1, ABISELECT(80,60), "S7874C1.s7874c1f1");
    check_field_offset(lv, s7874c1f2, ABISELECT(88,64), "S7874C1.s7874c1f2");
    check_field_offset(lv, s7874c1f3, ABISELECT(216,148), "S7874C1.s7874c1f3");
    check_field_offset(lv, s7874c1f4, ABISELECT(224,152), "S7874C1.s7874c1f4");
    test_class_info(&lv, &cd_S7874C1);
    dp->~S7874C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7874C1(Test_S7874C1, "S7874C1", ABISELECT(424,280));

#else // __cplusplus

extern void _ZN7S7874C1C1Ev();
extern void _ZN7S7874C1D1Ev();
Name_Map name_map_S7874C1[] = {
  NSPAIR(_ZN7S7874C1C1Ev),
  NSPAIR(_ZN7S7874C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S7874C2;
extern VTBL_ENTRY _ZTI7S7874C2[];
extern  VTBL_ENTRY _ZTV7S7874C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7874C2[];
static Base_Class bases_S7874C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(408,272), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7874C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7874C1[];
extern void _ZN7S7874C1D1Ev();
extern void _ZN7S7874C1D0Ev();
extern void _ZN7S7874C22v6Ev();
extern void _ZN7S7874C22v7Ev();
extern void _ZN7S7874C22v8Ev();
extern void _ZN7S7874C22v9Ev();
extern void _ZN7S7874C23v10Ev();
extern void _ZN7S7874C23v11Ev();
extern void _ZN7S7874C23v12Ev();
extern void _ZN7S7874C12v1Ev();
extern void _ZN7S7874C12v2Ev();
extern void _ZN7S7874C12v3Ev();
extern void _ZN7S7874C12v4Ev();
extern void _ZN7S7874C12v5Ev();
extern void ABISELECT(_ZTv0_n24_N7S7874C1D1Ev,_ZTv0_n12_N7S7874C1D1Ev)();
extern void ABISELECT(_ZThn408_N7S7874C1D1Ev,_ZThn272_N7S7874C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7874C1D0Ev,_ZTv0_n12_N7S7874C1D0Ev)();
extern void ABISELECT(_ZThn408_N7S7874C1D0Ev,_ZThn272_N7S7874C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7874C1[] = {
  ABISELECT(408,272),
  0,
  (VTBL_ENTRY)&(_ZTI7S7874C1[0]),
  (VTBL_ENTRY)&_ZN7S7874C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7874C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7874C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7874C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7874C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7874C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7874C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7874C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7874C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7874C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7874C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7874C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7874C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7874C12v5Ev,
  ABISELECT(-408,-272),
  ABISELECT(-408,-272),
  (VTBL_ENTRY)&(_ZTI7S7874C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7874C1D1Ev,_ZTv0_n12_N7S7874C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7874C1D0Ev,_ZTv0_n12_N7S7874C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7874C1[];
extern void _ZN7S7874C2D1Ev();
extern void _ZN7S7874C2D0Ev();
extern void _ZN7S7874C22v6Ev();
extern void _ZN7S7874C22v7Ev();
extern void _ZN7S7874C22v8Ev();
extern void _ZN7S7874C22v9Ev();
extern void _ZN7S7874C23v10Ev();
extern void _ZN7S7874C23v11Ev();
extern void _ZN7S7874C23v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7874C2__7S7874C1[] = {
  ABISELECT(408,272),
  0,
  (VTBL_ENTRY)&(_ZTI7S7874C2[0]),
  (VTBL_ENTRY)&_ZN7S7874C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7874C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7874C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7874C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7874C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7874C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7874C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7874C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7874C23v12Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7874C2D1Ev,_ZTv0_n12_N7S7874C2D1Ev)();
extern void ABISELECT(_ZThn408_N7S7874C2D1Ev,_ZThn272_N7S7874C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7874C2D0Ev,_ZTv0_n12_N7S7874C2D0Ev)();
extern void ABISELECT(_ZThn408_N7S7874C2D0Ev,_ZThn272_N7S7874C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S7874C2__7S7874C1[] = {
  ABISELECT(-408,-272),
  ABISELECT(-408,-272),
  (VTBL_ENTRY)&(_ZTI7S7874C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7874C2D1Ev,_ZTv0_n12_N7S7874C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7874C2D0Ev,_ZTv0_n12_N7S7874C2D0Ev),
};
static  VTT_ENTRY vtt_S7874C1[] = {
  {&(_ZTV7S7874C1[3]),  3,22},
  {&(_tg__ZTV7S7874C2__7S7874C1[3]),  3,12},
  {&(_tg__ZTV10S3577C4_nt__7S7874C2__7S7874C1[3]),  3,5},
  {&(_ZTV7S7874C1[20]),  20,22},
};
extern VTBL_ENTRY _ZTI7S7874C1[];
extern  VTBL_ENTRY _ZTV7S7874C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7874C1[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7874C2D0Ev,_ZTv0_n12_N7S7874C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7874C2D0Ev,_ZThn272_N7S7874C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7874C2D1Ev,_ZTv0_n12_N7S7874C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7874C2D1Ev,_ZThn272_N7S7874C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7874C1D0Ev,_ZTv0_n12_N7S7874C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7874C1D0Ev,_ZThn272_N7S7874C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7874C1D1Ev,_ZTv0_n12_N7S7874C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S7874C1D1Ev,_ZThn272_N7S7874C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7874C1 = {  "S7874C1", // class name
  bases_S7874C1, 2,
  &(vtc_S7874C1[0]), // expected_vtbl_contents
  &(vtt_S7874C1[0]), // expected_vtt_contents
  ABISELECT(424,280), // object size
  NSPAIRA(_ZTI7S7874C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7874C1),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7874C1),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN7S2766C4C1Ev();
extern void _ZN7S2766C4D1Ev();
Name_Map name_map_S2766C4[] = {
  NSPAIR(_ZN7S2766C4C1Ev),
  NSPAIR(_ZN7S2766C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2766C4[];
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY vtc_S2766C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C4[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
Class_Descriptor cd_S2766C4 = {  "S2766C4", // class name
  0,0,//no base classes
  &(vtc_S2766C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2766C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2766C4),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  S2766C2  : S20997C6 , S2766C4 {
  ~S2766C2(); // tgen
  S2766C2(); // tgen
};
//SIG(-1 S2766C2) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S2766C2()
{
  extern Class_Descriptor cd_S2766C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S2766C2, buf);
    S2766C2 *dp, &lv = *(dp=new (buf) S2766C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S2766C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C2)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S2766C2");
    check_base_class_offset(lv, (S2766C4*), 0, "S2766C2");
    test_class_info(&lv, &cd_S2766C2);
    dp->~S2766C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C2(Test_S2766C2, "S2766C2", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S2766C2C1Ev();
extern void _ZN7S2766C2D1Ev();
Name_Map name_map_S2766C2[] = {
  NSPAIR(_ZN7S2766C2C1Ev),
  NSPAIR(_ZN7S2766C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
static Base_Class bases_S2766C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2766C4,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2766C2[];
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY vtc_S2766C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C2[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern VTBL_ENTRY _ZTI7S2766C2[];
extern  VTBL_ENTRY _ZTV7S2766C2[];
Class_Descriptor cd_S2766C2 = {  "S2766C2", // class name
  bases_S2766C2, 2,
  &(vtc_S2766C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S2766C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2766C2),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2766C7  : S2766C4 , virtual S20997C6 , S4227C37 {
  void *s2766c7f0[10];
  ~S2766C7(); // tgen
  S2766C7(); // tgen
};
//SIG(-1 S2766C7) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S2766C7()
{
  extern Class_Descriptor cd_S2766C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S2766C7, buf);
    S2766C7 *dp, &lv = *(dp=new (buf) S2766C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S2766C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C7)");
    check_base_class_offset(lv, (S2766C4*), 0, "S2766C7");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S2766C7");
    check_base_class_offset(lv, (S4227C37*), 0, "S2766C7");
    check_field_offset(lv, s2766c7f0, ABISELECT(8,4), "S2766C7.s2766c7f0");
    test_class_info(&lv, &cd_S2766C7);
    dp->~S2766C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C7(Test_S2766C7, "S2766C7", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN7S2766C7C1Ev();
extern void _ZN7S2766C7D1Ev();
Name_Map name_map_S2766C7[] = {
  NSPAIR(_ZN7S2766C7C1Ev),
  NSPAIR(_ZN7S2766C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S2766C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2766C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2766C7[];
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY vtc_S2766C7[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C7[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S2766C7[];
static  VTT_ENTRY vtt_S2766C7[] = {
  {&(_ZTV7S2766C7[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S2766C7[];
extern  VTBL_ENTRY _ZTV7S2766C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C7[];
Class_Descriptor cd_S2766C7 = {  "S2766C7", // class name
  bases_S2766C7, 3,
  &(vtc_S2766C7[0]), // expected_vtbl_contents
  &(vtt_S2766C7[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI7S2766C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S2766C7),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2766C7),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  S2766C6  : virtual S2766C7 {
  ~S2766C6(); // tgen
  S2766C6(); // tgen
};
//SIG(-1 S2766C6) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]}}


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

static void Test_S2766C6()
{
  extern Class_Descriptor cd_S2766C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S2766C6, buf);
    S2766C6 *dp, &lv = *(dp=new (buf) S2766C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S2766C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C6)");
    check_base_class_offset(lv, (S2766C4*)(S2766C7*), ABISELECT(8,4), "S2766C6");
    check_base_class_offset(lv, (S20997C6*)(S2766C7*), ABISELECT(96,48), "S2766C6");
    check_base_class_offset(lv, (S4227C37*)(S2766C7*), ABISELECT(8,4), "S2766C6");
    check_base_class_offset(lv, (S2766C7*), ABISELECT(8,4), "S2766C6");
    test_class_info(&lv, &cd_S2766C6);
    dp->~S2766C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C6(Test_S2766C6, "S2766C6", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN7S2766C6C1Ev();
extern void _ZN7S2766C6D1Ev();
Name_Map name_map_S2766C6[] = {
  NSPAIR(_ZN7S2766C6C1Ev),
  NSPAIR(_ZN7S2766C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C7;
extern VTBL_ENTRY _ZTI7S2766C7[];
extern  VTBL_ENTRY _ZTV7S2766C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C7[];
static Base_Class bases_S2766C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2766C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C7,    ABISELECT(8,4), //bcp->offset
    4, //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 _ZTI7S2766C6[];
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY vtc_S2766C6[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C6[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2766C6[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S2766C6[];
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__7S2766C6[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C7[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
static  VTT_ENTRY vtt_S2766C6[] = {
  {&(_ZTV7S2766C6[4]),  4,9},
  {&(_ZTV7S2766C6[8]),  8,9},
  {&(_tg__ZTV7S2766C7__7S2766C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S2766C6[];
extern  VTBL_ENTRY _ZTV7S2766C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C6[];
Class_Descriptor cd_S2766C6 = {  "S2766C6", // class name
  bases_S2766C6, 4,
  &(vtc_S2766C6[0]), // expected_vtbl_contents
  &(vtt_S2766C6[0]), // expected_vtt_contents
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI7S2766C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2766C6),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2766C6),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2766C11  : virtual S20997C6 , virtual S2766C4 , S4227C37 {
  virtual  ~S2766C11(); // _ZN8S2766C11D2Ev
  S2766C11(); // tgen
};
//SIG(-1 S2766C11) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S2766C11()
{
  extern Class_Descriptor cd_S2766C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S2766C11, buf);
    S2766C11 *dp, &lv = *(dp=new (buf) S2766C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S2766C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C11)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S2766C11");
    check_base_class_offset(lv, (S2766C4*), 0, "S2766C11");
    check_base_class_offset(lv, (S4227C37*), 0, "S2766C11");
    test_class_info(&lv, &cd_S2766C11);
    dp->~S2766C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C11(Test_S2766C11, "S2766C11", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S2766C11C1Ev();
extern void _ZN8S2766C11D2Ev();
Name_Map name_map_S2766C11[] = {
  NSPAIR(_ZN8S2766C11C1Ev),
  NSPAIR(_ZN8S2766C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S2766C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2766C4,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2766C11[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C11D1Ev();
extern void _ZN8S2766C11D0Ev();
static  VTBL_ENTRY vtc_S2766C11[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D0Ev,
};
extern VTBL_ENTRY _ZTV8S2766C11[];
static  VTT_ENTRY vtt_S2766C11[] = {
  {&(_ZTV8S2766C11[5]),  5,8},
  {&(_ZTV8S2766C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S2766C11[];
extern  VTBL_ENTRY _ZTV8S2766C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C11[];
Class_Descriptor cd_S2766C11 = {  "S2766C11", // class name
  bases_S2766C11, 3,
  &(vtc_S2766C11[0]), // expected_vtbl_contents
  &(vtt_S2766C11[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S2766C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S2766C11),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2766C11),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  S2766C12  : virtual S4227C37 , virtual S2766C11 {
  virtual void  v2(); // _ZN8S2766C122v2Ev
  ~S2766C12(); // tgen
  S2766C12(); // tgen
};
//SIG(-1 S2766C12) C1{ VBC2{ m} VBC3{ VBC4{ m FL[5]} VBC5{ v2} BC2 vd} v1}


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

static void Test_S2766C12()
{
  extern Class_Descriptor cd_S2766C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S2766C12, buf);
    S2766C12 *dp, &lv = *(dp=new (buf) S2766C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S2766C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C12)");
    /*is_ambiguous_... S2766C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), ABISELECT(8,4), "S2766C12");
    check_base_class_offset(lv, (S20997C6*)(S2766C11*), ABISELECT(8,4), "S2766C12");
    check_base_class_offset(lv, (S2766C4*)(S2766C11*), 0, "S2766C12");
    check_base_class_offset(lv, (S4227C37*)(S2766C11*), 0, "S2766C12");
    check_base_class_offset(lv, (S2766C11*), 0, "S2766C12");
    test_class_info(&lv, &cd_S2766C12);
    dp->~S2766C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C12(Test_S2766C12, "S2766C12", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S2766C12C1Ev();
extern void _ZN8S2766C12D1Ev();
Name_Map name_map_S2766C12[] = {
  NSPAIR(_ZN8S2766C12C1Ev),
  NSPAIR(_ZN8S2766C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C11;
extern VTBL_ENTRY _ZTI8S2766C11[];
extern  VTBL_ENTRY _ZTV8S2766C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C11[];
static Base_Class bases_S2766C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2766C4,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2766C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2766C12[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C12D1Ev();
extern void _ZN8S2766C12D0Ev();
extern void _ZN8S2766C122v2Ev();
static  VTBL_ENTRY vtc_S2766C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C12[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C12D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C12D0Ev,
  (VTBL_ENTRY)&_ZN8S2766C122v2Ev,
};
extern VTBL_ENTRY _ZTV8S2766C12[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C11D1Ev();
extern void _ZN8S2766C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C11__8S2766C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D0Ev,
};
static  VTT_ENTRY vtt_S2766C12[] = {
  {&(_ZTV8S2766C12[8]),  8,12},
  {&(_ZTV8S2766C12[8]),  8,12},
  {&(_ZTV8S2766C12[8]),  8,12},
  {&(_tg__ZTV8S2766C11__8S2766C12[5]),  5,8},
  {&(_tg__ZTV8S2766C11__8S2766C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S2766C12[];
extern  VTBL_ENTRY _ZTV8S2766C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C12[];
Class_Descriptor cd_S2766C12 = {  "S2766C12", // class name
  bases_S2766C12, 5,
  &(vtc_S2766C12[0]), // expected_vtbl_contents
  &(vtt_S2766C12[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S2766C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S2766C12),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2766C12),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2766C13  : virtual S2766C4 {
  ::S2766C7 s2766c13f0[9];
  ~S2766C13(); // tgen
  S2766C13(); // tgen
};
//SIG(-1 S2766C13) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S2766C13()
{
  extern Class_Descriptor cd_S2766C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S2766C13, buf);
    S2766C13 *dp, &lv = *(dp=new (buf) S2766C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S2766C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C13)");
    check_base_class_offset(lv, (S2766C4*), 0, "S2766C13");
    check_field_offset(lv, s2766c13f0, ABISELECT(8,4), "S2766C13.s2766c13f0");
    test_class_info(&lv, &cd_S2766C13);
    dp->~S2766C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C13(Test_S2766C13, "S2766C13", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN8S2766C13C1Ev();
extern void _ZN8S2766C13D1Ev();
Name_Map name_map_S2766C13[] = {
  NSPAIR(_ZN8S2766C13C1Ev),
  NSPAIR(_ZN8S2766C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
static Base_Class bases_S2766C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2766C4,    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 _ZTI8S2766C13[];
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY vtc_S2766C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C13[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S2766C13[];
static  VTT_ENTRY vtt_S2766C13[] = {
  {&(_ZTV8S2766C13[4]),  4,5},
  {&(_ZTV8S2766C13[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S2766C13[];
extern  VTBL_ENTRY _ZTV8S2766C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C13[];
Class_Descriptor cd_S2766C13 = {  "S2766C13", // class name
  bases_S2766C13, 1,
  &(vtc_S2766C13[0]), // expected_vtbl_contents
  &(vtt_S2766C13[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI8S2766C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S2766C13),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2766C13),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  S2766C10  : virtual S2766C4 , virtual S2766C11 , virtual S10258C6_nt , virtual S2766C12 , virtual S2766C13 {
  virtual  ~S2766C10(); // _ZN8S2766C10D2Ev
  S2766C10(); // tgen
};
//SIG(-1 S2766C10) C1{ VBC2{ v1} VBC3{ VBC4{ m FL[5]} VBC2 BC5{ m} vd} VBC6{ m FL[4]} VBC7{ VBC5 VBC3 v2} VBC8{ VBC2 FC9{ BC2 VBC4 BC5 Fp[10]}[9]} vd}


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

static void Test_S2766C10()
{
  extern Class_Descriptor cd_S2766C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(156,210)];
    init_test(&cd_S2766C10, buf);
    S2766C10 *dp, &lv = *(dp=new (buf) S2766C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1240,836), "sizeof(S2766C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C10)");
    check_base_class_offset(lv, (S2766C4*), 0, "S2766C10");
    check_base_class_offset(lv, (S2766C4*)(S2766C11*), 0, "S2766C10");
    check_base_class_offset(lv, (S2766C4*)(S2766C13*), 0, "S2766C10");
    check_base_class_offset(lv, (S20997C6*)(S2766C11*), ABISELECT(8,4), "S2766C10");
    check_base_class_offset(lv, (S4227C37*)(S2766C11*), 0, "S2766C10");
    check_base_class_offset(lv, (S2766C11*), 0, "S2766C10");
    check_base_class_offset(lv, (S2766C11*)(S2766C12*), 0, "S2766C10");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(48,44), "S2766C10");
    /*is_ambiguous_... S2766C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S2766C12*), ABISELECT(80,76), "S2766C10");
    check_base_class_offset(lv, (S2766C12*), 0, "S2766C10");
    check_base_class_offset(lv, (S2766C13*), ABISELECT(80,76), "S2766C10");
    test_class_info(&lv, &cd_S2766C10);
    dp->~S2766C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C10(Test_S2766C10, "S2766C10", ABISELECT(1240,836));

#else // __cplusplus

extern void _ZN8S2766C10C1Ev();
extern void _ZN8S2766C10D2Ev();
Name_Map name_map_S2766C10[] = {
  NSPAIR(_ZN8S2766C10C1Ev),
  NSPAIR(_ZN8S2766C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C11;
extern VTBL_ENTRY _ZTI8S2766C11[];
extern  VTBL_ENTRY _ZTV8S2766C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C11[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C12;
extern VTBL_ENTRY _ZTI8S2766C12[];
extern  VTBL_ENTRY _ZTV8S2766C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C12[];
extern Class_Descriptor cd_S2766C13;
extern VTBL_ENTRY _ZTI8S2766C13[];
extern  VTBL_ENTRY _ZTV8S2766C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C13[];
static Base_Class bases_S2766C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2766C4,    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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(80,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S2766C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2766C13,    ABISELECT(80,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2766C10[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C10D1Ev();
extern void _ZN8S2766C10D0Ev();
extern void _ZN8S2766C122v2Ev();
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY vtc_S2766C10[] = {
  ABISELECT(80,76),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C10[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C10D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C10D0Ev,
  (VTBL_ENTRY)&_ZN8S2766C122v2Ev,
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  (VTBL_ENTRY)&(_ZTI8S2766C10[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S2766C10[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C11D1Ev();
extern void _ZN8S2766C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C11__8S2766C10[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D0Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S2766C12D1Ev,_ZTv0_n24_N8S2766C12D1Ev)();
extern void _ZN8S2766C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2766C12D0Ev,_ZTv0_n24_N8S2766C12D0Ev)();
extern void _ZN8S2766C12D0Ev() __attribute__((weak));
extern void _ZN8S2766C122v2Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C12__8S2766C10[] = {
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C12[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C12D1Ev,_ZTv0_n24_N8S2766C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C12D0Ev,_ZTv0_n24_N8S2766C12D0Ev),
  (VTBL_ENTRY)&_ZN8S2766C122v2Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C13__8S2766C10[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C13[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C4__8S2766C13__8S2766C10[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI8S2766C13[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
static  VTT_ENTRY vtt_S2766C10[] = {
  {&(_ZTV8S2766C10[12]),  12,21},
  {&(_ZTV8S2766C10[12]),  12,21},
  {&(_ZTV8S2766C10[12]),  12,21},
  {&(_ZTV8S2766C10[12]),  12,21},
  {&(_ZTV8S2766C10[20]),  20,21},
  {&(_tg__ZTV8S2766C11__8S2766C10[5]),  5,8},
  {&(_tg__ZTV8S2766C11__8S2766C10[5]),  5,8},
  {&(_tg__ZTV8S2766C12__8S2766C10[8]),  8,12},
  {&(_tg__ZTV8S2766C12__8S2766C10[8]),  8,12},
  {&(_tg__ZTV8S2766C12__8S2766C10[8]),  8,12},
  {&(_tg__ZTV8S2766C13__8S2766C10[4]),  4,5},
  {&(_tg__ZTV7S2766C4__8S2766C13__8S2766C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S2766C10[];
extern  VTBL_ENTRY _ZTV8S2766C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C10[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C12D0Ev,_ZTv0_n24_N8S2766C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S2766C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C12D1Ev,_ZTv0_n24_N8S2766C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S2766C12D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2766C10 = {  "S2766C10", // class name
  bases_S2766C10, 8,
  &(vtc_S2766C10[0]), // expected_vtbl_contents
  &(vtt_S2766C10[0]), // expected_vtt_contents
  ABISELECT(1240,836), // object size
  NSPAIRA(_ZTI8S2766C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S2766C10),21, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2766C10),12, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2766C14  : S2766C2 , S2766C7 {
  ~S2766C14(); // tgen
  S2766C14(); // tgen
};
//SIG(-1 S2766C14) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} BC5{ BC4 VBC3 BC6{ m} Fp[10]}}


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

static void Test_S2766C14()
{
  extern Class_Descriptor cd_S2766C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S2766C14, buf);
    S2766C14 *dp, &lv = *(dp=new (buf) S2766C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S2766C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C14)");
    check_base_class_offset(lv, (S20997C6*)(S2766C2*), ABISELECT(8,4), "S2766C14");
    check_base_class_offset(lv, (S2766C4*)(S2766C2*), 0, "S2766C14");
    check_base_class_offset(lv, (S2766C2*), 0, "S2766C14");
    check_base_class_offset(lv, (S2766C4*)(S2766C7*), ABISELECT(48,44), "S2766C14");
    check_base_class_offset(lv, (S20997C6*)(S2766C7*), ABISELECT(136,88), "S2766C14");
    check_base_class_offset(lv, (S4227C37*)(S2766C7*), ABISELECT(48,44), "S2766C14");
    check_base_class_offset(lv, (S2766C7*), ABISELECT(48,44), "S2766C14");
    test_class_info(&lv, &cd_S2766C14);
    dp->~S2766C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C14(Test_S2766C14, "S2766C14", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN8S2766C14C1Ev();
extern void _ZN8S2766C14D1Ev();
Name_Map name_map_S2766C14[] = {
  NSPAIR(_ZN8S2766C14C1Ev),
  NSPAIR(_ZN8S2766C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S2766C2;
extern VTBL_ENTRY _ZTI7S2766C2[];
extern  VTBL_ENTRY _ZTV7S2766C2[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C7;
extern VTBL_ENTRY _ZTI7S2766C7[];
extern  VTBL_ENTRY _ZTV7S2766C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C7[];
static Base_Class bases_S2766C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2766C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2766C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S2766C4,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    6, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S2766C7,    ABISELECT(48,44), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2766C14[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY vtc_S2766C14[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C14[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  ABISELECT(88,44),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S2766C14[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S2766C14[];
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__8S2766C14[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C7[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
static  VTT_ENTRY vtt_S2766C14[] = {
  {&(_ZTV8S2766C14[3]),  3,8},
  {&(_tg__ZTV7S2766C7__8S2766C14[3]),  3,4},
  {&(_ZTV8S2766C14[7]),  7,8},
};
extern VTBL_ENTRY _ZTI8S2766C14[];
extern  VTBL_ENTRY _ZTV8S2766C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C14[];
Class_Descriptor cd_S2766C14 = {  "S2766C14", // class name
  bases_S2766C14, 7,
  &(vtc_S2766C14[0]), // expected_vtbl_contents
  &(vtt_S2766C14[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI8S2766C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S2766C14),8, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2766C14),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  S2766C5  : virtual S2766C6 , S2766C4 , virtual S10258C6_nt , virtual S2766C10 , S2766C14 {
  ~S2766C5(); // tgen
  S2766C5(); // tgen
};
//SIG(-1 S2766C5) C1{ VBC2{ VBC3{ BC4{ v1} VBC5{ m FL[5]} BC6{ m} Fp[10]}} BC4 VBC7{ m FL[4]} VBC8{ VBC4 VBC9{ VBC5 VBC4 BC6 vd} VBC7 VBC10{ VBC6 VBC9 v2} VBC11{ VBC4 FC3[9]} vd} BC12{ BC13{ BC5 BC4} BC3}}


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

static void Test_S2766C5()
{
  extern Class_Descriptor cd_S2766C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(186,245)];
    init_test(&cd_S2766C5, buf);
    S2766C5 *dp, &lv = *(dp=new (buf) S2766C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1480,976), "sizeof(S2766C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C5)");
    /*is_ambiguous_... S2766C5::S2766C7 */ AMB_check_base_class_offset(lv, (S2766C4*)(S2766C7*), ABISELECT(152,96), "S2766C5");
    /*is_ambiguous_... S2766C5::S2766C7 */ AMB_check_base_class_offset(lv, (S20997C6*)(S2766C7*), ABISELECT(240,140), "S2766C5");
    check_base_class_offset(lv, (S20997C6*)(S2766C11*), ABISELECT(240,140), "S2766C5");
    check_base_class_offset(lv, (S20997C6*)(S2766C7*)(S2766C14*), ABISELECT(240,140), "S2766C5");
    /*is_ambiguous_... S2766C5::S2766C7 */ AMB_check_base_class_offset(lv, (S4227C37*)(S2766C7*), ABISELECT(152,96), "S2766C5");
    check_base_class_offset(lv, (S2766C7*)(S2766C6*), ABISELECT(152,96), "S2766C5");
    check_base_class_offset(lv, (S2766C6*), ABISELECT(144,92), "S2766C5");
    /*is_ambiguous_... S2766C5::S2766C4 */ AMB_check_base_class_offset(lv, (S2766C4*), 0, "S2766C5");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(280,180), "S2766C5");
    check_base_class_offset(lv, (S10258C6_nt*)(S2766C10*), ABISELECT(280,180), "S2766C5");
    check_base_class_offset(lv, (S2766C4*)(S2766C10*), ABISELECT(312,212), "S2766C5");
    check_base_class_offset(lv, (S2766C4*)(S2766C11*), ABISELECT(312,212), "S2766C5");
    check_base_class_offset(lv, (S2766C4*)(S2766C13*), ABISELECT(312,212), "S2766C5");
    check_base_class_offset(lv, (S4227C37*)(S2766C11*), ABISELECT(312,212), "S2766C5");
    check_base_class_offset(lv, (S2766C11*)(S2766C10*), ABISELECT(312,212), "S2766C5");
    check_base_class_offset(lv, (S2766C11*)(S2766C12*), ABISELECT(312,212), "S2766C5");
    /*is_ambiguous_... S2766C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S2766C12*), 0, "S2766C5");
    check_base_class_offset(lv, (S2766C12*)(S2766C10*), ABISELECT(312,212), "S2766C5");
    check_base_class_offset(lv, (S2766C13*)(S2766C10*), ABISELECT(320,216), "S2766C5");
    check_base_class_offset(lv, (S2766C10*), ABISELECT(312,212), "S2766C5");
    check_base_class_offset(lv, (S20997C6*)(S2766C2*)(S2766C14*), ABISELECT(16,8), "S2766C5");
    check_base_class_offset(lv, (S2766C4*)(S2766C2*)(S2766C14*), ABISELECT(8,4), "S2766C5");
    check_base_class_offset(lv, (S2766C2*)(S2766C14*), ABISELECT(8,4), "S2766C5");
    check_base_class_offset(lv, (S2766C4*)(S2766C7*)(S2766C14*), ABISELECT(56,48), "S2766C5");
    check_base_class_offset(lv, (S4227C37*)(S2766C7*)(S2766C14*), ABISELECT(56,48), "S2766C5");
    check_base_class_offset(lv, (S2766C7*)(S2766C14*), ABISELECT(56,48), "S2766C5");
    check_base_class_offset(lv, (S2766C14*), ABISELECT(8,4), "S2766C5");
    test_class_info(&lv, &cd_S2766C5);
    dp->~S2766C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C5(Test_S2766C5, "S2766C5", ABISELECT(1480,976));

#else // __cplusplus

extern void _ZN7S2766C5C1Ev();
extern void _ZN7S2766C5D1Ev();
Name_Map name_map_S2766C5[] = {
  NSPAIR(_ZN7S2766C5C1Ev),
  NSPAIR(_ZN7S2766C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C7;
extern VTBL_ENTRY _ZTI7S2766C7[];
extern  VTBL_ENTRY _ZTV7S2766C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C7[];
extern Class_Descriptor cd_S2766C6;
extern VTBL_ENTRY _ZTI7S2766C6[];
extern  VTBL_ENTRY _ZTV7S2766C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C11;
extern VTBL_ENTRY _ZTI8S2766C11[];
extern  VTBL_ENTRY _ZTV8S2766C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C12;
extern VTBL_ENTRY _ZTI8S2766C12[];
extern  VTBL_ENTRY _ZTV8S2766C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C12[];
extern Class_Descriptor cd_S2766C13;
extern VTBL_ENTRY _ZTI8S2766C13[];
extern  VTBL_ENTRY _ZTV8S2766C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C13[];
extern Class_Descriptor cd_S2766C10;
extern VTBL_ENTRY _ZTI8S2766C10[];
extern  VTBL_ENTRY _ZTV8S2766C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S2766C2;
extern VTBL_ENTRY _ZTI7S2766C2[];
extern  VTBL_ENTRY _ZTV7S2766C2[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C7;
extern VTBL_ENTRY _ZTI7S2766C7[];
extern  VTBL_ENTRY _ZTV7S2766C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C7[];
extern Class_Descriptor cd_S2766C14;
extern VTBL_ENTRY _ZTI8S2766C14[];
extern  VTBL_ENTRY _ZTV8S2766C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C14[];
static Base_Class bases_S2766C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2766C4,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S2766C7,    ABISELECT(152,96), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S2766C6,    ABISELECT(144,92), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2766C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10258C6_nt,    ABISELECT(280,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2766C4,    ABISELECT(312,212), //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
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(312,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
    9, //immediately_derived
  0, 0},
  {&cd_S2766C11,    ABISELECT(312,212), //bcp->offset
    -1, //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
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C12,    ABISELECT(312,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S2766C13,    ABISELECT(320,216), //bcp->offset
    48, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S2766C10,    ABISELECT(312,212), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    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
    16, //immediately_derived
  0, 0},
  {&cd_S2766C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S2766C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2766C4,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S2766C7,    ABISELECT(56,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S2766C14,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //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 _ZTI7S2766C5[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C5D1Ev();
extern void _ZN7S2766C5D0Ev();
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S2766C5D1Ev,_ZTv0_n24_N7S2766C5D1Ev)();
extern void ABISELECT(_ZThn312_N7S2766C5D1Ev,_ZThn212_N7S2766C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2766C5D0Ev,_ZTv0_n24_N7S2766C5D0Ev)();
extern void ABISELECT(_ZThn312_N7S2766C5D0Ev,_ZThn212_N7S2766C5D0Ev)() __attribute__((weak));
extern void _ZN8S2766C122v2Ev();
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY vtc_S2766C5[] = {
  ABISELECT(320,216),
  0,
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(280,180),
  ABISELECT(240,140),
  ABISELECT(152,96),
  ABISELECT(144,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN7S2766C5D1Ev,
  (VTBL_ENTRY)&_ZN7S2766C5D0Ev,
  ABISELECT(232,136),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  ABISELECT(184,92),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  ABISELECT(96,48),
  ABISELECT(8,4),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-312,-212),
  ABISELECT(-312,-212),
  0,
  -72,
  0,
  ABISELECT(-312,-212),
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2766C5D1Ev,_ZTv0_n24_N7S2766C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2766C5D0Ev,_ZTv0_n24_N7S2766C5D0Ev),
  (VTBL_ENTRY)&_ZN8S2766C122v2Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S2766C5[];
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C14__7S2766C5[] = {
  ABISELECT(232,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C14[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C78S2766C14__A1__7S2766C5[] = {
  ABISELECT(184,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C7[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__8S2766C14__7S2766C5[] = {
  ABISELECT(184,92),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S2766C14[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
static  VTBL_ENTRY _tg__ZTV7S2766C6__7S2766C5[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C6[0]),
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__7S2766C6__7S2766C5[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2766C6[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__7S2766C5[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C7[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S2766C10D1Ev,_ZTv0_n24_N8S2766C10D1Ev)();
extern void _ZN8S2766C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2766C10D0Ev,_ZTv0_n24_N8S2766C10D0Ev)();
extern void _ZN8S2766C10D0Ev() __attribute__((weak));
extern void _ZN8S2766C122v2Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C10__7S2766C5[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-312,-212),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C10[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C10D1Ev,_ZTv0_n24_N8S2766C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C10D0Ev,_ZTv0_n24_N8S2766C10D0Ev),
  (VTBL_ENTRY)&_ZN8S2766C122v2Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C13__8S2766C10__7S2766C5[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S2766C10[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C11D1Ev();
extern void _ZN8S2766C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C11__7S2766C5[] = {
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D0Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S2766C12D1Ev,_ZTv0_n24_N8S2766C12D1Ev)();
extern void _ZN8S2766C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2766C12D0Ev,_ZTv0_n24_N8S2766C12D0Ev)();
extern void _ZN8S2766C12D0Ev() __attribute__((weak));
extern void _ZN8S2766C122v2Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C12__7S2766C5[] = {
  0,
  ABISELECT(-312,-212),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C12[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C12D1Ev,_ZTv0_n24_N8S2766C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C12D0Ev,_ZTv0_n24_N8S2766C12D0Ev),
  (VTBL_ENTRY)&_ZN8S2766C122v2Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C13__7S2766C5[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C13[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C4__8S2766C13__7S2766C5[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S2766C13[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
static  VTT_ENTRY vtt_S2766C5[] = {
  {&(_ZTV7S2766C5[12]),  12,53},
  {&(_tg__ZTV8S2766C14__7S2766C5[3]),  3,4},
  {&(_tg__ZTV7S2766C78S2766C14__A1__7S2766C5[3]),  3,4},
  {&(_tg__ZTV7S2766C7__8S2766C14__7S2766C5[3]),  3,4},
  {&(_ZTV7S2766C5[27]),  27,53},
  {&(_ZTV7S2766C5[31]),  31,53},
  {&(_ZTV7S2766C5[44]),  44,53},
  {&(_ZTV7S2766C5[44]),  44,53},
  {&(_ZTV7S2766C5[44]),  44,53},
  {&(_ZTV7S2766C5[44]),  44,53},
  {&(_ZTV7S2766C5[52]),  52,53},
  {&(_ZTV7S2766C5[18]),  18,53},
  {&(_ZTV7S2766C5[22]),  22,53},
  {&(_tg__ZTV7S2766C6__7S2766C5[4]),  4,4},
  {&(_tg__ZTV7S2766C7__7S2766C6__7S2766C5[4]),  4,5},
  {&(_tg__ZTV7S2766C7__7S2766C5[3]),  3,4},
  {&(_tg__ZTV8S2766C10__7S2766C5[12]),  12,16},
  {&(_tg__ZTV8S2766C10__7S2766C5[12]),  12,16},
  {&(_tg__ZTV8S2766C10__7S2766C5[12]),  12,16},
  {&(_tg__ZTV8S2766C10__7S2766C5[12]),  12,16},
  {&(_tg__ZTV8S2766C13__8S2766C10__7S2766C5[4]),  4,5},
  {&(_tg__ZTV8S2766C11__7S2766C5[5]),  5,8},
  {&(_tg__ZTV8S2766C11__7S2766C5[5]),  5,8},
  {&(_tg__ZTV8S2766C12__7S2766C5[8]),  8,12},
  {&(_tg__ZTV8S2766C12__7S2766C5[8]),  8,12},
  {&(_tg__ZTV8S2766C12__7S2766C5[8]),  8,12},
  {&(_tg__ZTV8S2766C13__7S2766C5[4]),  4,5},
  {&(_tg__ZTV7S2766C4__8S2766C13__7S2766C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S2766C5[];
extern  VTBL_ENTRY _ZTV7S2766C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C5[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C12D0Ev,_ZTv0_n24_N8S2766C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S2766C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C12D1Ev,_ZTv0_n24_N8S2766C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S2766C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C10D0Ev,_ZTv0_n24_N8S2766C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S2766C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C10D1Ev,_ZTv0_n24_N8S2766C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S2766C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2766C5D0Ev,_ZTv0_n24_N7S2766C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S2766C5D0Ev,_ZThn212_N7S2766C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2766C5D1Ev,_ZTv0_n24_N7S2766C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S2766C5D1Ev,_ZThn212_N7S2766C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2766C5 = {  "S2766C5", // class name
  bases_S2766C5, 21,
  &(vtc_S2766C5[0]), // expected_vtbl_contents
  &(vtt_S2766C5[0]), // expected_vtt_contents
  ABISELECT(1480,976), // object size
  NSPAIRA(_ZTI7S2766C5),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2766C5),53, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2766C5),28, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2766C15  : virtual S10258C6_nt , virtual S2766C11 {
  virtual  ~S2766C15(); // _ZN8S2766C15D2Ev
  S2766C15(); // tgen
};
//SIG(-1 S2766C15) C1{ VBC2{ m FL[4]} VBC3{ VBC4{ m FL[5]} VBC5{ v1} BC6{ m} vd} vd}


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

static void Test_S2766C15()
{
  extern Class_Descriptor cd_S2766C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,20)];
    init_test(&cd_S2766C15, buf);
    S2766C15 *dp, &lv = *(dp=new (buf) S2766C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,76), "sizeof(S2766C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C15)");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(8,4), "S2766C15");
    check_base_class_offset(lv, (S20997C6*)(S2766C11*), ABISELECT(40,36), "S2766C15");
    check_base_class_offset(lv, (S2766C4*)(S2766C11*), 0, "S2766C15");
    check_base_class_offset(lv, (S4227C37*)(S2766C11*), 0, "S2766C15");
    check_base_class_offset(lv, (S2766C11*), 0, "S2766C15");
    test_class_info(&lv, &cd_S2766C15);
    dp->~S2766C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C15(Test_S2766C15, "S2766C15", ABISELECT(80,76));

#else // __cplusplus

extern void _ZN8S2766C15C1Ev();
extern void _ZN8S2766C15D2Ev();
Name_Map name_map_S2766C15[] = {
  NSPAIR(_ZN8S2766C15C1Ev),
  NSPAIR(_ZN8S2766C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C11;
extern VTBL_ENTRY _ZTI8S2766C11[];
extern  VTBL_ENTRY _ZTV8S2766C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C11[];
static Base_Class bases_S2766C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S2766C4,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2766C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S2766C15[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C15D1Ev();
extern void _ZN8S2766C15D0Ev();
static  VTBL_ENTRY vtc_S2766C15[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C15[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C15D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C15D0Ev,
};
extern VTBL_ENTRY _ZTV8S2766C15[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C11D1Ev();
extern void _ZN8S2766C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C11__8S2766C15[] = {
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D0Ev,
};
static  VTT_ENTRY vtt_S2766C15[] = {
  {&(_ZTV8S2766C15[8]),  8,11},
  {&(_ZTV8S2766C15[8]),  8,11},
  {&(_ZTV8S2766C15[8]),  8,11},
  {&(_tg__ZTV8S2766C11__8S2766C15[5]),  5,8},
  {&(_tg__ZTV8S2766C11__8S2766C15[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S2766C15[];
extern  VTBL_ENTRY _ZTV8S2766C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C15[];
Class_Descriptor cd_S2766C15 = {  "S2766C15", // class name
  bases_S2766C15, 5,
  &(vtc_S2766C15[0]), // expected_vtbl_contents
  &(vtt_S2766C15[0]), // expected_vtt_contents
  ABISELECT(80,76), // object size
  NSPAIRA(_ZTI8S2766C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S2766C15),11, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2766C15),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2766C17  : S2766C11 {
  virtual  ~S2766C17(); // _ZN8S2766C17D2Ev
  S2766C17(); // tgen
};
//SIG(-1 S2766C17) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S2766C17()
{
  extern Class_Descriptor cd_S2766C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S2766C17, buf);
    S2766C17 *dp, &lv = *(dp=new (buf) S2766C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S2766C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C17)");
    check_base_class_offset(lv, (S20997C6*)(S2766C11*), ABISELECT(8,4), "S2766C17");
    check_base_class_offset(lv, (S2766C4*)(S2766C11*), 0, "S2766C17");
    check_base_class_offset(lv, (S4227C37*)(S2766C11*), 0, "S2766C17");
    check_base_class_offset(lv, (S2766C11*), 0, "S2766C17");
    test_class_info(&lv, &cd_S2766C17);
    dp->~S2766C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C17(Test_S2766C17, "S2766C17", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S2766C17C1Ev();
extern void _ZN8S2766C17D2Ev();
Name_Map name_map_S2766C17[] = {
  NSPAIR(_ZN8S2766C17C1Ev),
  NSPAIR(_ZN8S2766C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C11;
extern VTBL_ENTRY _ZTI8S2766C11[];
extern  VTBL_ENTRY _ZTV8S2766C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C11[];
static Base_Class bases_S2766C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C4,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2766C17[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C17D1Ev();
extern void _ZN8S2766C17D0Ev();
static  VTBL_ENTRY vtc_S2766C17[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C17[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C17D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C17D0Ev,
};
extern VTBL_ENTRY _ZTV8S2766C17[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C11D1Ev();
extern void _ZN8S2766C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C11__8S2766C17[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D0Ev,
};
static  VTT_ENTRY vtt_S2766C17[] = {
  {&(_ZTV8S2766C17[5]),  5,8},
  {&(_tg__ZTV8S2766C11__8S2766C17[5]),  5,8},
  {&(_tg__ZTV8S2766C11__8S2766C17[5]),  5,8},
  {&(_ZTV8S2766C17[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S2766C17[];
extern  VTBL_ENTRY _ZTV8S2766C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C17[];
Class_Descriptor cd_S2766C17 = {  "S2766C17", // class name
  bases_S2766C17, 4,
  &(vtc_S2766C17[0]), // expected_vtbl_contents
  &(vtt_S2766C17[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S2766C17),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S2766C17),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2766C17),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  S2766C16  : virtual S4227C37 , S2766C13 , S2766C11 , S2766C17 {
  ~S2766C16(); // tgen
  S2766C16(); // tgen
};
//SIG(-1 S2766C16) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S2766C16()
{
  extern Class_Descriptor cd_S2766C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S2766C16, buf);
    S2766C16 *dp, &lv = *(dp=new (buf) S2766C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S2766C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C16)");
    /*is_ambiguous_... S2766C16::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S2766C16");
    check_base_class_offset(lv, (S2766C4*)(S2766C13*), 0, "S2766C16");
    /*is_ambiguous_... S2766C16::S2766C11 */ AMB_check_base_class_offset(lv, (S2766C4*)(S2766C11*), 0, "S2766C16");
    check_base_class_offset(lv, (S2766C4*)(S2766C11*)(S2766C17*), 0, "S2766C16");
    check_base_class_offset(lv, (S2766C13*), 0, "S2766C16");
    /*is_ambiguous_... S2766C16::S2766C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S2766C11*), ABISELECT(1176,768), "S2766C16");
    check_base_class_offset(lv, (S20997C6*)(S2766C11*)(S2766C17*), ABISELECT(1176,768), "S2766C16");
    /*is_ambiguous_... S2766C16::S2766C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S2766C11*), ABISELECT(1160,760), "S2766C16");
    /*is_ambiguous_... S2766C16::S2766C11 */ AMB_check_base_class_offset(lv, (S2766C11*), ABISELECT(1160,760), "S2766C16");
    check_base_class_offset(lv, (S4227C37*)(S2766C11*)(S2766C17*), ABISELECT(1168,764), "S2766C16");
    check_base_class_offset(lv, (S2766C11*)(S2766C17*), ABISELECT(1168,764), "S2766C16");
    check_base_class_offset(lv, (S2766C17*), ABISELECT(1168,764), "S2766C16");
    test_class_info(&lv, &cd_S2766C16);
    dp->~S2766C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C16(Test_S2766C16, "S2766C16", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN8S2766C16C1Ev();
extern void _ZN8S2766C16D1Ev();
Name_Map name_map_S2766C16[] = {
  NSPAIR(_ZN8S2766C16C1Ev),
  NSPAIR(_ZN8S2766C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S2766C13;
extern VTBL_ENTRY _ZTI8S2766C13[];
extern  VTBL_ENTRY _ZTV8S2766C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C13[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C11;
extern VTBL_ENTRY _ZTI8S2766C11[];
extern  VTBL_ENTRY _ZTV8S2766C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C11;
extern VTBL_ENTRY _ZTI8S2766C11[];
extern  VTBL_ENTRY _ZTV8S2766C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C11[];
extern Class_Descriptor cd_S2766C17;
extern VTBL_ENTRY _ZTI8S2766C17[];
extern  VTBL_ENTRY _ZTV8S2766C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C17[];
static Base_Class bases_S2766C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2766C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S2766C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C11,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C11,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S2766C17,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2766C16[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C16D1Ev();
extern void _ZN8S2766C16D0Ev();
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZThn1160_N8S2766C16D1Ev,_ZThn760_N8S2766C16D1Ev)();
extern void ABISELECT(_ZThn1160_N8S2766C16D0Ev,_ZThn760_N8S2766C16D0Ev)();
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZThn1168_N8S2766C16D1Ev,_ZThn764_N8S2766C16D1Ev)();
extern void ABISELECT(_ZThn1168_N8S2766C16D0Ev,_ZThn764_N8S2766C16D0Ev)();
static  VTBL_ENTRY vtc_S2766C16[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C16[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C16D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C16D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S2766C16[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S2766C16D1Ev,_ZThn760_N8S2766C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S2766C16D0Ev,_ZThn760_N8S2766C16D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S2766C16[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S2766C16D1Ev,_ZThn764_N8S2766C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S2766C16D0Ev,_ZThn764_N8S2766C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S2766C16[];
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C13__8S2766C16[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C13[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C11D1Ev();
extern void _ZN8S2766C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C11__8S2766C16[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D0Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C4__8S2766C11__8S2766C16[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C17D1Ev();
extern void _ZN8S2766C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C17__8S2766C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C17[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C17D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C17D0Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C11D1Ev();
extern void _ZN8S2766C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C118S2766C17__A1__8S2766C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D0Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C4__8S2766C118S2766C17__A1__8S2766C16[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C4__8S2766C17__8S2766C16[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S2766C17[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
static  VTT_ENTRY vtt_S2766C16[] = {
  {&(_ZTV8S2766C16[6]),  6,25},
  {&(_tg__ZTV8S2766C13__8S2766C16[4]),  4,5},
  {&(_tg__ZTV8S2766C13__8S2766C16[4]),  4,5},
  {&(_tg__ZTV8S2766C11__8S2766C16[5]),  5,8},
  {&(_tg__ZTV7S2766C4__8S2766C11__8S2766C16[3]),  3,4},
  {&(_tg__ZTV8S2766C17__8S2766C16[5]),  5,8},
  {&(_tg__ZTV8S2766C118S2766C17__A1__8S2766C16[5]),  5,8},
  {&(_tg__ZTV7S2766C4__8S2766C118S2766C17__A1__8S2766C16[3]),  3,4},
  {&(_tg__ZTV7S2766C4__8S2766C17__8S2766C16[3]),  3,4},
  {&(_ZTV8S2766C16[6]),  6,25},
  {&(_ZTV8S2766C16[14]),  14,25},
  {&(_ZTV8S2766C16[22]),  22,25},
};
extern VTBL_ENTRY _ZTI8S2766C16[];
extern  VTBL_ENTRY _ZTV8S2766C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C16[];
Class_Descriptor cd_S2766C16 = {  "S2766C16", // class name
  bases_S2766C16, 9,
  &(vtc_S2766C16[0]), // expected_vtbl_contents
  &(vtt_S2766C16[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI8S2766C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S2766C16),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2766C16),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  S2766C20  : S4227C23 {
};
//SIG(-1 S2766C20) C1{ BC2{ m}}



static void Test_S2766C20()
{
  extern Class_Descriptor cd_S2766C20;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2766C20, buf);
    S2766C20 &lv = *(new (buf) S2766C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2766C20)");
    check2(__alignof__(lv), 1, "__alignof__(S2766C20)");
    check_base_class_offset(lv, (S4227C23*), 0, "S2766C20");
    test_class_info(&lv, &cd_S2766C20);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C20(Test_S2766C20, "S2766C20", 1);

#else // __cplusplus

extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
static Base_Class bases_S2766C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S2766C20[];
Class_Descriptor cd_S2766C20 = {  "S2766C20", // class name
  bases_S2766C20, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S2766C20),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  S2766C18  : virtual S2766C7 , virtual S2766C15 , virtual S2766C14 , S4227C27 , virtual S2766C20 {
  virtual  ~S2766C18(); // _ZN8S2766C18D2Ev
  S2766C18(); // tgen
};
//SIG(-1 S2766C18) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC7{ m FL[4]} VBC8{ VBC4 VBC3 BC5 vd} vd} VBC9{ BC10{ BC4 BC3} BC2} BC11{ m} VBC12{ BC13{ m}} vd}


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

static void Test_S2766C18()
{
  extern Class_Descriptor cd_S2766C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(39,53)];
    init_test(&cd_S2766C18, buf);
    S2766C18 *dp, &lv = *(dp=new (buf) S2766C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,208), "sizeof(S2766C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C18)");
    /*is_ambiguous_... S2766C18::S2766C7 */ AMB_check_base_class_offset(lv, (S2766C4*)(S2766C7*), ABISELECT(8,4), "S2766C18");
    /*is_ambiguous_... S2766C18::S2766C7 */ AMB_check_base_class_offset(lv, (S20997C6*)(S2766C7*), ABISELECT(96,48), "S2766C18");
    check_base_class_offset(lv, (S20997C6*)(S2766C11*), ABISELECT(96,48), "S2766C18");
    check_base_class_offset(lv, (S20997C6*)(S2766C7*)(S2766C14*), ABISELECT(96,48), "S2766C18");
    /*is_ambiguous_... S2766C18::S2766C7 */ AMB_check_base_class_offset(lv, (S4227C37*)(S2766C7*), ABISELECT(8,4), "S2766C18");
    /*is_ambiguous_... S2766C18::S2766C7 */ AMB_check_base_class_offset(lv, (S2766C7*), ABISELECT(8,4), "S2766C18");
    check_base_class_offset(lv, (S10258C6_nt*)(S2766C15*), ABISELECT(136,88), "S2766C18");
    check_base_class_offset(lv, (S2766C4*)(S2766C11*), 0, "S2766C18");
    check_base_class_offset(lv, (S4227C37*)(S2766C11*), 0, "S2766C18");
    check_base_class_offset(lv, (S2766C11*)(S2766C15*), 0, "S2766C18");
    check_base_class_offset(lv, (S2766C15*), 0, "S2766C18");
    check_base_class_offset(lv, (S20997C6*)(S2766C2*)(S2766C14*), ABISELECT(176,124), "S2766C18");
    check_base_class_offset(lv, (S2766C4*)(S2766C2*)(S2766C14*), ABISELECT(168,120), "S2766C18");
    check_base_class_offset(lv, (S2766C2*)(S2766C14*), ABISELECT(168,120), "S2766C18");
    check_base_class_offset(lv, (S2766C4*)(S2766C7*)(S2766C14*), ABISELECT(216,164), "S2766C18");
    check_base_class_offset(lv, (S4227C37*)(S2766C7*)(S2766C14*), ABISELECT(216,164), "S2766C18");
    check_base_class_offset(lv, (S2766C7*)(S2766C14*), ABISELECT(216,164), "S2766C18");
    check_base_class_offset(lv, (S2766C14*), ABISELECT(168,120), "S2766C18");
    check_base_class_offset(lv, (S4227C27*), 0, "S2766C18");
    check_base_class_offset(lv, (S4227C23*)(S2766C20*), 0, "S2766C18");
    check_base_class_offset(lv, (S2766C20*), 0, "S2766C18");
    test_class_info(&lv, &cd_S2766C18);
    dp->~S2766C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C18(Test_S2766C18, "S2766C18", ABISELECT(304,208));

#else // __cplusplus

extern void _ZN8S2766C18C1Ev();
extern void _ZN8S2766C18D2Ev();
Name_Map name_map_S2766C18[] = {
  NSPAIR(_ZN8S2766C18C1Ev),
  NSPAIR(_ZN8S2766C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C7;
extern VTBL_ENTRY _ZTI7S2766C7[];
extern  VTBL_ENTRY _ZTV7S2766C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C7[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C11;
extern VTBL_ENTRY _ZTI8S2766C11[];
extern  VTBL_ENTRY _ZTV8S2766C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C11[];
extern Class_Descriptor cd_S2766C15;
extern VTBL_ENTRY _ZTI8S2766C15[];
extern  VTBL_ENTRY _ZTV8S2766C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C15[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S2766C2;
extern VTBL_ENTRY _ZTI7S2766C2[];
extern  VTBL_ENTRY _ZTV7S2766C2[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C7;
extern VTBL_ENTRY _ZTI7S2766C7[];
extern  VTBL_ENTRY _ZTV7S2766C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C7[];
extern Class_Descriptor cd_S2766C14;
extern VTBL_ENTRY _ZTI8S2766C14[];
extern  VTBL_ENTRY _ZTV8S2766C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C14[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S2766C20;
extern VTBL_ENTRY _ZTI8S2766C20[];
static Base_Class bases_S2766C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2766C4,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C7,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_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
    8, //immediately_derived
  0, 1},
  {&cd_S2766C4,    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
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    8, //immediately_derived
  0, 1},
  {&cd_S2766C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(176,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
    11, //immediately_derived
  0, 0},
  {&cd_S2766C4,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S2766C2,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2766C4,    ABISELECT(216,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
    8, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S2766C7,    ABISELECT(216,164), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S2766C14,    ABISELECT(168,120), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S2766C18[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C18D1Ev();
extern void _ZN8S2766C18D0Ev();
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY vtc_S2766C18[] = {
  0,
  ABISELECT(168,120),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(136,88),
  0,
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C18[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C18D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C18D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S2766C18[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  0,
  -72,
  ABISELECT(-168,-120),
  (VTBL_ENTRY)&(_ZTI8S2766C18[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  ABISELECT(-120,-116),
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI8S2766C18[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S2766C18[];
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__8S2766C18[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C7[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S2766C15D1Ev,_ZTv0_n24_N8S2766C15D1Ev)();
extern void _ZN8S2766C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2766C15D0Ev,_ZTv0_n24_N8S2766C15D0Ev)();
extern void _ZN8S2766C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2766C15__8S2766C18[] = {
  0,
  ABISELECT(136,88),
  0,
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C15[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C15D1Ev,_ZTv0_n24_N8S2766C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C15D0Ev,_ZTv0_n24_N8S2766C15D0Ev),
};
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C11D1Ev();
extern void _ZN8S2766C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C11__8S2766C18[] = {
  0,
  ABISELECT(96,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D0Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C14__8S2766C18[] = {
  -72,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C14[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C78S2766C14__A1__8S2766C18[] = {
  ABISELECT(-120,-116),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C7[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__8S2766C14__8S2766C18[] = {
  ABISELECT(-120,-116),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S2766C14[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
static  VTT_ENTRY vtt_S2766C18[] = {
  {&(_ZTV8S2766C18[12]),  12,29},
  {&(_ZTV8S2766C18[19]),  19,29},
  {&(_ZTV8S2766C18[12]),  12,29},
  {&(_ZTV8S2766C18[12]),  12,29},
  {&(_ZTV8S2766C18[12]),  12,29},
  {&(_ZTV8S2766C18[24]),  24,29},
  {&(_ZTV8S2766C18[28]),  28,29},
  {&(_tg__ZTV7S2766C7__8S2766C18[3]),  3,4},
  {&(_tg__ZTV8S2766C15__8S2766C18[8]),  8,11},
  {&(_tg__ZTV8S2766C15__8S2766C18[8]),  8,11},
  {&(_tg__ZTV8S2766C15__8S2766C18[8]),  8,11},
  {&(_tg__ZTV8S2766C11__8S2766C18[5]),  5,8},
  {&(_tg__ZTV8S2766C11__8S2766C18[5]),  5,8},
  {&(_tg__ZTV8S2766C14__8S2766C18[3]),  3,4},
  {&(_tg__ZTV7S2766C78S2766C14__A1__8S2766C18[3]),  3,4},
  {&(_tg__ZTV7S2766C7__8S2766C14__8S2766C18[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S2766C18[];
extern  VTBL_ENTRY _ZTV8S2766C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C18[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C15D0Ev,_ZTv0_n24_N8S2766C15D0Ev), // 
  (VTBL_ENTRY)_ZN8S2766C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C15D1Ev,_ZTv0_n24_N8S2766C15D1Ev), // 
  (VTBL_ENTRY)_ZN8S2766C15D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2766C18 = {  "S2766C18", // class name
  bases_S2766C18, 19,
  &(vtc_S2766C18[0]), // expected_vtbl_contents
  &(vtt_S2766C18[0]), // expected_vtt_contents
  ABISELECT(304,208), // object size
  NSPAIRA(_ZTI8S2766C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S2766C18),29, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S2766C18),16, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2766C1  : S2766C2 , virtual S2766C5 , S2766C15 , S2766C16 , S2766C18 {
  virtual  ~S2766C1(); // _ZN7S2766C1D2Ev
  S2766C1(); // tgen
};
//SIG(1 S2766C1) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} VBC5{ VBC6{ VBC7{ BC4 VBC3 BC8{ m} Fp[10]}} BC4 VBC9{ m FL[4]} VBC10{ VBC4 VBC11{ VBC3 VBC4 BC8 vd} VBC9 VBC12{ VBC8 VBC11 v2} VBC13{ VBC4 FC7[9]} vd} BC14{ BC2 BC7}} BC15{ VBC9 VBC11 vd} BC16{ VBC8 BC13 BC11 BC17{ BC11 vd}} BC18{ VBC7 VBC15 VBC14 BC19{ m} VBC20{ BC21{ m}} vd} vd}


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

static void Test_S2766C1()
{
  extern Class_Descriptor cd_S2766C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(358,472)];
    init_test(&cd_S2766C1, buf);
    S2766C1 *dp, &lv = *(dp=new (buf) S2766C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2856,1884), "sizeof(S2766C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2766C1)");
    /*is_ambiguous_... S2766C1::S2766C2 */ AMB_check_base_class_offset(lv, (S20997C6*)(S2766C2*), ABISELECT(8,4), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C2 */ AMB_check_base_class_offset(lv, (S2766C4*)(S2766C2*), 0, "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C2 */ AMB_check_base_class_offset(lv, (S2766C2*), 0, "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C7 */ AMB_check_base_class_offset(lv, (S2766C4*)(S2766C7*), ABISELECT(1392,916), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C7 */ AMB_check_base_class_offset(lv, (S20997C6*)(S2766C7*), ABISELECT(1480,960), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S2766C11*), ABISELECT(1480,960), "S2766C1");
    check_base_class_offset(lv, (S20997C6*)(S2766C7*)(S2766C14*)(S2766C5*), ABISELECT(1480,960), "S2766C1");
    /*is_ambiguous_... S2766C16::S2766C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S2766C11*)(S2766C16*), ABISELECT(1480,960), "S2766C1");
    check_base_class_offset(lv, (S20997C6*)(S2766C11*)(S2766C17*)(S2766C16*), ABISELECT(1480,960), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C14 */ AMB_check_base_class_offset(lv, (S20997C6*)(S2766C7*)(S2766C14*), ABISELECT(1480,960), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C7 */ AMB_check_base_class_offset(lv, (S4227C37*)(S2766C7*), ABISELECT(1392,916), "S2766C1");
    check_base_class_offset(lv, (S2766C7*)(S2766C6*), ABISELECT(1392,916), "S2766C1");
    /*is_ambiguous_... S2766C18::S2766C7 */ AMB_check_base_class_offset(lv, (S2766C7*)(S2766C18*), ABISELECT(1392,916), "S2766C1");
    check_base_class_offset(lv, (S2766C6*)(S2766C5*), ABISELECT(1384,912), "S2766C1");
    /*is_ambiguous_... S2766C5::S2766C4 */ AMB_check_base_class_offset(lv, (S2766C4*)(S2766C5*), ABISELECT(1240,820), "S2766C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S2766C5*), ABISELECT(1520,1000), "S2766C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S2766C10*), ABISELECT(1520,1000), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C15 */ AMB_check_base_class_offset(lv, (S10258C6_nt*)(S2766C15*), ABISELECT(1520,1000), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C15 */ AMB_check_base_class_offset(lv, (S10258C6_nt*)(S2766C15*), ABISELECT(1520,1000), "S2766C1");
    check_base_class_offset(lv, (S2766C4*)(S2766C10*), ABISELECT(1552,1032), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C11 */ AMB_check_base_class_offset(lv, (S2766C4*)(S2766C11*), ABISELECT(1552,1032), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C13 */ AMB_check_base_class_offset(lv, (S2766C4*)(S2766C13*), ABISELECT(1552,1032), "S2766C1");
    check_base_class_offset(lv, (S2766C4*)(S2766C13*)(S2766C16*), ABISELECT(1552,1032), "S2766C1");
    /*is_ambiguous_... S2766C16::S2766C11 */ AMB_check_base_class_offset(lv, (S2766C4*)(S2766C11*)(S2766C16*), ABISELECT(1552,1032), "S2766C1");
    check_base_class_offset(lv, (S2766C4*)(S2766C11*)(S2766C17*)(S2766C16*), ABISELECT(1552,1032), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S2766C11*), ABISELECT(1552,1032), "S2766C1");
    check_base_class_offset(lv, (S2766C11*)(S2766C10*), ABISELECT(1552,1032), "S2766C1");
    check_base_class_offset(lv, (S2766C11*)(S2766C12*), ABISELECT(1552,1032), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C15 */ AMB_check_base_class_offset(lv, (S2766C11*)(S2766C15*), ABISELECT(1552,1032), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C15 */ AMB_check_base_class_offset(lv, (S2766C11*)(S2766C15*), ABISELECT(1552,1032), "S2766C1");
    /*is_ambiguous_... S2766C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S2766C12*), 0, "S2766C1");
    /*is_ambiguous_... S2766C16::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S2766C16*), 0, "S2766C1");
    check_base_class_offset(lv, (S2766C12*)(S2766C10*), ABISELECT(1552,1032), "S2766C1");
    check_base_class_offset(lv, (S2766C13*)(S2766C10*), ABISELECT(1560,1036), "S2766C1");
    check_base_class_offset(lv, (S2766C10*)(S2766C5*), ABISELECT(1552,1032), "S2766C1");
    check_base_class_offset(lv, (S20997C6*)(S2766C2*)(S2766C14*)(S2766C5*), ABISELECT(1256,828), "S2766C1");
    check_base_class_offset(lv, (S2766C4*)(S2766C2*)(S2766C14*)(S2766C5*), ABISELECT(1248,824), "S2766C1");
    check_base_class_offset(lv, (S2766C2*)(S2766C14*)(S2766C5*), ABISELECT(1248,824), "S2766C1");
    check_base_class_offset(lv, (S2766C4*)(S2766C7*)(S2766C14*)(S2766C5*), ABISELECT(1296,868), "S2766C1");
    check_base_class_offset(lv, (S4227C37*)(S2766C7*)(S2766C14*)(S2766C5*), ABISELECT(1296,868), "S2766C1");
    check_base_class_offset(lv, (S2766C7*)(S2766C14*)(S2766C5*), ABISELECT(1296,868), "S2766C1");
    check_base_class_offset(lv, (S2766C14*)(S2766C5*), ABISELECT(1248,824), "S2766C1");
    check_base_class_offset(lv, (S2766C5*), ABISELECT(1240,820), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C15 */ AMB_check_base_class_offset(lv, (S2766C15*), ABISELECT(48,44), "S2766C1");
    check_base_class_offset(lv, (S2766C13*)(S2766C16*), ABISELECT(56,48), "S2766C1");
    /*is_ambiguous_... S2766C16::S2766C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S2766C11*)(S2766C16*), ABISELECT(1216,808), "S2766C1");
    /*is_ambiguous_... S2766C16::S2766C11 */ AMB_check_base_class_offset(lv, (S2766C11*)(S2766C16*), ABISELECT(1216,808), "S2766C1");
    check_base_class_offset(lv, (S4227C37*)(S2766C11*)(S2766C17*)(S2766C16*), ABISELECT(1224,812), "S2766C1");
    check_base_class_offset(lv, (S2766C11*)(S2766C17*)(S2766C16*), ABISELECT(1224,812), "S2766C1");
    check_base_class_offset(lv, (S2766C17*)(S2766C16*), ABISELECT(1224,812), "S2766C1");
    check_base_class_offset(lv, (S2766C16*), ABISELECT(56,48), "S2766C1");
    check_base_class_offset(lv, (S2766C15*)(S2766C18*), ABISELECT(1232,816), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C14 */ AMB_check_base_class_offset(lv, (S20997C6*)(S2766C2*)(S2766C14*), ABISELECT(2728,1800), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C14 */ AMB_check_base_class_offset(lv, (S2766C4*)(S2766C2*)(S2766C14*), ABISELECT(2720,1796), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C14 */ AMB_check_base_class_offset(lv, (S2766C2*)(S2766C14*), ABISELECT(2720,1796), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C14 */ AMB_check_base_class_offset(lv, (S2766C4*)(S2766C7*)(S2766C14*), ABISELECT(2768,1840), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C14 */ AMB_check_base_class_offset(lv, (S4227C37*)(S2766C7*)(S2766C14*), ABISELECT(2768,1840), "S2766C1");
    /*is_ambiguous_... S2766C1::S2766C14 */ AMB_check_base_class_offset(lv, (S2766C7*)(S2766C14*), ABISELECT(2768,1840), "S2766C1");
    check_base_class_offset(lv, (S2766C14*)(S2766C18*), ABISELECT(2720,1796), "S2766C1");
    check_base_class_offset(lv, (S4227C27*)(S2766C18*), ABISELECT(1232,816), "S2766C1");
    check_base_class_offset(lv, (S4227C23*)(S2766C20*), 0, "S2766C1");
    check_base_class_offset(lv, (S2766C20*)(S2766C18*), 0, "S2766C1");
    check_base_class_offset(lv, (S2766C18*), ABISELECT(1232,816), "S2766C1");
    test_class_info(&lv, &cd_S2766C1);
    dp->~S2766C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2766C1(Test_S2766C1, "S2766C1", ABISELECT(2856,1884));

#else // __cplusplus

extern void _ZN7S2766C1C1Ev();
extern void _ZN7S2766C1D2Ev();
Name_Map name_map_S2766C1[] = {
  NSPAIR(_ZN7S2766C1C1Ev),
  NSPAIR(_ZN7S2766C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S2766C2;
extern VTBL_ENTRY _ZTI7S2766C2[];
extern  VTBL_ENTRY _ZTV7S2766C2[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C7;
extern VTBL_ENTRY _ZTI7S2766C7[];
extern  VTBL_ENTRY _ZTV7S2766C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C7[];
extern Class_Descriptor cd_S2766C6;
extern VTBL_ENTRY _ZTI7S2766C6[];
extern  VTBL_ENTRY _ZTV7S2766C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C11;
extern VTBL_ENTRY _ZTI8S2766C11[];
extern  VTBL_ENTRY _ZTV8S2766C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C12;
extern VTBL_ENTRY _ZTI8S2766C12[];
extern  VTBL_ENTRY _ZTV8S2766C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C12[];
extern Class_Descriptor cd_S2766C13;
extern VTBL_ENTRY _ZTI8S2766C13[];
extern  VTBL_ENTRY _ZTV8S2766C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C13[];
extern Class_Descriptor cd_S2766C10;
extern VTBL_ENTRY _ZTI8S2766C10[];
extern  VTBL_ENTRY _ZTV8S2766C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S2766C2;
extern VTBL_ENTRY _ZTI7S2766C2[];
extern  VTBL_ENTRY _ZTV7S2766C2[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C7;
extern VTBL_ENTRY _ZTI7S2766C7[];
extern  VTBL_ENTRY _ZTV7S2766C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C7[];
extern Class_Descriptor cd_S2766C14;
extern VTBL_ENTRY _ZTI8S2766C14[];
extern  VTBL_ENTRY _ZTV8S2766C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C14[];
extern Class_Descriptor cd_S2766C5;
extern VTBL_ENTRY _ZTI7S2766C5[];
extern  VTBL_ENTRY _ZTV7S2766C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C5[];
extern Class_Descriptor cd_S2766C15;
extern VTBL_ENTRY _ZTI8S2766C15[];
extern  VTBL_ENTRY _ZTV8S2766C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C15[];
extern Class_Descriptor cd_S2766C13;
extern VTBL_ENTRY _ZTI8S2766C13[];
extern  VTBL_ENTRY _ZTV8S2766C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C11;
extern VTBL_ENTRY _ZTI8S2766C11[];
extern  VTBL_ENTRY _ZTV8S2766C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C11;
extern VTBL_ENTRY _ZTI8S2766C11[];
extern  VTBL_ENTRY _ZTV8S2766C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C11[];
extern Class_Descriptor cd_S2766C17;
extern VTBL_ENTRY _ZTI8S2766C17[];
extern  VTBL_ENTRY _ZTV8S2766C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C17[];
extern Class_Descriptor cd_S2766C16;
extern VTBL_ENTRY _ZTI8S2766C16[];
extern  VTBL_ENTRY _ZTV8S2766C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C16[];
extern Class_Descriptor cd_S2766C15;
extern VTBL_ENTRY _ZTI8S2766C15[];
extern  VTBL_ENTRY _ZTV8S2766C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C15[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S2766C2;
extern VTBL_ENTRY _ZTI7S2766C2[];
extern  VTBL_ENTRY _ZTV7S2766C2[];
extern Class_Descriptor cd_S2766C4;
extern VTBL_ENTRY _ZTI7S2766C4[];
extern  VTBL_ENTRY _ZTV7S2766C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S2766C7;
extern VTBL_ENTRY _ZTI7S2766C7[];
extern  VTBL_ENTRY _ZTV7S2766C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C7[];
extern Class_Descriptor cd_S2766C14;
extern VTBL_ENTRY _ZTI8S2766C14[];
extern  VTBL_ENTRY _ZTV8S2766C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C14[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S4227C23;
extern VTBL_ENTRY _ZTI8S4227C23[];
extern Class_Descriptor cd_S2766C20;
extern VTBL_ENTRY _ZTI8S2766C20[];
extern Class_Descriptor cd_S2766C18;
extern VTBL_ENTRY _ZTI8S2766C18[];
extern  VTBL_ENTRY _ZTV8S2766C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S2766C18[];
static Base_Class bases_S2766C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2766C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    2, //immediately_derived
  0, 0},
  {&cd_S2766C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2766C4,    ABISELECT(1392,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20997C6,    ABISELECT(1480,960), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S4227C37,    ABISELECT(1392,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2766C7,    ABISELECT(1392,916), //bcp->offset
    99, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S2766C6,    ABISELECT(1384,912), //bcp->offset
    95, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S2766C4,    ABISELECT(1240,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S10258C6_nt,    ABISELECT(1520,1000), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C4,    ABISELECT(1552,1032), //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
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1552,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C11,    ABISELECT(1552,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S2766C12,    ABISELECT(1552,1032), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2766C13,    ABISELECT(1560,1036), //bcp->offset
    120, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S2766C10,    ABISELECT(1552,1032), //bcp->offset
    104, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1256,828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S2766C4,    ABISELECT(1248,824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S2766C2,    ABISELECT(1248,824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S2766C4,    ABISELECT(1296,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S2766C7,    ABISELECT(1296,868), //bcp->offset
    91, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S2766C14,    ABISELECT(1248,824), //bcp->offset
    87, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S2766C5,    ABISELECT(1240,820), //bcp->offset
    70, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S2766C15,    ABISELECT(48,44), //bcp->offset
    19, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2766C13,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1216,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S2766C11,    ABISELECT(1216,808), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1224,812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C11,    ABISELECT(1224,812), //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
    27, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S2766C17,    ABISELECT(1224,812), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S2766C16,    ABISELECT(56,48), //bcp->offset
    30, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2766C15,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(2728,1800), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C4,    ABISELECT(2720,1796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S2766C2,    ABISELECT(2720,1796), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S2766C4,    ABISELECT(2768,1840), //bcp->offset
    -1, //bcp->virtual_function_table_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_S4227C37,    ABISELECT(2768,1840), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C7,    ABISELECT(2768,1840), //bcp->offset
    130, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S2766C14,    ABISELECT(2720,1796), //bcp->offset
    125, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    44, //immediately_derived
  0, 1},
  {&cd_S4227C27,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C23,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2766C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S2766C18,    ABISELECT(1232,816), //bcp->offset
    55, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2766C1[];
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C1D1Ev();
extern void _ZN7S2766C1D0Ev();
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S2766C1D1Ev,_ZTv0_n24_N7S2766C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S2766C1D1Ev,_ZThn44_N7S2766C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2766C1D0Ev,_ZTv0_n24_N7S2766C1D0Ev)();
extern void ABISELECT(_ZThn48_N7S2766C1D0Ev,_ZThn44_N7S2766C1D0Ev)() __attribute__((weak));
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZThn56_N7S2766C1D1Ev,_ZThn48_N7S2766C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S2766C1D0Ev,_ZThn48_N7S2766C1D0Ev)();
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZThn1216_N7S2766C1D1Ev,_ZThn808_N7S2766C1D1Ev)();
extern void ABISELECT(_ZThn1216_N7S2766C1D0Ev,_ZThn808_N7S2766C1D0Ev)();
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZThn1224_N7S2766C1D1Ev,_ZThn812_N7S2766C1D1Ev)();
extern void ABISELECT(_ZThn1224_N7S2766C1D0Ev,_ZThn812_N7S2766C1D0Ev)();
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S2766C1D1Ev,_ZTv0_n24_N7S2766C1D1Ev)();
extern void ABISELECT(_ZThn1232_N7S2766C1D1Ev,_ZThn816_N7S2766C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2766C1D0Ev,_ZTv0_n24_N7S2766C1D0Ev)();
extern void ABISELECT(_ZThn1232_N7S2766C1D0Ev,_ZThn816_N7S2766C1D0Ev)() __attribute__((weak));
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n112_N7S2766C1D1Ev,_ZTv0_n56_N7S2766C1D1Ev)();
extern void ABISELECT(_ZThn1240_N7S2766C1D1Ev,_ZThn820_N7S2766C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N7S2766C1D0Ev,_ZTv0_n56_N7S2766C1D0Ev)();
extern void ABISELECT(_ZThn1240_N7S2766C1D0Ev,_ZThn820_N7S2766C1D0Ev)() __attribute__((weak));
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S2766C1D1Ev,_ZTv0_n24_N7S2766C1D1Ev)();
extern void ABISELECT(_ZThn1552_N7S2766C1D1Ev,_ZThn1032_N7S2766C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2766C1D0Ev,_ZTv0_n24_N7S2766C1D0Ev)();
extern void ABISELECT(_ZThn1552_N7S2766C1D0Ev,_ZThn1032_N7S2766C1D0Ev)() __attribute__((weak));
extern void _ZN8S2766C122v2Ev();
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY vtc_S2766C1[] = {
  0,
  ABISELECT(2720,1796),
  ABISELECT(1232,816),
  ABISELECT(1560,1036),
  0,
  ABISELECT(1552,1032),
  ABISELECT(1552,1032),
  ABISELECT(1552,1032),
  ABISELECT(1552,1032),
  ABISELECT(1520,1000),
  ABISELECT(1480,960),
  ABISELECT(1392,916),
  ABISELECT(1384,912),
  ABISELECT(1240,820),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN7S2766C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2766C1D0Ev,
  ABISELECT(1504,988),
  ABISELECT(1472,956),
  ABISELECT(-48,-44),
  ABISELECT(1504,988),
  ABISELECT(1432,916),
  ABISELECT(1504,988),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2766C1D1Ev,_ZTv0_n24_N7S2766C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2766C1D0Ev,_ZTv0_n24_N7S2766C1D0Ev),
  ABISELECT(1424,912),
  ABISELECT(-56,-48),
  ABISELECT(1496,984),
  ABISELECT(1496,984),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2766C1D1Ev,_ZThn48_N7S2766C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S2766C1D0Ev,_ZThn48_N7S2766C1D0Ev),
  ABISELECT(336,224),
  ABISELECT(264,152),
  ABISELECT(336,224),
  ABISELECT(-1216,-808),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1216_N7S2766C1D1Ev,_ZThn808_N7S2766C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1216_N7S2766C1D0Ev,_ZThn808_N7S2766C1D0Ev),
  ABISELECT(328,220),
  ABISELECT(256,148),
  ABISELECT(328,220),
  ABISELECT(-1224,-812),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1224_N7S2766C1D1Ev,_ZThn812_N7S2766C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1224_N7S2766C1D0Ev,_ZThn812_N7S2766C1D0Ev),
  ABISELECT(-1232,-816),
  ABISELECT(1488,980),
  0,
  ABISELECT(160,100),
  ABISELECT(320,216),
  ABISELECT(288,184),
  ABISELECT(-1232,-816),
  ABISELECT(320,216),
  ABISELECT(248,144),
  ABISELECT(320,216),
  ABISELECT(-1232,-816),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2766C1D1Ev,_ZTv0_n24_N7S2766C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2766C1D0Ev,_ZTv0_n24_N7S2766C1D0Ev),
  ABISELECT(-1240,-820),
  0,
  ABISELECT(320,216),
  ABISELECT(-1240,-820),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(280,180),
  ABISELECT(240,140),
  ABISELECT(152,96),
  ABISELECT(144,92),
  ABISELECT(-1240,-820),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S2766C1D1Ev,_ZTv0_n56_N7S2766C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N7S2766C1D0Ev,_ZTv0_n56_N7S2766C1D0Ev),
  ABISELECT(232,136),
  ABISELECT(-1248,-824),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  ABISELECT(184,92),
  ABISELECT(-1296,-868),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  ABISELECT(96,48),
  ABISELECT(8,4),
  ABISELECT(-1384,-912),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-1392,-916),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-1552,-1032),
  ABISELECT(-1552,-1032),
  0,
  -72,
  0,
  ABISELECT(-1552,-1032),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2766C1D1Ev,_ZTv0_n24_N7S2766C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2766C1D0Ev,_ZTv0_n24_N7S2766C1D0Ev),
  (VTBL_ENTRY)&_ZN8S2766C122v2Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-1560,-1036),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  0,
  ABISELECT(-1240,-836),
  ABISELECT(-2720,-1796),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  ABISELECT(-1288,-880),
  ABISELECT(-2768,-1840),
  (VTBL_ENTRY)&(_ZTI7S2766C1[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S2766C1[];
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S2766C15D1Ev,_ZTv0_n24_N8S2766C15D1Ev)();
extern void _ZN8S2766C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2766C15D0Ev,_ZTv0_n24_N8S2766C15D0Ev)();
extern void _ZN8S2766C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2766C15__A__7S2766C1[] = {
  ABISELECT(1504,988),
  ABISELECT(1472,956),
  0,
  ABISELECT(1504,988),
  ABISELECT(1432,916),
  ABISELECT(1504,988),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C15[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C15D1Ev,_ZTv0_n24_N8S2766C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C15D0Ev,_ZTv0_n24_N8S2766C15D0Ev),
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S2766C15D1Ev,_ZTv0_n24_N8S2766C15D1Ev)();
extern void ABISELECT(_ZThn1504_N8S2766C15D1Ev,_ZThn988_N8S2766C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2766C15D0Ev,_ZTv0_n24_N8S2766C15D0Ev)();
extern void ABISELECT(_ZThn1504_N8S2766C15D0Ev,_ZThn988_N8S2766C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2766C11__8S2766C15__A__7S2766C1[] = {
  ABISELECT(-1504,-988),
  0,
  -72,
  0,
  ABISELECT(-1504,-988),
  (VTBL_ENTRY)&(_ZTI8S2766C15[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C15D1Ev,_ZTv0_n24_N8S2766C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C15D0Ev,_ZTv0_n24_N8S2766C15D0Ev),
};
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C16D1Ev();
extern void _ZN8S2766C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C16__7S2766C1[] = {
  ABISELECT(1424,912),
  ABISELECT(-56,-48),
  ABISELECT(1496,984),
  ABISELECT(1496,984),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C16[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C16D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C16D0Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C138S2766C16__A1__7S2766C1[] = {
  ABISELECT(1496,984),
  ABISELECT(1496,984),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C13[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C4__8S2766C138S2766C16__A1__7S2766C1[] = {
  0,
  ABISELECT(-1496,-984),
  (VTBL_ENTRY)&(_ZTI8S2766C13[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C11D1Ev();
extern void _ZN8S2766C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C118S2766C16__A1__7S2766C1[] = {
  ABISELECT(336,224),
  ABISELECT(264,152),
  ABISELECT(336,224),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D0Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C4__8S2766C118S2766C16__A1__7S2766C1[] = {
  0,
  ABISELECT(-336,-224),
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C17D1Ev();
extern void _ZN8S2766C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C178S2766C16__7S2766C1[] = {
  ABISELECT(328,220),
  ABISELECT(256,148),
  ABISELECT(328,220),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C17[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C17D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C17D0Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C11D1Ev();
extern void _ZN8S2766C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C118S2766C178S2766C16__A2__7S2766C1[] = {
  ABISELECT(328,220),
  ABISELECT(256,148),
  ABISELECT(328,220),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D0Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C4__8S2766C118S2766C178S2766C16__A2__7S2766C1[] = {
  0,
  ABISELECT(-328,-220),
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C4__8S2766C178S2766C16__7S2766C1[] = {
  0,
  ABISELECT(-328,-220),
  (VTBL_ENTRY)&(_ZTI8S2766C17[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C4__8S2766C16__7S2766C1[] = {
  0,
  ABISELECT(-1496,-984),
  (VTBL_ENTRY)&(_ZTI8S2766C16[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZThn1160_N8S2766C16D1Ev,_ZThn760_N8S2766C16D1Ev)();
extern void ABISELECT(_ZThn1160_N8S2766C16D0Ev,_ZThn760_N8S2766C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2766C11__8S2766C16__7S2766C1[] = {
  ABISELECT(336,224),
  ABISELECT(264,152),
  ABISELECT(336,224),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S2766C16[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S2766C16D1Ev,_ZThn760_N8S2766C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S2766C16D0Ev,_ZThn760_N8S2766C16D0Ev),
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZThn1168_N8S2766C16D1Ev,_ZThn764_N8S2766C16D1Ev)();
extern void ABISELECT(_ZThn1168_N8S2766C16D0Ev,_ZThn764_N8S2766C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S2766C17__8S2766C16__7S2766C1[] = {
  ABISELECT(328,220),
  ABISELECT(256,148),
  ABISELECT(328,220),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S2766C16[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S2766C16D1Ev,_ZThn764_N8S2766C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S2766C16D0Ev,_ZThn764_N8S2766C16D0Ev),
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S2766C18D1Ev,_ZTv0_n24_N8S2766C18D1Ev)();
extern void _ZN8S2766C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2766C18D0Ev,_ZTv0_n24_N8S2766C18D0Ev)();
extern void _ZN8S2766C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2766C18__7S2766C1[] = {
  ABISELECT(-1232,-816),
  ABISELECT(1488,980),
  0,
  ABISELECT(160,100),
  ABISELECT(320,216),
  ABISELECT(288,184),
  0,
  ABISELECT(320,216),
  ABISELECT(248,144),
  ABISELECT(320,216),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C18[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C18D1Ev,_ZTv0_n24_N8S2766C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C18D0Ev,_ZTv0_n24_N8S2766C18D0Ev),
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__8S2766C18__7S2766C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S2766C18[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S2766C18D1Ev,_ZTv0_n24_N8S2766C18D1Ev)();
extern void ABISELECT(_ZThn320_N8S2766C18D1Ev,_ZThn216_N8S2766C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2766C18D0Ev,_ZTv0_n24_N8S2766C18D0Ev)();
extern void ABISELECT(_ZThn320_N8S2766C18D0Ev,_ZThn216_N8S2766C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2766C11__8S2766C18__7S2766C1[] = {
  ABISELECT(-320,-216),
  0,
  -72,
  0,
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI8S2766C18[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C18D1Ev,_ZTv0_n24_N8S2766C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C18D0Ev,_ZTv0_n24_N8S2766C18D0Ev),
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C14__8S2766C18__7S2766C1[] = {
  0,
  ABISELECT(-1240,-836),
  ABISELECT(-1488,-980),
  (VTBL_ENTRY)&(_ZTI8S2766C18[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C78S2766C14__A1__8S2766C18__7S2766C1[] = {
  ABISELECT(-1288,-880),
  ABISELECT(-1536,-1024),
  (VTBL_ENTRY)&(_ZTI8S2766C18[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void _ZN7S2766C5D1Ev();
extern void _ZN7S2766C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C5__7S2766C1[] = {
  ABISELECT(320,216),
  ABISELECT(-1240,-820),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(280,180),
  ABISELECT(240,140),
  ABISELECT(152,96),
  ABISELECT(144,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN7S2766C5D1Ev,
  (VTBL_ENTRY)&_ZN7S2766C5D0Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C147S2766C5__7S2766C1[] = {
  ABISELECT(232,136),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C14[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C78S2766C147S2766C5__A1__7S2766C1[] = {
  ABISELECT(184,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C7[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__8S2766C147S2766C5__7S2766C1[] = {
  ABISELECT(184,92),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S2766C14[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
static  VTBL_ENTRY _tg__ZTV7S2766C6__7S2766C5__7S2766C1[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__7S2766C5__7S2766C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S2766C5D1Ev,_ZTv0_n24_N7S2766C5D1Ev)();
extern void ABISELECT(_ZThn312_N7S2766C5D1Ev,_ZThn212_N7S2766C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S2766C5D0Ev,_ZTv0_n24_N7S2766C5D0Ev)();
extern void ABISELECT(_ZThn312_N7S2766C5D0Ev,_ZThn212_N7S2766C5D0Ev)() __attribute__((weak));
extern void _ZN8S2766C122v2Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C10__7S2766C5__7S2766C1[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-1552,-1032),
  ABISELECT(-312,-212),
  0,
  -72,
  0,
  ABISELECT(-312,-212),
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2766C5D1Ev,_ZTv0_n24_N7S2766C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S2766C5D0Ev,_ZTv0_n24_N7S2766C5D0Ev),
  (VTBL_ENTRY)&_ZN8S2766C122v2Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C13__7S2766C5__7S2766C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C14__7S2766C5__7S2766C1[] = {
  ABISELECT(232,136),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C78S2766C14__A1__7S2766C5__7S2766C1[] = {
  ABISELECT(184,92),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S2766C5[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
static  VTBL_ENTRY _tg__ZTV7S2766C6__7S2766C1[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C6[0]),
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__7S2766C6__7S2766C1[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2766C6[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__7S2766C1[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C7[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S2766C10D1Ev,_ZTv0_n24_N8S2766C10D1Ev)();
extern void _ZN8S2766C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2766C10D0Ev,_ZTv0_n24_N8S2766C10D0Ev)();
extern void _ZN8S2766C10D0Ev() __attribute__((weak));
extern void _ZN8S2766C122v2Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C10__7S2766C1[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-1552,-1032),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C10[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C10D1Ev,_ZTv0_n24_N8S2766C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C10D0Ev,_ZTv0_n24_N8S2766C10D0Ev),
  (VTBL_ENTRY)&_ZN8S2766C122v2Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C13__8S2766C10__7S2766C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S2766C10[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void _ZN8S2766C11D1Ev();
extern void _ZN8S2766C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C11__7S2766C1[] = {
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C11[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D1Ev,
  (VTBL_ENTRY)&_ZN8S2766C11D0Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S2766C12D1Ev,_ZTv0_n24_N8S2766C12D1Ev)();
extern void _ZN8S2766C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2766C12D0Ev,_ZTv0_n24_N8S2766C12D0Ev)();
extern void _ZN8S2766C12D0Ev() __attribute__((weak));
extern void _ZN8S2766C122v2Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C12__7S2766C1[] = {
  0,
  ABISELECT(-1552,-1032),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C12[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C12D1Ev,_ZTv0_n24_N8S2766C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C12D0Ev,_ZTv0_n24_N8S2766C12D0Ev),
  (VTBL_ENTRY)&_ZN8S2766C122v2Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C13__7S2766C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C13[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C4__8S2766C13__7S2766C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S2766C13[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S2766C15D1Ev,_ZTv0_n24_N8S2766C15D1Ev)();
extern void _ZN8S2766C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2766C15D0Ev,_ZTv0_n24_N8S2766C15D0Ev)();
extern void _ZN8S2766C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2766C15__A1__7S2766C1[] = {
  ABISELECT(320,216),
  ABISELECT(288,184),
  0,
  ABISELECT(320,216),
  ABISELECT(248,144),
  ABISELECT(320,216),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C15[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C15D1Ev,_ZTv0_n24_N8S2766C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C15D0Ev,_ZTv0_n24_N8S2766C15D0Ev),
};
extern void _ZN7S2766C42v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S2766C15D1Ev,_ZTv0_n24_N8S2766C15D1Ev)();
extern void ABISELECT(_ZThn320_N8S2766C15D1Ev,_ZThn216_N8S2766C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S2766C15D0Ev,_ZTv0_n24_N8S2766C15D0Ev)();
extern void ABISELECT(_ZThn320_N8S2766C15D0Ev,_ZThn216_N8S2766C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S2766C11__8S2766C15__A1__7S2766C1[] = {
  ABISELECT(-320,-216),
  0,
  -72,
  0,
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI8S2766C15[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C15D1Ev,_ZTv0_n24_N8S2766C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S2766C15D0Ev,_ZTv0_n24_N8S2766C15D0Ev),
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S2766C14__A1__7S2766C1[] = {
  ABISELECT(-1240,-836),
  0,
  (VTBL_ENTRY)&(_ZTI8S2766C14[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C78S2766C14__A2__7S2766C1[] = {
  ABISELECT(-1288,-880),
  0,
  (VTBL_ENTRY)&(_ZTI7S2766C7[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
extern void _ZN7S2766C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S2766C7__8S2766C14__A1__7S2766C1[] = {
  ABISELECT(-1288,-880),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S2766C14[0]),
  (VTBL_ENTRY)&_ZN7S2766C42v1Ev,
};
static  VTT_ENTRY vtt_S2766C1[] = {
  {&(_ZTV7S2766C1[16]),  16,134},
  {&(_tg__ZTV8S2766C15__A__7S2766C1[8]),  8,11},
  {&(_tg__ZTV8S2766C11__8S2766C15__A__7S2766C1[6]),  6,9},
  {&(_tg__ZTV8S2766C11__8S2766C15__A__7S2766C1[6]),  6,9},
  {&(_tg__ZTV8S2766C16__7S2766C1[6]),  6,9},
  {&(_tg__ZTV8S2766C138S2766C16__A1__7S2766C1[4]),  4,5},
  {&(_tg__ZTV7S2766C4__8S2766C138S2766C16__A1__7S2766C1[3]),  3,4},
  {&(_tg__ZTV8S2766C118S2766C16__A1__7S2766C1[5]),  5,8},
  {&(_tg__ZTV7S2766C4__8S2766C118S2766C16__A1__7S2766C1[3]),  3,4},
  {&(_tg__ZTV8S2766C178S2766C16__7S2766C1[5]),  5,8},
  {&(_tg__ZTV8S2766C118S2766C178S2766C16__A2__7S2766C1[5]),  5,8},
  {&(_tg__ZTV7S2766C4__8S2766C118S2766C178S2766C16__A2__7S2766C1[3]),  3,4},
  {&(_tg__ZTV7S2766C4__8S2766C178S2766C16__7S2766C1[3]),  3,4},
  {&(_tg__ZTV7S2766C4__8S2766C16__7S2766C1[3]),  3,4},
  {&(_tg__ZTV8S2766C11__8S2766C16__7S2766C1[5]),  5,8},
  {&(_tg__ZTV8S2766C17__8S2766C16__7S2766C1[5]),  5,8},
  {&(_tg__ZTV8S2766C18__7S2766C1[12]),  12,15},
  {&(_tg__ZTV7S2766C7__8S2766C18__7S2766C1[4]),  4,5},
  {&(_tg__ZTV8S2766C18__7S2766C1[12]),  12,15},
  {&(_tg__ZTV8S2766C11__8S2766C18__7S2766C1[6]),  6,9},
  {&(_tg__ZTV8S2766C11__8S2766C18__7S2766C1[6]),  6,9},
  {&(_tg__ZTV8S2766C14__8S2766C18__7S2766C1[4]),  4,5},
  {&(_tg__ZTV7S2766C78S2766C14__A1__8S2766C18__7S2766C1[3]),  3,4},
  {&(_ZTV7S2766C1[84]),  84,134},
  {&(_ZTV7S2766C1[99]),  99,134},
  {&(_ZTV7S2766C1[103]),  103,134},
  {&(_ZTV7S2766C1[116]),  116,134},
  {&(_ZTV7S2766C1[116]),  116,134},
  {&(_ZTV7S2766C1[116]),  116,134},
  {&(_ZTV7S2766C1[116]),  116,134},
  {&(_ZTV7S2766C1[124]),  124,134},
  {&(_ZTV7S2766C1[90]),  90,134},
  {&(_ZTV7S2766C1[94]),  94,134},
  {&(_ZTV7S2766C1[27]),  27,134},
  {&(_ZTV7S2766C1[36]),  36,134},
  {&(_ZTV7S2766C1[44]),  44,134},
  {&(_ZTV7S2766C1[52]),  52,134},
  {&(_ZTV7S2766C1[67]),  67,134},
  {&(_ZTV7S2766C1[67]),  67,134},
  {&(_ZTV7S2766C1[129]),  129,134},
  {&(_ZTV7S2766C1[133]),  133,134},
  {&(_tg__ZTV7S2766C5__7S2766C1[12]),  12,15},
  {&(_tg__ZTV8S2766C147S2766C5__7S2766C1[3]),  3,4},
  {&(_tg__ZTV7S2766C78S2766C147S2766C5__A1__7S2766C1[3]),  3,4},
  {&(_tg__ZTV7S2766C7__8S2766C147S2766C5__7S2766C1[3]),  3,4},
  {&(_tg__ZTV7S2766C6__7S2766C5__7S2766C1[4]),  4,4},
  {&(_tg__ZTV7S2766C7__7S2766C5__7S2766C1[4]),  4,5},
  {&(_tg__ZTV8S2766C10__7S2766C5__7S2766C1[12]),  12,16},
  {&(_tg__ZTV8S2766C10__7S2766C5__7S2766C1[12]),  12,16},
  {&(_tg__ZTV8S2766C10__7S2766C5__7S2766C1[12]),  12,16},
  {&(_tg__ZTV8S2766C10__7S2766C5__7S2766C1[12]),  12,16},
  {&(_tg__ZTV8S2766C13__7S2766C5__7S2766C1[4]),  4,5},
  {&(_tg__ZTV8S2766C14__7S2766C5__7S2766C1[3]),  3,4},
  {&(_tg__ZTV7S2766C78S2766C14__A1__7S2766C5__7S2766C1[3]),  3,4},
  {&(_tg__ZTV7S2766C6__7S2766C1[4]),  4,4},
  {&(_tg__ZTV7S2766C7__7S2766C6__7S2766C1[4]),  4,5},
  {&(_tg__ZTV7S2766C7__7S2766C1[3]),  3,4},
  {&(_tg__ZTV8S2766C10__7S2766C1[12]),  12,16},
  {&(_tg__ZTV8S2766C10__7S2766C1[12]),  12,16},
  {&(_tg__ZTV8S2766C10__7S2766C1[12]),  12,16},
  {&(_tg__ZTV8S2766C10__7S2766C1[12]),  12,16},
  {&(_tg__ZTV8S2766C13__8S2766C10__7S2766C1[4]),  4,5},
  {&(_tg__ZTV8S2766C11__7S2766C1[5]),  5,8},
  {&(_tg__ZTV8S2766C11__7S2766C1[5]),  5,8},
  {&(_tg__ZTV8S2766C12__7S2766C1[8]),  8,12},
  {&(_tg__ZTV8S2766C12__7S2766C1[8]),  8,12},
  {&(_tg__ZTV8S2766C12__7S2766C1[8]),  8,12},
  {&(_tg__ZTV8S2766C13__7S2766C1[4]),  4,5},
  {&(_tg__ZTV7S2766C4__8S2766C13__7S2766C1[3]),  3,4},
  {&(_tg__ZTV8S2766C15__A1__7S2766C1[8]),  8,11},
  {&(_tg__ZTV8S2766C11__8S2766C15__A1__7S2766C1[6]),  6,9},
  {&(_tg__ZTV8S2766C11__8S2766C15__A1__7S2766C1[6]),  6,9},
  {&(_tg__ZTV8S2766C14__A1__7S2766C1[3]),  3,4},
  {&(_tg__ZTV7S2766C78S2766C14__A2__7S2766C1[3]),  3,4},
  {&(_tg__ZTV7S2766C7__8S2766C14__A1__7S2766C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S2766C1[];
extern  VTBL_ENTRY _ZTV7S2766C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2766C1[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C12D0Ev,_ZTv0_n24_N8S2766C12D0Ev), // 
  (VTBL_ENTRY)_ZN8S2766C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C12D1Ev,_ZTv0_n24_N8S2766C12D1Ev), // 
  (VTBL_ENTRY)_ZN8S2766C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C10D0Ev,_ZTv0_n24_N8S2766C10D0Ev), // 
  (VTBL_ENTRY)_ZN8S2766C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C10D1Ev,_ZTv0_n24_N8S2766C10D1Ev), // 
  (VTBL_ENTRY)_ZN8S2766C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2766C5D0Ev,_ZTv0_n24_N7S2766C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S2766C5D0Ev,_ZThn212_N7S2766C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2766C5D1Ev,_ZTv0_n24_N7S2766C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N7S2766C5D1Ev,_ZThn212_N7S2766C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C18D0Ev,_ZTv0_n24_N8S2766C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S2766C18D0Ev,_ZThn216_N8S2766C18D0Ev),
  (VTBL_ENTRY)_ZN8S2766C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C18D1Ev,_ZTv0_n24_N8S2766C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S2766C18D1Ev,_ZThn216_N8S2766C18D1Ev),
  (VTBL_ENTRY)_ZN8S2766C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C15D0Ev,_ZTv0_n24_N8S2766C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S2766C15D0Ev,_ZThn216_N8S2766C15D0Ev),
  (VTBL_ENTRY)_ZN8S2766C15D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn1504_N8S2766C15D0Ev,_ZThn988_N8S2766C15D0Ev),
  (VTBL_ENTRY)_ZN8S2766C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S2766C15D1Ev,_ZTv0_n24_N8S2766C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S2766C15D1Ev,_ZThn216_N8S2766C15D1Ev),
  (VTBL_ENTRY)_ZN8S2766C15D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn1504_N8S2766C15D1Ev,_ZThn988_N8S2766C15D1Ev),
  (VTBL_ENTRY)_ZN8S2766C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S2766C1D0Ev,_ZTv0_n56_N7S2766C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1240_N7S2766C1D0Ev,_ZThn820_N7S2766C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N7S2766C1D1Ev,_ZTv0_n56_N7S2766C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1240_N7S2766C1D1Ev,_ZThn820_N7S2766C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2766C1D0Ev,_ZTv0_n24_N7S2766C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N7S2766C1D0Ev,_ZThn1032_N7S2766C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N7S2766C1D0Ev,_ZThn816_N7S2766C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S2766C1D0Ev,_ZThn44_N7S2766C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S2766C1D1Ev,_ZTv0_n24_N7S2766C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1552_N7S2766C1D1Ev,_ZThn1032_N7S2766C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N7S2766C1D1Ev,_ZThn816_N7S2766C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S2766C1D1Ev,_ZThn44_N7S2766C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S2766C1 = {  "S2766C1", // class name
  bases_S2766C1, 45,
  &(vtc_S2766C1[0]), // expected_vtbl_contents
  &(vtt_S2766C1[0]), // expected_vtt_contents
  ABISELECT(2856,1884), // object size
  NSPAIRA(_ZTI7S2766C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S2766C1),134, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2766C1),75, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN7S6126C8C1Ev();
extern void _ZN7S6126C8D1Ev();
Name_Map name_map_S6126C8[] = {
  NSPAIR(_ZN7S6126C8C1Ev),
  NSPAIR(_ZN7S6126C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6126C8[];
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY vtc_S6126C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C8[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
Class_Descriptor cd_S6126C8 = {  "S6126C8", // class name
  0,0,//no base classes
  &(vtc_S6126C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6126C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6126C8),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  S6126C7  : virtual S20997C6 , virtual S6126C8 , S4227C37 {
  virtual  ~S6126C7(); // _ZN7S6126C7D2Ev
  S6126C7(); // tgen
};
//SIG(-1 S6126C7) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S6126C7()
{
  extern Class_Descriptor cd_S6126C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S6126C7, buf);
    S6126C7 *dp, &lv = *(dp=new (buf) S6126C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S6126C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6126C7)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S6126C7");
    check_base_class_offset(lv, (S6126C8*), 0, "S6126C7");
    check_base_class_offset(lv, (S4227C37*), 0, "S6126C7");
    test_class_info(&lv, &cd_S6126C7);
    dp->~S6126C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C7(Test_S6126C7, "S6126C7", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S6126C7C1Ev();
extern void _ZN7S6126C7D2Ev();
Name_Map name_map_S6126C7[] = {
  NSPAIR(_ZN7S6126C7C1Ev),
  NSPAIR(_ZN7S6126C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S6126C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6126C8,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6126C7[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY vtc_S6126C7[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern VTBL_ENTRY _ZTV7S6126C7[];
static  VTT_ENTRY vtt_S6126C7[] = {
  {&(_ZTV7S6126C7[5]),  5,8},
  {&(_ZTV7S6126C7[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
Class_Descriptor cd_S6126C7 = {  "S6126C7", // class name
  bases_S6126C7, 3,
  &(vtc_S6126C7[0]), // expected_vtbl_contents
  &(vtt_S6126C7[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S6126C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6126C7),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6126C7),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  S6126C6  : virtual S4227C37 , virtual S6126C7 {
  virtual void  v2(); // _ZN7S6126C62v2Ev
  ~S6126C6(); // tgen
  S6126C6(); // tgen
};
//SIG(-1 S6126C6) C1{ VBC2{ m} VBC3{ VBC4{ m FL[5]} VBC5{ v2} BC2 vd} v1}


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

static void Test_S6126C6()
{
  extern Class_Descriptor cd_S6126C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S6126C6, buf);
    S6126C6 *dp, &lv = *(dp=new (buf) S6126C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S6126C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6126C6)");
    /*is_ambiguous_... S6126C6::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), ABISELECT(8,4), "S6126C6");
    check_base_class_offset(lv, (S20997C6*)(S6126C7*), ABISELECT(8,4), "S6126C6");
    check_base_class_offset(lv, (S6126C8*)(S6126C7*), 0, "S6126C6");
    check_base_class_offset(lv, (S4227C37*)(S6126C7*), 0, "S6126C6");
    check_base_class_offset(lv, (S6126C7*), 0, "S6126C6");
    test_class_info(&lv, &cd_S6126C6);
    dp->~S6126C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C6(Test_S6126C6, "S6126C6", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S6126C6C1Ev();
extern void _ZN7S6126C6D1Ev();
Name_Map name_map_S6126C6[] = {
  NSPAIR(_ZN7S6126C6C1Ev),
  NSPAIR(_ZN7S6126C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
static Base_Class bases_S6126C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6126C8,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6126C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6126C6[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C6D1Ev();
extern void _ZN7S6126C6D0Ev();
extern void _ZN7S6126C62v2Ev();
static  VTBL_ENTRY vtc_S6126C6[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C6[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C6D0Ev,
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
};
extern VTBL_ENTRY _ZTV7S6126C6[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C7__7S6126C6[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
static  VTT_ENTRY vtt_S6126C6[] = {
  {&(_ZTV7S6126C6[8]),  8,12},
  {&(_ZTV7S6126C6[8]),  8,12},
  {&(_ZTV7S6126C6[8]),  8,12},
  {&(_tg__ZTV7S6126C7__7S6126C6[5]),  5,8},
  {&(_tg__ZTV7S6126C7__7S6126C6[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S6126C6[];
extern  VTBL_ENTRY _ZTV7S6126C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C6[];
Class_Descriptor cd_S6126C6 = {  "S6126C6", // class name
  bases_S6126C6, 5,
  &(vtc_S6126C6[0]), // expected_vtbl_contents
  &(vtt_S6126C6[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S6126C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6126C6),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6126C6),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6126C9  : S20997C6 , S6126C8 {
  ~S6126C9(); // tgen
  S6126C9(); // tgen
};
//SIG(-1 S6126C9) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S6126C9()
{
  extern Class_Descriptor cd_S6126C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S6126C9, buf);
    S6126C9 *dp, &lv = *(dp=new (buf) S6126C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S6126C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6126C9)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S6126C9");
    check_base_class_offset(lv, (S6126C8*), 0, "S6126C9");
    test_class_info(&lv, &cd_S6126C9);
    dp->~S6126C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C9(Test_S6126C9, "S6126C9", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S6126C9C1Ev();
extern void _ZN7S6126C9D1Ev();
Name_Map name_map_S6126C9[] = {
  NSPAIR(_ZN7S6126C9C1Ev),
  NSPAIR(_ZN7S6126C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
static Base_Class bases_S6126C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6126C8,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6126C9[];
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY vtc_S6126C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C9[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern VTBL_ENTRY _ZTI7S6126C9[];
extern  VTBL_ENTRY _ZTV7S6126C9[];
Class_Descriptor cd_S6126C9 = {  "S6126C9", // class name
  bases_S6126C9, 2,
  &(vtc_S6126C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S6126C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6126C9),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6126C4  : virtual S20997C6 , S6126C6 , virtual S6126C9 {
  ~S6126C4(); // tgen
  S6126C4(); // tgen
};
//SIG(-1 S6126C4) C1{ VBC2{ m FL[5]} BC3{ VBC4{ m} VBC5{ VBC2 VBC6{ v1} BC4 vd} v2} VBC7{ BC2 BC6}}


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

static void Test_S6126C4()
{
  extern Class_Descriptor cd_S6126C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,23)];
    init_test(&cd_S6126C4, buf);
    S6126C4 *dp, &lv = *(dp=new (buf) S6126C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,88), "sizeof(S6126C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6126C4)");
    /*is_ambiguous_... S6126C4::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S6126C4");
    check_base_class_offset(lv, (S20997C6*)(S6126C7*), ABISELECT(8,4), "S6126C4");
    /*is_ambiguous_... S6126C6::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C6*), ABISELECT(48,44), "S6126C4");
    check_base_class_offset(lv, (S6126C8*)(S6126C7*), 0, "S6126C4");
    check_base_class_offset(lv, (S4227C37*)(S6126C7*), 0, "S6126C4");
    check_base_class_offset(lv, (S6126C7*)(S6126C6*), 0, "S6126C4");
    check_base_class_offset(lv, (S6126C6*), 0, "S6126C4");
    check_base_class_offset(lv, (S20997C6*)(S6126C9*), ABISELECT(56,48), "S6126C4");
    check_base_class_offset(lv, (S6126C8*)(S6126C9*), ABISELECT(48,44), "S6126C4");
    check_base_class_offset(lv, (S6126C9*), ABISELECT(48,44), "S6126C4");
    test_class_info(&lv, &cd_S6126C4);
    dp->~S6126C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C4(Test_S6126C4, "S6126C4", ABISELECT(96,88));

#else // __cplusplus

extern void _ZN7S6126C4C1Ev();
extern void _ZN7S6126C4D1Ev();
Name_Map name_map_S6126C4[] = {
  NSPAIR(_ZN7S6126C4C1Ev),
  NSPAIR(_ZN7S6126C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S6126C6;
extern VTBL_ENTRY _ZTI7S6126C6[];
extern  VTBL_ENTRY _ZTV7S6126C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C9;
extern VTBL_ENTRY _ZTI7S6126C9[];
extern  VTBL_ENTRY _ZTV7S6126C9[];
static Base_Class bases_S6126C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6126C8,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6126C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6126C6,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6126C8,    ABISELECT(48,44), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6126C9,    ABISELECT(48,44), //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6126C4[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C4D1Ev();
extern void _ZN7S6126C4D0Ev();
extern void _ZN7S6126C62v2Ev();
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY vtc_S6126C4[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C4[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C4D0Ev,
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI7S6126C4[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern VTBL_ENTRY _ZTV7S6126C4[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C6D1Ev();
extern void _ZN7S6126C6D0Ev();
extern void _ZN7S6126C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C6__7S6126C4[] = {
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C6[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C6D0Ev,
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C7__7S6126C4[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
static  VTT_ENTRY vtt_S6126C4[] = {
  {&(_ZTV7S6126C4[9]),  9,17},
  {&(_tg__ZTV7S6126C6__7S6126C4[8]),  8,12},
  {&(_tg__ZTV7S6126C6__7S6126C4[8]),  8,12},
  {&(_tg__ZTV7S6126C6__7S6126C4[8]),  8,12},
  {&(_ZTV7S6126C4[9]),  9,17},
  {&(_ZTV7S6126C4[9]),  9,17},
  {&(_ZTV7S6126C4[16]),  16,17},
  {&(_tg__ZTV7S6126C7__7S6126C4[5]),  5,8},
  {&(_tg__ZTV7S6126C7__7S6126C4[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S6126C4[];
extern  VTBL_ENTRY _ZTV7S6126C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C4[];
Class_Descriptor cd_S6126C4 = {  "S6126C4", // class name
  bases_S6126C4, 9,
  &(vtc_S6126C4[0]), // expected_vtbl_contents
  &(vtt_S6126C4[0]), // expected_vtt_contents
  ABISELECT(96,88), // object size
  NSPAIRA(_ZTI7S6126C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6126C4),17, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6126C4),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6126C13  : S6126C8 , virtual S20997C6 , S4227C37 {
  void *s6126c13f0[10];
  ~S6126C13(); // tgen
  S6126C13(); // tgen
};
//SIG(-1 S6126C13) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S6126C13()
{
  extern Class_Descriptor cd_S6126C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S6126C13, buf);
    S6126C13 *dp, &lv = *(dp=new (buf) S6126C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S6126C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6126C13)");
    check_base_class_offset(lv, (S6126C8*), 0, "S6126C13");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S6126C13");
    check_base_class_offset(lv, (S4227C37*), 0, "S6126C13");
    check_field_offset(lv, s6126c13f0, ABISELECT(8,4), "S6126C13.s6126c13f0");
    test_class_info(&lv, &cd_S6126C13);
    dp->~S6126C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C13(Test_S6126C13, "S6126C13", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN8S6126C13C1Ev();
extern void _ZN8S6126C13D1Ev();
Name_Map name_map_S6126C13[] = {
  NSPAIR(_ZN8S6126C13C1Ev),
  NSPAIR(_ZN8S6126C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S6126C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6126C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6126C13[];
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY vtc_S6126C13[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C13[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S6126C13[];
static  VTT_ENTRY vtt_S6126C13[] = {
  {&(_ZTV8S6126C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6126C13[];
extern  VTBL_ENTRY _ZTV8S6126C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C13[];
Class_Descriptor cd_S6126C13 = {  "S6126C13", // class name
  bases_S6126C13, 3,
  &(vtc_S6126C13[0]), // expected_vtbl_contents
  &(vtt_S6126C13[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI8S6126C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6126C13),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6126C13),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  S6126C12  : virtual S6126C8 {
  ::S6126C13 s6126c12f0[9];
  ~S6126C12(); // tgen
  S6126C12(); // tgen
};
//SIG(-1 S6126C12) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S6126C12()
{
  extern Class_Descriptor cd_S6126C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S6126C12, buf);
    S6126C12 *dp, &lv = *(dp=new (buf) S6126C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S6126C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6126C12)");
    check_base_class_offset(lv, (S6126C8*), 0, "S6126C12");
    check_field_offset(lv, s6126c12f0, ABISELECT(8,4), "S6126C12.s6126c12f0");
    test_class_info(&lv, &cd_S6126C12);
    dp->~S6126C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C12(Test_S6126C12, "S6126C12", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN8S6126C12C1Ev();
extern void _ZN8S6126C12D1Ev();
Name_Map name_map_S6126C12[] = {
  NSPAIR(_ZN8S6126C12C1Ev),
  NSPAIR(_ZN8S6126C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
static Base_Class bases_S6126C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6126C8,    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 _ZTI8S6126C12[];
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY vtc_S6126C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S6126C12[];
static  VTT_ENTRY vtt_S6126C12[] = {
  {&(_ZTV8S6126C12[4]),  4,5},
  {&(_ZTV8S6126C12[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S6126C12[];
extern  VTBL_ENTRY _ZTV8S6126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C12[];
Class_Descriptor cd_S6126C12 = {  "S6126C12", // class name
  bases_S6126C12, 1,
  &(vtc_S6126C12[0]), // expected_vtbl_contents
  &(vtt_S6126C12[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI8S6126C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6126C12),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6126C12),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  S6126C10  : virtual S6126C8 , virtual S6126C7 , virtual S10258C6_nt , virtual S6126C6 , virtual S6126C12 {
  virtual  ~S6126C10(); // _ZN8S6126C10D2Ev
  S6126C10(); // tgen
};
//SIG(-1 S6126C10) C1{ VBC2{ v1} VBC3{ VBC4{ m FL[5]} VBC2 BC5{ m} vd} VBC6{ m FL[4]} VBC7{ VBC5 VBC3 v2} VBC8{ VBC2 FC9{ BC2 VBC4 BC5 Fp[10]}[9]} vd}


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

static void Test_S6126C10()
{
  extern Class_Descriptor cd_S6126C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(156,210)];
    init_test(&cd_S6126C10, buf);
    S6126C10 *dp, &lv = *(dp=new (buf) S6126C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1240,836), "sizeof(S6126C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6126C10)");
    check_base_class_offset(lv, (S6126C8*), 0, "S6126C10");
    check_base_class_offset(lv, (S6126C8*)(S6126C7*), 0, "S6126C10");
    check_base_class_offset(lv, (S6126C8*)(S6126C12*), 0, "S6126C10");
    check_base_class_offset(lv, (S20997C6*)(S6126C7*), ABISELECT(8,4), "S6126C10");
    check_base_class_offset(lv, (S4227C37*)(S6126C7*), 0, "S6126C10");
    check_base_class_offset(lv, (S6126C7*), 0, "S6126C10");
    check_base_class_offset(lv, (S6126C7*)(S6126C6*), 0, "S6126C10");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(48,44), "S6126C10");
    /*is_ambiguous_... S6126C6::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C6*), ABISELECT(80,76), "S6126C10");
    check_base_class_offset(lv, (S6126C6*), 0, "S6126C10");
    check_base_class_offset(lv, (S6126C12*), ABISELECT(80,76), "S6126C10");
    test_class_info(&lv, &cd_S6126C10);
    dp->~S6126C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C10(Test_S6126C10, "S6126C10", ABISELECT(1240,836));

#else // __cplusplus

extern void _ZN8S6126C10C1Ev();
extern void _ZN8S6126C10D2Ev();
Name_Map name_map_S6126C10[] = {
  NSPAIR(_ZN8S6126C10C1Ev),
  NSPAIR(_ZN8S6126C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C6;
extern VTBL_ENTRY _ZTI7S6126C6[];
extern  VTBL_ENTRY _ZTV7S6126C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C6[];
extern Class_Descriptor cd_S6126C12;
extern VTBL_ENTRY _ZTI8S6126C12[];
extern  VTBL_ENTRY _ZTV8S6126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C12[];
static Base_Class bases_S6126C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6126C8,    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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(80,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6126C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6126C12,    ABISELECT(80,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6126C10[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C10D1Ev();
extern void _ZN8S6126C10D0Ev();
extern void _ZN7S6126C62v2Ev();
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY vtc_S6126C10[] = {
  ABISELECT(80,76),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C10[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C10D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C10D0Ev,
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  (VTBL_ENTRY)&(_ZTI8S6126C10[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S6126C10[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C7__8S6126C10[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev)();
extern void _ZN7S6126C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev)();
extern void _ZN7S6126C6D0Ev() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C6__8S6126C10[] = {
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C6[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C12__8S6126C10[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C12__8S6126C10[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
static  VTT_ENTRY vtt_S6126C10[] = {
  {&(_ZTV8S6126C10[12]),  12,21},
  {&(_ZTV8S6126C10[12]),  12,21},
  {&(_ZTV8S6126C10[12]),  12,21},
  {&(_ZTV8S6126C10[12]),  12,21},
  {&(_ZTV8S6126C10[20]),  20,21},
  {&(_tg__ZTV7S6126C7__8S6126C10[5]),  5,8},
  {&(_tg__ZTV7S6126C7__8S6126C10[5]),  5,8},
  {&(_tg__ZTV7S6126C6__8S6126C10[8]),  8,12},
  {&(_tg__ZTV7S6126C6__8S6126C10[8]),  8,12},
  {&(_tg__ZTV7S6126C6__8S6126C10[8]),  8,12},
  {&(_tg__ZTV8S6126C12__8S6126C10[4]),  4,5},
  {&(_tg__ZTV7S6126C8__8S6126C12__8S6126C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S6126C10[];
extern  VTBL_ENTRY _ZTV8S6126C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C10[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev), // 
  (VTBL_ENTRY)_ZN7S6126C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev), // 
  (VTBL_ENTRY)_ZN7S6126C6D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6126C10 = {  "S6126C10", // class name
  bases_S6126C10, 8,
  &(vtc_S6126C10[0]), // expected_vtbl_contents
  &(vtt_S6126C10[0]), // expected_vtt_contents
  ABISELECT(1240,836), // object size
  NSPAIRA(_ZTI8S6126C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S6126C10),21, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6126C10),12, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6126C3  : virtual S6126C4 , S6126C10 {
  virtual void  v3(); // _ZN7S6126C32v3Ev
  ~S6126C3(); // tgen
  S6126C3(); // tgen
};
//SIG(-1 S6126C3) C1{ VBC2{ VBC3{ m FL[5]} BC4{ VBC5{ m} VBC6{ VBC3 VBC7{ v2} BC5 vd} v3} VBC8{ BC3 BC7}} BC9{ VBC7 VBC6 VBC10{ m FL[4]} VBC4 VBC11{ VBC7 FC12{ BC7 VBC3 BC5 Fp[10]}[9]} vd} v1}


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

static void Test_S6126C3()
{
  extern Class_Descriptor cd_S6126C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(163,222)];
    init_test(&cd_S6126C3, buf);
    S6126C3 *dp, &lv = *(dp=new (buf) S6126C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1296,884), "sizeof(S6126C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6126C3)");
    /*is_ambiguous_... S6126C4::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C4*), ABISELECT(16,8), "S6126C3");
    check_base_class_offset(lv, (S20997C6*)(S6126C7*), ABISELECT(16,8), "S6126C3");
    /*is_ambiguous_... S6126C6::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C6*)(S6126C4*), 0, "S6126C3");
    /*is_ambiguous_... S6126C3::S6126C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C6*), 0, "S6126C3");
    check_base_class_offset(lv, (S6126C8*)(S6126C7*), ABISELECT(8,4), "S6126C3");
    check_base_class_offset(lv, (S6126C8*)(S6126C10*), ABISELECT(8,4), "S6126C3");
    check_base_class_offset(lv, (S6126C8*)(S6126C12*), ABISELECT(8,4), "S6126C3");
    check_base_class_offset(lv, (S4227C37*)(S6126C7*), ABISELECT(8,4), "S6126C3");
    check_base_class_offset(lv, (S6126C7*)(S6126C6*)(S6126C4*), ABISELECT(8,4), "S6126C3");
    check_base_class_offset(lv, (S6126C7*)(S6126C10*), ABISELECT(8,4), "S6126C3");
    /*is_ambiguous_... S6126C3::S6126C6 */ AMB_check_base_class_offset(lv, (S6126C7*)(S6126C6*), ABISELECT(8,4), "S6126C3");
    check_base_class_offset(lv, (S6126C6*)(S6126C4*), ABISELECT(8,4), "S6126C3");
    check_base_class_offset(lv, (S20997C6*)(S6126C9*), ABISELECT(64,52), "S6126C3");
    check_base_class_offset(lv, (S6126C8*)(S6126C9*), ABISELECT(56,48), "S6126C3");
    check_base_class_offset(lv, (S6126C9*)(S6126C4*), ABISELECT(56,48), "S6126C3");
    check_base_class_offset(lv, (S6126C4*), ABISELECT(8,4), "S6126C3");
    check_base_class_offset(lv, (S10258C6_nt*)(S6126C10*), ABISELECT(104,92), "S6126C3");
    check_base_class_offset(lv, (S6126C6*)(S6126C10*), 0, "S6126C3");
    check_base_class_offset(lv, (S6126C12*)(S6126C10*), ABISELECT(136,124), "S6126C3");
    check_base_class_offset(lv, (S6126C10*), 0, "S6126C3");
    test_class_info(&lv, &cd_S6126C3);
    dp->~S6126C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C3(Test_S6126C3, "S6126C3", ABISELECT(1296,884));

#else // __cplusplus

extern void _ZN7S6126C3C1Ev();
extern void _ZN7S6126C3D1Ev();
Name_Map name_map_S6126C3[] = {
  NSPAIR(_ZN7S6126C3C1Ev),
  NSPAIR(_ZN7S6126C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S6126C6;
extern VTBL_ENTRY _ZTI7S6126C6[];
extern  VTBL_ENTRY _ZTV7S6126C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C9;
extern VTBL_ENTRY _ZTI7S6126C9[];
extern  VTBL_ENTRY _ZTV7S6126C9[];
extern Class_Descriptor cd_S6126C4;
extern VTBL_ENTRY _ZTI7S6126C4[];
extern  VTBL_ENTRY _ZTV7S6126C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C4[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S6126C6;
extern VTBL_ENTRY _ZTI7S6126C6[];
extern  VTBL_ENTRY _ZTV7S6126C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C6[];
extern Class_Descriptor cd_S6126C12;
extern VTBL_ENTRY _ZTI8S6126C12[];
extern  VTBL_ENTRY _ZTV8S6126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C12[];
extern Class_Descriptor cd_S6126C10;
extern VTBL_ENTRY _ZTI8S6126C10[];
extern  VTBL_ENTRY _ZTV8S6126C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C10[];
static Base_Class bases_S6126C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C8,    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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6126C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6126C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //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_S20997C6,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6126C8,    ABISELECT(56,48), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6126C9,    ABISELECT(56,48), //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
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6126C4,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(104,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6126C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6126C12,    ABISELECT(136,124), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6126C10,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6126C3[];
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C3D1Ev,_ZTv0_n24_N7S6126C3D1Ev)();
extern void _ZN7S6126C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C3D0Ev,_ZTv0_n24_N7S6126C3D0Ev)();
extern void _ZN7S6126C3D0Ev() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
extern void _ZN7S6126C32v3Ev();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C3D1Ev,_ZTv0_n24_N7S6126C3D1Ev)();
extern void ABISELECT(_ZThn8_N7S6126C3D1Ev,_ZThn4_N7S6126C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C3D0Ev,_ZTv0_n24_N7S6126C3D0Ev)();
extern void ABISELECT(_ZThn8_N7S6126C3D0Ev,_ZThn4_N7S6126C3D0Ev)() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY vtc_S6126C3[] = {
  ABISELECT(56,48),
  ABISELECT(8,4),
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C3[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C3D1Ev,_ZTv0_n24_N7S6126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C3D0Ev,_ZTv0_n24_N7S6126C3D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
  (VTBL_ENTRY)&_ZN7S6126C32v3Ev,
  0,
  ABISELECT(48,44),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6126C3[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C3D1Ev,_ZTv0_n24_N7S6126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C3D0Ev,_ZTv0_n24_N7S6126C3D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S6126C3[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI7S6126C3[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern VTBL_ENTRY _ZTV7S6126C3[];
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6126C10D1Ev,_ZTv0_n24_N8S6126C10D1Ev)();
extern void _ZN8S6126C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6126C10D0Ev,_ZTv0_n24_N8S6126C10D0Ev)();
extern void _ZN8S6126C10D0Ev() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C10__7S6126C3[] = {
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C10[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6126C10D1Ev,_ZTv0_n24_N8S6126C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6126C10D0Ev,_ZTv0_n24_N8S6126C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6126C10D1Ev,_ZTv0_n24_N8S6126C10D1Ev)();
extern void ABISELECT(_ZThn8_N8S6126C10D1Ev,_ZThn4_N8S6126C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6126C10D0Ev,_ZTv0_n24_N8S6126C10D0Ev)();
extern void ABISELECT(_ZThn8_N8S6126C10D0Ev,_ZThn4_N8S6126C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6126C7__8S6126C10__7S6126C3[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6126C10[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6126C10D1Ev,_ZTv0_n24_N8S6126C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6126C10D0Ev,_ZTv0_n24_N8S6126C10D0Ev),
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C12__8S6126C10__7S6126C3[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI8S6126C10[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C4D1Ev,_ZTv0_n24_N7S6126C4D1Ev)();
extern void _ZN7S6126C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C4D0Ev,_ZTv0_n24_N7S6126C4D0Ev)();
extern void _ZN7S6126C4D0Ev() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C4__7S6126C3[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C4[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C4D1Ev,_ZTv0_n24_N7S6126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C4D0Ev,_ZTv0_n24_N7S6126C4D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev)();
extern void _ZN7S6126C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev)();
extern void _ZN7S6126C6D0Ev() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C67S6126C4__7S6126C3[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C6[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C87S6126C9__A1__7S6126C4__7S6126C3[] = {
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI7S6126C4[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C7__7S6126C3[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev)();
extern void _ZN7S6126C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev)();
extern void _ZN7S6126C6D0Ev() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C6__A1__7S6126C3[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C6[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev)();
extern void ABISELECT(_ZThn8_N7S6126C6D1Ev,_ZThn4_N7S6126C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev)();
extern void ABISELECT(_ZThn8_N7S6126C6D0Ev,_ZThn4_N7S6126C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6126C7__7S6126C6__A1__7S6126C3[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6126C6[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev),
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C12__7S6126C3[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C12__7S6126C3[] = {
  0,
  ABISELECT(128,120),
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
static  VTT_ENTRY vtt_S6126C3[] = {
  {&(_ZTV7S6126C3[14]),  14,42},
  {&(_tg__ZTV8S6126C10__7S6126C3[12]),  12,16},
  {&(_tg__ZTV7S6126C7__8S6126C10__7S6126C3[6]),  6,9},
  {&(_tg__ZTV7S6126C7__8S6126C10__7S6126C3[6]),  6,9},
  {&(_tg__ZTV8S6126C10__7S6126C3[12]),  12,16},
  {&(_tg__ZTV8S6126C12__8S6126C10__7S6126C3[4]),  4,5},
  {&(_ZTV7S6126C3[29]),  29,42},
  {&(_ZTV7S6126C3[29]),  29,42},
  {&(_ZTV7S6126C3[29]),  29,42},
  {&(_ZTV7S6126C3[36]),  36,42},
  {&(_ZTV7S6126C3[14]),  14,42},
  {&(_ZTV7S6126C3[41]),  41,42},
  {&(_tg__ZTV7S6126C4__7S6126C3[9]),  9,13},
  {&(_tg__ZTV7S6126C67S6126C4__7S6126C3[8]),  8,12},
  {&(_tg__ZTV7S6126C67S6126C4__7S6126C3[8]),  8,12},
  {&(_tg__ZTV7S6126C67S6126C4__7S6126C3[8]),  8,12},
  {&(_tg__ZTV7S6126C4__7S6126C3[9]),  9,13},
  {&(_tg__ZTV7S6126C4__7S6126C3[9]),  9,13},
  {&(_tg__ZTV7S6126C87S6126C9__A1__7S6126C4__7S6126C3[3]),  3,4},
  {&(_tg__ZTV7S6126C7__7S6126C3[5]),  5,8},
  {&(_tg__ZTV7S6126C7__7S6126C3[5]),  5,8},
  {&(_tg__ZTV7S6126C6__A1__7S6126C3[8]),  8,12},
  {&(_tg__ZTV7S6126C7__7S6126C6__A1__7S6126C3[6]),  6,9},
  {&(_tg__ZTV7S6126C7__7S6126C6__A1__7S6126C3[6]),  6,9},
  {&(_tg__ZTV8S6126C12__7S6126C3[4]),  4,5},
  {&(_tg__ZTV7S6126C8__8S6126C12__7S6126C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S6126C3[];
extern  VTBL_ENTRY _ZTV7S6126C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C3[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S6126C6D0Ev,_ZThn4_N7S6126C6D0Ev),
  (VTBL_ENTRY)_ZN7S6126C6D0Ev,
  (VTBL_ENTRY)_ZN7S6126C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S6126C6D1Ev,_ZThn4_N7S6126C6D1Ev),
  (VTBL_ENTRY)_ZN7S6126C6D1Ev,
  (VTBL_ENTRY)_ZN7S6126C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C4D0Ev,_ZTv0_n24_N7S6126C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S6126C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C4D1Ev,_ZTv0_n24_N7S6126C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S6126C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6126C10D0Ev,_ZTv0_n24_N8S6126C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S6126C10D0Ev,_ZThn4_N8S6126C10D0Ev),
  (VTBL_ENTRY)_ZN8S6126C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6126C10D1Ev,_ZTv0_n24_N8S6126C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S6126C10D1Ev,_ZThn4_N8S6126C10D1Ev),
  (VTBL_ENTRY)_ZN8S6126C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C3D0Ev,_ZTv0_n24_N7S6126C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S6126C3D0Ev,_ZThn4_N7S6126C3D0Ev),
  (VTBL_ENTRY)_ZN7S6126C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C3D1Ev,_ZTv0_n24_N7S6126C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N7S6126C3D1Ev,_ZThn4_N7S6126C3D1Ev),
  (VTBL_ENTRY)_ZN7S6126C3D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6126C3 = {  "S6126C3", // class name
  bases_S6126C3, 14,
  &(vtc_S6126C3[0]), // expected_vtbl_contents
  &(vtt_S6126C3[0]), // expected_vtt_contents
  ABISELECT(1296,884), // object size
  NSPAIRA(_ZTI7S6126C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6126C3),42, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6126C3),26, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6126C17  : S6126C7 {
  virtual  ~S6126C17(); // _ZN8S6126C17D2Ev
  S6126C17(); // tgen
};
//SIG(-1 S6126C17) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S6126C17()
{
  extern Class_Descriptor cd_S6126C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S6126C17, buf);
    S6126C17 *dp, &lv = *(dp=new (buf) S6126C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S6126C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6126C17)");
    check_base_class_offset(lv, (S20997C6*)(S6126C7*), ABISELECT(8,4), "S6126C17");
    check_base_class_offset(lv, (S6126C8*)(S6126C7*), 0, "S6126C17");
    check_base_class_offset(lv, (S4227C37*)(S6126C7*), 0, "S6126C17");
    check_base_class_offset(lv, (S6126C7*), 0, "S6126C17");
    test_class_info(&lv, &cd_S6126C17);
    dp->~S6126C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C17(Test_S6126C17, "S6126C17", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S6126C17C1Ev();
extern void _ZN8S6126C17D2Ev();
Name_Map name_map_S6126C17[] = {
  NSPAIR(_ZN8S6126C17C1Ev),
  NSPAIR(_ZN8S6126C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
static Base_Class bases_S6126C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C8,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6126C17[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C17D1Ev();
extern void _ZN8S6126C17D0Ev();
static  VTBL_ENTRY vtc_S6126C17[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D0Ev,
};
extern VTBL_ENTRY _ZTV8S6126C17[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C7__8S6126C17[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
static  VTT_ENTRY vtt_S6126C17[] = {
  {&(_ZTV8S6126C17[5]),  5,8},
  {&(_tg__ZTV7S6126C7__8S6126C17[5]),  5,8},
  {&(_tg__ZTV7S6126C7__8S6126C17[5]),  5,8},
  {&(_ZTV8S6126C17[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S6126C17[];
extern  VTBL_ENTRY _ZTV8S6126C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C17[];
Class_Descriptor cd_S6126C17 = {  "S6126C17", // class name
  bases_S6126C17, 4,
  &(vtc_S6126C17[0]), // expected_vtbl_contents
  &(vtt_S6126C17[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S6126C17),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S6126C17),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6126C17),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  S6126C16  : virtual S4227C37 , S6126C12 , S6126C7 , S6126C17 {
  ~S6126C16(); // tgen
  S6126C16(); // tgen
};
//SIG(-1 S6126C16) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S6126C16()
{
  extern Class_Descriptor cd_S6126C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S6126C16, buf);
    S6126C16 *dp, &lv = *(dp=new (buf) S6126C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S6126C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6126C16)");
    /*is_ambiguous_... S6126C16::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S6126C16");
    check_base_class_offset(lv, (S6126C8*)(S6126C12*), 0, "S6126C16");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C7*), 0, "S6126C16");
    check_base_class_offset(lv, (S6126C8*)(S6126C7*)(S6126C17*), 0, "S6126C16");
    check_base_class_offset(lv, (S6126C12*), 0, "S6126C16");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C7*), ABISELECT(1176,768), "S6126C16");
    check_base_class_offset(lv, (S20997C6*)(S6126C7*)(S6126C17*), ABISELECT(1176,768), "S6126C16");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C7*), ABISELECT(1160,760), "S6126C16");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C7*), ABISELECT(1160,760), "S6126C16");
    check_base_class_offset(lv, (S4227C37*)(S6126C7*)(S6126C17*), ABISELECT(1168,764), "S6126C16");
    check_base_class_offset(lv, (S6126C7*)(S6126C17*), ABISELECT(1168,764), "S6126C16");
    check_base_class_offset(lv, (S6126C17*), ABISELECT(1168,764), "S6126C16");
    test_class_info(&lv, &cd_S6126C16);
    dp->~S6126C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C16(Test_S6126C16, "S6126C16", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN8S6126C16C1Ev();
extern void _ZN8S6126C16D1Ev();
Name_Map name_map_S6126C16[] = {
  NSPAIR(_ZN8S6126C16C1Ev),
  NSPAIR(_ZN8S6126C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C12;
extern VTBL_ENTRY _ZTI8S6126C12[];
extern  VTBL_ENTRY _ZTV8S6126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C12[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S6126C17;
extern VTBL_ENTRY _ZTI8S6126C17[];
extern  VTBL_ENTRY _ZTV8S6126C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C17[];
static Base_Class bases_S6126C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6126C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6126C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C7,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C7,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6126C17,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6126C16[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C16D1Ev();
extern void _ZN8S6126C16D0Ev();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn1160_N8S6126C16D1Ev,_ZThn760_N8S6126C16D1Ev)();
extern void ABISELECT(_ZThn1160_N8S6126C16D0Ev,_ZThn760_N8S6126C16D0Ev)();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn1168_N8S6126C16D1Ev,_ZThn764_N8S6126C16D1Ev)();
extern void ABISELECT(_ZThn1168_N8S6126C16D0Ev,_ZThn764_N8S6126C16D0Ev)();
static  VTBL_ENTRY vtc_S6126C16[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C16D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S6126C16D1Ev,_ZThn760_N8S6126C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S6126C16D0Ev,_ZThn760_N8S6126C16D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S6126C16D1Ev,_ZThn764_N8S6126C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S6126C16D0Ev,_ZThn764_N8S6126C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S6126C16[];
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C12__8S6126C16[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C7__8S6126C16[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__7S6126C7__8S6126C16[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C17D1Ev();
extern void _ZN8S6126C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C17__8S6126C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C17__A1__8S6126C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__7S6126C78S6126C17__A1__8S6126C16[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C17__8S6126C16[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
static  VTT_ENTRY vtt_S6126C16[] = {
  {&(_ZTV8S6126C16[6]),  6,25},
  {&(_tg__ZTV8S6126C12__8S6126C16[4]),  4,5},
  {&(_tg__ZTV8S6126C12__8S6126C16[4]),  4,5},
  {&(_tg__ZTV7S6126C7__8S6126C16[5]),  5,8},
  {&(_tg__ZTV7S6126C8__7S6126C7__8S6126C16[3]),  3,4},
  {&(_tg__ZTV8S6126C17__8S6126C16[5]),  5,8},
  {&(_tg__ZTV7S6126C78S6126C17__A1__8S6126C16[5]),  5,8},
  {&(_tg__ZTV7S6126C8__7S6126C78S6126C17__A1__8S6126C16[3]),  3,4},
  {&(_tg__ZTV7S6126C8__8S6126C17__8S6126C16[3]),  3,4},
  {&(_ZTV8S6126C16[6]),  6,25},
  {&(_ZTV8S6126C16[14]),  14,25},
  {&(_ZTV8S6126C16[22]),  22,25},
};
extern VTBL_ENTRY _ZTI8S6126C16[];
extern  VTBL_ENTRY _ZTV8S6126C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C16[];
Class_Descriptor cd_S6126C16 = {  "S6126C16", // class name
  bases_S6126C16, 9,
  &(vtc_S6126C16[0]), // expected_vtbl_contents
  &(vtt_S6126C16[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI8S6126C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S6126C16),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6126C16),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  S6126C19  : virtual S6126C8 , S6126C13 , virtual S6126C16 {
  virtual  ~S6126C19(); // _ZN8S6126C19D2Ev
  S6126C19(); // tgen
};
//SIG(-1 S6126C19) C1{ VBC2{ v1} BC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC5 BC7{ VBC2 FC3[9]} BC8{ VBC4 VBC2 BC5 vd} BC9{ BC8 vd}} vd}


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

static void Test_S6126C19()
{
  extern Class_Descriptor cd_S6126C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(165,215)];
    init_test(&cd_S6126C19, buf);
    S6126C19 *dp, &lv = *(dp=new (buf) S6126C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1312,856), "sizeof(S6126C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6126C19)");
    /*is_ambiguous_... S6126C19::S6126C8 */ AMB_check_base_class_offset(lv, (S6126C8*), ABISELECT(128,84), "S6126C19");
    check_base_class_offset(lv, (S6126C8*)(S6126C12*)(S6126C16*), ABISELECT(128,84), "S6126C19");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C7*)(S6126C16*), ABISELECT(128,84), "S6126C19");
    check_base_class_offset(lv, (S6126C8*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(128,84), "S6126C19");
    check_base_class_offset(lv, (S6126C8*)(S6126C13*), 0, "S6126C19");
    check_base_class_offset(lv, (S20997C6*)(S6126C13*), ABISELECT(88,44), "S6126C19");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C7*)(S6126C16*), ABISELECT(88,44), "S6126C19");
    check_base_class_offset(lv, (S20997C6*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(88,44), "S6126C19");
    check_base_class_offset(lv, (S4227C37*)(S6126C13*), 0, "S6126C19");
    check_base_class_offset(lv, (S6126C13*), 0, "S6126C19");
    /*is_ambiguous_... S6126C16::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C16*), ABISELECT(1304,852), "S6126C19");
    check_base_class_offset(lv, (S6126C12*)(S6126C16*), ABISELECT(128,84), "S6126C19");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C7*)(S6126C16*), ABISELECT(1288,844), "S6126C19");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C7*)(S6126C16*), ABISELECT(1288,844), "S6126C19");
    check_base_class_offset(lv, (S4227C37*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(1296,848), "S6126C19");
    check_base_class_offset(lv, (S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(1296,848), "S6126C19");
    check_base_class_offset(lv, (S6126C17*)(S6126C16*), ABISELECT(1296,848), "S6126C19");
    check_base_class_offset(lv, (S6126C16*), ABISELECT(128,84), "S6126C19");
    test_class_info(&lv, &cd_S6126C19);
    dp->~S6126C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C19(Test_S6126C19, "S6126C19", ABISELECT(1312,856));

#else // __cplusplus

extern void _ZN8S6126C19C1Ev();
extern void _ZN8S6126C19D2Ev();
Name_Map name_map_S6126C19[] = {
  NSPAIR(_ZN8S6126C19C1Ev),
  NSPAIR(_ZN8S6126C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C13;
extern VTBL_ENTRY _ZTI8S6126C13[];
extern  VTBL_ENTRY _ZTV8S6126C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C12;
extern VTBL_ENTRY _ZTI8S6126C12[];
extern  VTBL_ENTRY _ZTV8S6126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S6126C17;
extern VTBL_ENTRY _ZTI8S6126C17[];
extern  VTBL_ENTRY _ZTV8S6126C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C17[];
extern Class_Descriptor cd_S6126C16;
extern VTBL_ENTRY _ZTI8S6126C16[];
extern  VTBL_ENTRY _ZTV8S6126C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C16[];
static Base_Class bases_S6126C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6126C8,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6126C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S6126C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C12,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1288,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C7,    ABISELECT(1288,844), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C7,    ABISELECT(1296,848), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6126C17,    ABISELECT(1296,848), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S6126C16,    ABISELECT(128,84), //bcp->offset
    9, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6126C19[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C19D1Ev();
extern void _ZN8S6126C19D0Ev();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C19D1Ev,_ZTv0_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S6126C19D1Ev,_ZThn84_N8S6126C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S6126C19D0Ev,_ZTv0_n28_N8S6126C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S6126C19D0Ev,_ZThn84_N8S6126C19D0Ev)() __attribute__((weak));
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C19D1Ev,_ZTvn760_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C19D0Ev,_ZTvn760_n28_N8S6126C19D0Ev)();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C19D1Ev,_ZTvn764_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C19D0Ev,_ZTvn764_n28_N8S6126C19D0Ev)();
static  VTBL_ENTRY vtc_S6126C19[] = {
  ABISELECT(1304,852),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C19D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C19D0Ev,
  ABISELECT(-128,-84),
  -40,
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C19D1Ev,_ZTv0_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C19D0Ev,_ZTv0_n28_N8S6126C19D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C19D1Ev,_ZTvn760_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C19D0Ev,_ZTvn760_n28_N8S6126C19D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C19D1Ev,_ZTvn764_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C19D0Ev,_ZTvn764_n28_N8S6126C19D0Ev),
};
extern VTBL_ENTRY _ZTV8S6126C19[];
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C13__8S6126C19[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C13[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C16D1Ev();
extern void _ZN8S6126C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C19[] = {
  -40,
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C16D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C128S6126C16__8S6126C19[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C19[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__7S6126C78S6126C16__8S6126C19[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C17D1Ev();
extern void _ZN8S6126C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C19[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C178S6126C16__A1__8S6126C19[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__7S6126C78S6126C178S6126C16__A1__8S6126C19[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C178S6126C16__8S6126C19[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn1160_N8S6126C16D1Ev,_ZThn760_N8S6126C16D1Ev)();
extern void ABISELECT(_ZThn1160_N8S6126C16D0Ev,_ZThn760_N8S6126C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C7__8S6126C16__8S6126C19[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S6126C16D1Ev,_ZThn760_N8S6126C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S6126C16D0Ev,_ZThn760_N8S6126C16D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn1168_N8S6126C16D1Ev,_ZThn764_N8S6126C16D1Ev)();
extern void ABISELECT(_ZThn1168_N8S6126C16D0Ev,_ZThn764_N8S6126C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C17__8S6126C16__8S6126C19[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S6126C16D1Ev,_ZThn764_N8S6126C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S6126C16D0Ev,_ZThn764_N8S6126C16D0Ev),
};
static  VTT_ENTRY vtt_S6126C19[] = {
  {&(_ZTV8S6126C19[6]),  6,35},
  {&(_tg__ZTV8S6126C13__8S6126C19[3]),  3,4},
  {&(_ZTV8S6126C19[16]),  16,35},
  {&(_ZTV8S6126C19[16]),  16,35},
  {&(_ZTV8S6126C19[24]),  24,35},
  {&(_ZTV8S6126C19[32]),  32,35},
  {&(_tg__ZTV8S6126C16__8S6126C19[6]),  6,9},
  {&(_tg__ZTV8S6126C128S6126C16__8S6126C19[4]),  4,5},
  {&(_tg__ZTV8S6126C128S6126C16__8S6126C19[4]),  4,5},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C19[5]),  5,8},
  {&(_tg__ZTV7S6126C8__7S6126C78S6126C16__8S6126C19[3]),  3,4},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C19[5]),  5,8},
  {&(_tg__ZTV7S6126C78S6126C178S6126C16__A1__8S6126C19[5]),  5,8},
  {&(_tg__ZTV7S6126C8__7S6126C78S6126C178S6126C16__A1__8S6126C19[3]),  3,4},
  {&(_tg__ZTV7S6126C8__8S6126C178S6126C16__8S6126C19[3]),  3,4},
  {&(_tg__ZTV8S6126C16__8S6126C19[6]),  6,9},
  {&(_tg__ZTV7S6126C7__8S6126C16__8S6126C19[5]),  5,8},
  {&(_tg__ZTV8S6126C17__8S6126C16__8S6126C19[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S6126C19[];
extern  VTBL_ENTRY _ZTV8S6126C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C19[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C19D0Ev,_ZTv0_n28_N8S6126C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6126C19D0Ev,_ZThn84_N8S6126C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C19D1Ev,_ZTv0_n28_N8S6126C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6126C19D1Ev,_ZThn84_N8S6126C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6126C19 = {  "S6126C19", // class name
  bases_S6126C19, 13,
  &(vtc_S6126C19[0]), // expected_vtbl_contents
  &(vtt_S6126C19[0]), // expected_vtt_contents
  ABISELECT(1312,856), // object size
  NSPAIRA(_ZTI8S6126C19),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6126C19),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6126C19),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6126C20  : S6126C9 {
  long double s6126c20f0;
  ~S6126C20(); // tgen
  S6126C20(); // tgen
};
//SIG(-1 S6126C20) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} FD}


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

static void Test_S6126C20()
{
  extern Class_Descriptor cd_S6126C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,15)];
    init_test(&cd_S6126C20, buf);
    S6126C20 *dp, &lv = *(dp=new (buf) S6126C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S6126C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6126C20)");
    check_base_class_offset(lv, (S20997C6*)(S6126C9*), ABISELECT(8,4), "S6126C20");
    check_base_class_offset(lv, (S6126C8*)(S6126C9*), 0, "S6126C20");
    check_base_class_offset(lv, (S6126C9*), 0, "S6126C20");
    check_field_offset(lv, s6126c20f0, ABISELECT(48,44), "S6126C20.s6126c20f0");
    test_class_info(&lv, &cd_S6126C20);
    dp->~S6126C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C20(Test_S6126C20, "S6126C20", ABISELECT(64,56));

#else // __cplusplus

extern void _ZN8S6126C20C1Ev();
extern void _ZN8S6126C20D1Ev();
Name_Map name_map_S6126C20[] = {
  NSPAIR(_ZN8S6126C20C1Ev),
  NSPAIR(_ZN8S6126C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C9;
extern VTBL_ENTRY _ZTI7S6126C9[];
extern  VTBL_ENTRY _ZTV7S6126C9[];
static Base_Class bases_S6126C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S6126C8,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S6126C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S6126C20[];
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY vtc_S6126C20[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C20[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern VTBL_ENTRY _ZTI8S6126C20[];
extern  VTBL_ENTRY _ZTV8S6126C20[];
Class_Descriptor cd_S6126C20 = {  "S6126C20", // class name
  bases_S6126C20, 3,
  &(vtc_S6126C20[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,56), // object size
  NSPAIRA(_ZTI8S6126C20),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S6126C20),3, //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  S6126C18  : virtual S6126C19 , S6126C20 {
  ~S6126C18(); // tgen
  S6126C18(); // tgen
};
//SIG(-1 S6126C18) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} BC11{ BC12{ BC5 BC3} FD}}


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

static void Test_S6126C18()
{
  extern Class_Descriptor cd_S6126C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S6126C18, buf);
    S6126C18 *dp, &lv = *(dp=new (buf) S6126C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S6126C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6126C18)");
    /*is_ambiguous_... S6126C19::S6126C8 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C19*), ABISELECT(192,140), "S6126C18");
    check_base_class_offset(lv, (S6126C8*)(S6126C12*)(S6126C16*), ABISELECT(192,140), "S6126C18");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C7*)(S6126C16*), ABISELECT(192,140), "S6126C18");
    check_base_class_offset(lv, (S6126C8*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(192,140), "S6126C18");
    check_base_class_offset(lv, (S6126C8*)(S6126C13*)(S6126C19*), ABISELECT(64,56), "S6126C18");
    check_base_class_offset(lv, (S20997C6*)(S6126C13*)(S6126C19*), ABISELECT(152,100), "S6126C18");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C7*)(S6126C16*), ABISELECT(152,100), "S6126C18");
    check_base_class_offset(lv, (S20997C6*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(152,100), "S6126C18");
    check_base_class_offset(lv, (S4227C37*)(S6126C13*)(S6126C19*), ABISELECT(64,56), "S6126C18");
    check_base_class_offset(lv, (S6126C13*)(S6126C19*), ABISELECT(64,56), "S6126C18");
    /*is_ambiguous_... S6126C16::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C16*), 0, "S6126C18");
    check_base_class_offset(lv, (S6126C12*)(S6126C16*), ABISELECT(192,140), "S6126C18");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C7*)(S6126C16*), ABISELECT(1352,900), "S6126C18");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C7*)(S6126C16*), ABISELECT(1352,900), "S6126C18");
    check_base_class_offset(lv, (S4227C37*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(1360,904), "S6126C18");
    check_base_class_offset(lv, (S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(1360,904), "S6126C18");
    check_base_class_offset(lv, (S6126C17*)(S6126C16*), ABISELECT(1360,904), "S6126C18");
    check_base_class_offset(lv, (S6126C16*)(S6126C19*), ABISELECT(192,140), "S6126C18");
    check_base_class_offset(lv, (S6126C19*), ABISELECT(64,56), "S6126C18");
    check_base_class_offset(lv, (S20997C6*)(S6126C9*)(S6126C20*), ABISELECT(8,4), "S6126C18");
    check_base_class_offset(lv, (S6126C8*)(S6126C9*)(S6126C20*), 0, "S6126C18");
    check_base_class_offset(lv, (S6126C9*)(S6126C20*), 0, "S6126C18");
    check_base_class_offset(lv, (S6126C20*), 0, "S6126C18");
    test_class_info(&lv, &cd_S6126C18);
    dp->~S6126C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C18(Test_S6126C18, "S6126C18", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN8S6126C18C1Ev();
extern void _ZN8S6126C18D1Ev();
Name_Map name_map_S6126C18[] = {
  NSPAIR(_ZN8S6126C18C1Ev),
  NSPAIR(_ZN8S6126C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C13;
extern VTBL_ENTRY _ZTI8S6126C13[];
extern  VTBL_ENTRY _ZTV8S6126C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C12;
extern VTBL_ENTRY _ZTI8S6126C12[];
extern  VTBL_ENTRY _ZTV8S6126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S6126C17;
extern VTBL_ENTRY _ZTI8S6126C17[];
extern  VTBL_ENTRY _ZTV8S6126C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C17[];
extern Class_Descriptor cd_S6126C16;
extern VTBL_ENTRY _ZTI8S6126C16[];
extern  VTBL_ENTRY _ZTV8S6126C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C16[];
extern Class_Descriptor cd_S6126C19;
extern VTBL_ENTRY _ZTI8S6126C19[];
extern  VTBL_ENTRY _ZTV8S6126C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C19[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C9;
extern VTBL_ENTRY _ZTI7S6126C9[];
extern  VTBL_ENTRY _ZTV7S6126C9[];
extern Class_Descriptor cd_S6126C20;
extern VTBL_ENTRY _ZTI8S6126C20[];
extern  VTBL_ENTRY _ZTV8S6126C20[];
static Base_Class bases_S6126C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6126C8,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6126C8,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S6126C13,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C12,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6126C7,    ABISELECT(1352,900), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C7,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6126C17,    ABISELECT(1360,904), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6126C16,    ABISELECT(192,140), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S6126C19,    ABISELECT(64,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6126C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6126C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S6126C18[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C18D1Ev();
extern void _ZN8S6126C18D0Ev();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6126C18D1Ev,_ZTv0_n32_N8S6126C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S6126C18D1Ev,_ZThn56_N8S6126C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6126C18D0Ev,_ZTv0_n32_N8S6126C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S6126C18D0Ev,_ZThn56_N8S6126C18D0Ev)() __attribute__((weak));
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C18D1Ev,_ZTv0_n28_N8S6126C18D1Ev)();
extern void ABISELECT(_ZThn192_N8S6126C18D1Ev,_ZThn140_N8S6126C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S6126C18D0Ev,_ZTv0_n28_N8S6126C18D0Ev)();
extern void ABISELECT(_ZThn192_N8S6126C18D0Ev,_ZThn140_N8S6126C18D0Ev)() __attribute__((weak));
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C18D1Ev,_ZTvn760_n28_N8S6126C18D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C18D0Ev,_ZTvn760_n28_N8S6126C18D0Ev)();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C18D1Ev,_ZTvn764_n28_N8S6126C18D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C18D0Ev,_ZTvn764_n28_N8S6126C18D0Ev)();
static  VTBL_ENTRY vtc_S6126C18[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C18D0Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C18D1Ev,_ZTv0_n32_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C18D0Ev,_ZTv0_n32_N8S6126C18D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C18D1Ev,_ZTv0_n28_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C18D0Ev,_ZTv0_n28_N8S6126C18D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C18D1Ev,_ZTvn760_n28_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C18D0Ev,_ZTvn760_n28_N8S6126C18D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C18D1Ev,_ZTvn764_n28_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C18D0Ev,_ZTvn764_n28_N8S6126C18D0Ev),
};
extern VTBL_ENTRY _ZTV8S6126C18[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C19D1Ev();
extern void _ZN8S6126C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C19__8S6126C18[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C19D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C19D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C138S6126C19__8S6126C18[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C13[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C19D1Ev,_ZTv0_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZThn128_N8S6126C19D1Ev,_ZThn84_N8S6126C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S6126C19D0Ev,_ZTv0_n28_N8S6126C19D0Ev)();
extern void ABISELECT(_ZThn128_N8S6126C19D0Ev,_ZThn84_N8S6126C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C19__8S6126C18[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C19D1Ev,_ZTv0_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C19D0Ev,_ZTv0_n28_N8S6126C19D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C19D1Ev,_ZTvn760_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C19D0Ev,_ZTvn760_n28_N8S6126C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C19__8S6126C18[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C19D1Ev,_ZTvn760_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C19D0Ev,_ZTvn760_n28_N8S6126C19D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C19D1Ev,_ZTvn764_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C19D0Ev,_ZTvn764_n28_N8S6126C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C19__8S6126C18[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C19D1Ev,_ZTvn764_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C19D0Ev,_ZTvn764_n28_N8S6126C19D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C16D1Ev();
extern void _ZN8S6126C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C18[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C16D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C128S6126C16__8S6126C18[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C18[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__7S6126C78S6126C16__8S6126C18[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C17D1Ev();
extern void _ZN8S6126C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C18[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C178S6126C16__A1__8S6126C18[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__7S6126C78S6126C178S6126C16__A1__8S6126C18[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C178S6126C16__8S6126C18[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn1160_N8S6126C16D1Ev,_ZThn760_N8S6126C16D1Ev)();
extern void ABISELECT(_ZThn1160_N8S6126C16D0Ev,_ZThn760_N8S6126C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C7__8S6126C16__8S6126C18[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S6126C16D1Ev,_ZThn760_N8S6126C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S6126C16D0Ev,_ZThn760_N8S6126C16D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn1168_N8S6126C16D1Ev,_ZThn764_N8S6126C16D1Ev)();
extern void ABISELECT(_ZThn1168_N8S6126C16D0Ev,_ZThn764_N8S6126C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C17__8S6126C16__8S6126C18[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S6126C16D1Ev,_ZThn764_N8S6126C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S6126C16D0Ev,_ZThn764_N8S6126C16D0Ev),
};
static  VTT_ENTRY vtt_S6126C18[] = {
  {&(_ZTV8S6126C18[7]),  7,47},
  {&(_ZTV8S6126C18[18]),  18,47},
  {&(_ZTV8S6126C18[28]),  28,47},
  {&(_ZTV8S6126C18[28]),  28,47},
  {&(_ZTV8S6126C18[36]),  36,47},
  {&(_ZTV8S6126C18[44]),  44,47},
  {&(_tg__ZTV8S6126C19__8S6126C18[6]),  6,9},
  {&(_tg__ZTV8S6126C138S6126C19__8S6126C18[3]),  3,4},
  {&(_tg__ZTV8S6126C16__8S6126C19__8S6126C18[7]),  7,10},
  {&(_tg__ZTV8S6126C16__8S6126C19__8S6126C18[7]),  7,10},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C19__8S6126C18[5]),  5,8},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C19__8S6126C18[5]),  5,8},
  {&(_tg__ZTV8S6126C16__8S6126C18[6]),  6,9},
  {&(_tg__ZTV8S6126C128S6126C16__8S6126C18[4]),  4,5},
  {&(_tg__ZTV8S6126C128S6126C16__8S6126C18[4]),  4,5},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C18[5]),  5,8},
  {&(_tg__ZTV7S6126C8__7S6126C78S6126C16__8S6126C18[3]),  3,4},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C18[5]),  5,8},
  {&(_tg__ZTV7S6126C78S6126C178S6126C16__A1__8S6126C18[5]),  5,8},
  {&(_tg__ZTV7S6126C8__7S6126C78S6126C178S6126C16__A1__8S6126C18[3]),  3,4},
  {&(_tg__ZTV7S6126C8__8S6126C178S6126C16__8S6126C18[3]),  3,4},
  {&(_tg__ZTV8S6126C16__8S6126C18[6]),  6,9},
  {&(_tg__ZTV7S6126C7__8S6126C16__8S6126C18[5]),  5,8},
  {&(_tg__ZTV8S6126C17__8S6126C16__8S6126C18[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S6126C18[];
extern  VTBL_ENTRY _ZTV8S6126C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C18[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C19D0Ev,_ZTv0_n28_N8S6126C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6126C19D0Ev,_ZThn84_N8S6126C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C19D1Ev,_ZTv0_n28_N8S6126C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S6126C19D1Ev,_ZThn84_N8S6126C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C18D0Ev,_ZTv0_n28_N8S6126C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S6126C18D0Ev,_ZThn140_N8S6126C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C18D1Ev,_ZTv0_n28_N8S6126C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S6126C18D1Ev,_ZThn140_N8S6126C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C18D0Ev,_ZTv0_n32_N8S6126C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6126C18D0Ev,_ZThn56_N8S6126C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C18D1Ev,_ZTv0_n32_N8S6126C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6126C18D1Ev,_ZThn56_N8S6126C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6126C18 = {  "S6126C18", // class name
  bases_S6126C18, 18,
  &(vtc_S6126C18[0]), // expected_vtbl_contents
  &(vtt_S6126C18[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI8S6126C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6126C18),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6126C18),24, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6126C15  : virtual S20997C6 , virtual S6126C16 , virtual S6126C18 {
  void *s6126c15f0;
  virtual  ~S6126C15(); // _ZN8S6126C15D2Ev
  S6126C15(); // tgen
};
//SIG(-1 S6126C15) C1{ VBC2{ m FL[5]} VBC3{ VBC4{ m} BC5{ VBC6{ v1} FC7{ BC6 VBC2 BC4 Fp[10]}[9]} BC8{ VBC2 VBC6 BC4 vd} BC9{ BC8 vd}} VBC10{ VBC11{ VBC6 BC7 VBC3 vd} BC12{ BC13{ BC2 BC6} FD}} vd Fp}


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

static void Test_S6126C15()
{
  extern Class_Descriptor cd_S6126C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,230)];
    init_test(&cd_S6126C15, buf);
    S6126C15 *dp, &lv = *(dp=new (buf) S6126C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,916), "sizeof(S6126C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6126C15)");
    /*is_ambiguous_... S6126C15::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(16,8), "S6126C15");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C7*)(S6126C16*), ABISELECT(16,8), "S6126C15");
    check_base_class_offset(lv, (S20997C6*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(16,8), "S6126C15");
    check_base_class_offset(lv, (S20997C6*)(S6126C13*)(S6126C19*), ABISELECT(16,8), "S6126C15");
    /*is_ambiguous_... S6126C16::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C16*), 0, "S6126C15");
    check_base_class_offset(lv, (S6126C8*)(S6126C12*)(S6126C16*), 0, "S6126C15");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C7*)(S6126C16*), 0, "S6126C15");
    check_base_class_offset(lv, (S6126C8*)(S6126C7*)(S6126C17*)(S6126C16*), 0, "S6126C15");
    /*is_ambiguous_... S6126C19::S6126C8 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C19*), 0, "S6126C15");
    check_base_class_offset(lv, (S6126C12*)(S6126C16*), ABISELECT(56,48), "S6126C15");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C7*)(S6126C16*), ABISELECT(1216,808), "S6126C15");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C7*)(S6126C16*), ABISELECT(1216,808), "S6126C15");
    check_base_class_offset(lv, (S4227C37*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(1224,812), "S6126C15");
    check_base_class_offset(lv, (S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(1224,812), "S6126C15");
    check_base_class_offset(lv, (S6126C17*)(S6126C16*), ABISELECT(1224,812), "S6126C15");
    check_base_class_offset(lv, (S6126C16*), ABISELECT(56,48), "S6126C15");
    check_base_class_offset(lv, (S6126C16*)(S6126C19*), ABISELECT(56,48), "S6126C15");
    check_base_class_offset(lv, (S6126C8*)(S6126C13*)(S6126C19*), ABISELECT(1296,872), "S6126C15");
    check_base_class_offset(lv, (S4227C37*)(S6126C13*)(S6126C19*), ABISELECT(1296,872), "S6126C15");
    check_base_class_offset(lv, (S6126C13*)(S6126C19*), ABISELECT(1296,872), "S6126C15");
    check_base_class_offset(lv, (S6126C19*)(S6126C18*), ABISELECT(1296,872), "S6126C15");
    check_base_class_offset(lv, (S20997C6*)(S6126C9*)(S6126C20*)(S6126C18*), ABISELECT(1240,820), "S6126C15");
    check_base_class_offset(lv, (S6126C8*)(S6126C9*)(S6126C20*)(S6126C18*), ABISELECT(1232,816), "S6126C15");
    check_base_class_offset(lv, (S6126C9*)(S6126C20*)(S6126C18*), ABISELECT(1232,816), "S6126C15");
    check_base_class_offset(lv, (S6126C20*)(S6126C18*), ABISELECT(1232,816), "S6126C15");
    check_base_class_offset(lv, (S6126C18*), ABISELECT(1232,816), "S6126C15");
    check_field_offset(lv, s6126c15f0, ABISELECT(8,4), "S6126C15.s6126c15f0");
    test_class_info(&lv, &cd_S6126C15);
    dp->~S6126C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C15(Test_S6126C15, "S6126C15", ABISELECT(1392,916));

#else // __cplusplus

extern void _ZN8S6126C15C1Ev();
extern void _ZN8S6126C15D2Ev();
Name_Map name_map_S6126C15[] = {
  NSPAIR(_ZN8S6126C15C1Ev),
  NSPAIR(_ZN8S6126C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C12;
extern VTBL_ENTRY _ZTI8S6126C12[];
extern  VTBL_ENTRY _ZTV8S6126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S6126C17;
extern VTBL_ENTRY _ZTI8S6126C17[];
extern  VTBL_ENTRY _ZTV8S6126C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C17[];
extern Class_Descriptor cd_S6126C16;
extern VTBL_ENTRY _ZTI8S6126C16[];
extern  VTBL_ENTRY _ZTV8S6126C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C16[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C13;
extern VTBL_ENTRY _ZTI8S6126C13[];
extern  VTBL_ENTRY _ZTV8S6126C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C13[];
extern Class_Descriptor cd_S6126C19;
extern VTBL_ENTRY _ZTI8S6126C19[];
extern  VTBL_ENTRY _ZTV8S6126C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C19[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C9;
extern VTBL_ENTRY _ZTI7S6126C9[];
extern  VTBL_ENTRY _ZTV7S6126C9[];
extern Class_Descriptor cd_S6126C20;
extern VTBL_ENTRY _ZTI8S6126C20[];
extern  VTBL_ENTRY _ZTV8S6126C20[];
extern Class_Descriptor cd_S6126C18;
extern VTBL_ENTRY _ZTI8S6126C18[];
extern  VTBL_ENTRY _ZTV8S6126C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C18[];
static Base_Class bases_S6126C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S6126C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6126C12,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1216,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6126C7,    ABISELECT(1216,808), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1224,812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C7,    ABISELECT(1224,812), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S6126C17,    ABISELECT(1224,812), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6126C16,    ABISELECT(56,48), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6126C8,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_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_S4227C37,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C13,    ABISELECT(1296,872), //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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S6126C19,    ABISELECT(1296,872), //bcp->offset
    50, //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
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1240,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C8,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6126C9,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S6126C20,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S6126C18,    ABISELECT(1232,816), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6126C15[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C15D1Ev();
extern void _ZN8S6126C15D0Ev();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C15D1Ev,_ZTv0_n28_N8S6126C15D1Ev)();
extern void ABISELECT(_ZThn56_N8S6126C15D1Ev,_ZThn48_N8S6126C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S6126C15D0Ev,_ZTv0_n28_N8S6126C15D0Ev)();
extern void ABISELECT(_ZThn56_N8S6126C15D0Ev,_ZThn48_N8S6126C15D0Ev)() __attribute__((weak));
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C15D1Ev,_ZTvn760_n28_N8S6126C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C15D0Ev,_ZTvn760_n28_N8S6126C15D0Ev)();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C15D1Ev,_ZTvn764_n28_N8S6126C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C15D0Ev,_ZTvn764_n28_N8S6126C15D0Ev)();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S6126C15D1Ev,_ZTv0_n36_N8S6126C15D1Ev)();
extern void ABISELECT(_ZThn1232_N8S6126C15D1Ev,_ZThn816_N8S6126C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6126C15D0Ev,_ZTv0_n36_N8S6126C15D0Ev)();
extern void ABISELECT(_ZThn1232_N8S6126C15D0Ev,_ZThn816_N8S6126C15D0Ev)() __attribute__((weak));
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6126C15D1Ev,_ZTv0_n32_N8S6126C15D1Ev)();
extern void ABISELECT(_ZThn1296_N8S6126C15D1Ev,_ZThn872_N8S6126C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6126C15D0Ev,_ZTv0_n32_N8S6126C15D0Ev)();
extern void ABISELECT(_ZThn1296_N8S6126C15D0Ev,_ZThn872_N8S6126C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6126C15[] = {
  ABISELECT(1296,872),
  ABISELECT(1232,816),
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C15D0Ev,
  ABISELECT(-56,-48),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C15D1Ev,_ZTv0_n28_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C15D0Ev,_ZTv0_n28_N8S6126C15D0Ev),
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(-1216,-808),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C15D1Ev,_ZTvn760_n28_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C15D0Ev,_ZTvn760_n28_N8S6126C15D0Ev),
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(-1224,-812),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C15D1Ev,_ZTvn764_n28_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C15D0Ev,_ZTvn764_n28_N8S6126C15D0Ev),
  ABISELECT(-1232,-816),
  0,
  ABISELECT(-1232,-816),
  ABISELECT(-1176,-768),
  ABISELECT(-1216,-808),
  ABISELECT(-1232,-816),
  ABISELECT(64,56),
  ABISELECT(-1232,-816),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6126C15D1Ev,_ZTv0_n36_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6126C15D0Ev,_ZTv0_n36_N8S6126C15D0Ev),
  ABISELECT(-1296,-872),
  0,
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  ABISELECT(-1296,-872),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C15D1Ev,_ZTv0_n32_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C15D0Ev,_ZTv0_n32_N8S6126C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S6126C15[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C16D1Ev();
extern void _ZN8S6126C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C15[] = {
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C16D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C128S6126C16__8S6126C15[] = {
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C128S6126C16__8S6126C15[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C15[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__7S6126C78S6126C16__8S6126C15[] = {
  0,
  ABISELECT(1216,808),
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C17D1Ev();
extern void _ZN8S6126C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C15[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C178S6126C16__A1__8S6126C15[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__7S6126C78S6126C178S6126C16__A1__8S6126C15[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C178S6126C16__8S6126C15[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C16__8S6126C15[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn1160_N8S6126C16D1Ev,_ZThn760_N8S6126C16D1Ev)();
extern void ABISELECT(_ZThn1160_N8S6126C16D0Ev,_ZThn760_N8S6126C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C7__8S6126C16__8S6126C15[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S6126C16D1Ev,_ZThn760_N8S6126C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S6126C16D0Ev,_ZThn760_N8S6126C16D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn1168_N8S6126C16D1Ev,_ZThn764_N8S6126C16D1Ev)();
extern void ABISELECT(_ZThn1168_N8S6126C16D0Ev,_ZThn764_N8S6126C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C17__8S6126C16__8S6126C15[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S6126C16D1Ev,_ZThn764_N8S6126C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S6126C16D0Ev,_ZThn764_N8S6126C16D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C18D1Ev();
extern void _ZN8S6126C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C18__8S6126C15[] = {
  ABISELECT(-1232,-816),
  ABISELECT(-1176,-768),
  ABISELECT(-1216,-808),
  ABISELECT(-1232,-816),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C18D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6126C18D1Ev,_ZTv0_n32_N8S6126C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S6126C18D1Ev,_ZThn56_N8S6126C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6126C18D0Ev,_ZTv0_n32_N8S6126C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S6126C18D0Ev,_ZThn56_N8S6126C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C19__8S6126C18__8S6126C15[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C18D1Ev,_ZTv0_n32_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C18D0Ev,_ZTv0_n32_N8S6126C18D0Ev),
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C18__8S6126C15[] = {
  0,
  ABISELECT(1232,816),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C18D1Ev,_ZTv0_n28_N8S6126C18D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S6126C18D0Ev,_ZTv0_n28_N8S6126C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C18__8S6126C15[] = {
  ABISELECT(1176,768),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C18D1Ev,_ZTv0_n28_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C18D0Ev,_ZTv0_n28_N8S6126C18D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C18D1Ev,_ZTvn760_n28_N8S6126C18D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C18D0Ev,_ZTvn760_n28_N8S6126C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C18__8S6126C15[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C18D1Ev,_ZTvn760_n28_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C18D0Ev,_ZTvn760_n28_N8S6126C18D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C18D1Ev,_ZTvn764_n28_N8S6126C18D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C18D0Ev,_ZTvn764_n28_N8S6126C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C18__8S6126C15[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C18D1Ev,_ZTvn764_n28_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C18D0Ev,_ZTvn764_n28_N8S6126C18D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C19D1Ev();
extern void _ZN8S6126C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C19__8S6126C15[] = {
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C19D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C19D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C138S6126C19__8S6126C15[] = {
  ABISELECT(-1280,-864),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C13[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C19__8S6126C15[] = {
  0,
  ABISELECT(1296,872),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C19D1Ev,_ZTv0_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S6126C19D0Ev,_ZTv0_n28_N8S6126C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C19__8S6126C15[] = {
  ABISELECT(1240,824),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C19D1Ev,_ZTv0_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C19D0Ev,_ZTv0_n28_N8S6126C19D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C19D1Ev,_ZTvn760_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C19D0Ev,_ZTvn760_n28_N8S6126C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C19__8S6126C15[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C19D1Ev,_ZTvn760_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C19D0Ev,_ZTvn760_n28_N8S6126C19D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C19D1Ev,_ZTvn764_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C19D0Ev,_ZTvn764_n28_N8S6126C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C19__8S6126C15[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C19D1Ev,_ZTvn764_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C19D0Ev,_ZTvn764_n28_N8S6126C19D0Ev),
};
static  VTT_ENTRY vtt_S6126C15[] = {
  {&(_ZTV8S6126C15[9]),  9,61},
  {&(_ZTV8S6126C15[19]),  19,61},
  {&(_ZTV8S6126C15[9]),  9,61},
  {&(_ZTV8S6126C15[27]),  27,61},
  {&(_ZTV8S6126C15[35]),  35,61},
  {&(_ZTV8S6126C15[47]),  47,61},
  {&(_ZTV8S6126C15[58]),  58,61},
  {&(_tg__ZTV8S6126C16__8S6126C15[6]),  6,9},
  {&(_tg__ZTV8S6126C128S6126C16__8S6126C15[4]),  4,5},
  {&(_tg__ZTV7S6126C8__8S6126C128S6126C16__8S6126C15[3]),  3,4},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C15[5]),  5,8},
  {&(_tg__ZTV7S6126C8__7S6126C78S6126C16__8S6126C15[3]),  3,4},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C15[5]),  5,8},
  {&(_tg__ZTV7S6126C78S6126C178S6126C16__A1__8S6126C15[5]),  5,8},
  {&(_tg__ZTV7S6126C8__7S6126C78S6126C178S6126C16__A1__8S6126C15[3]),  3,4},
  {&(_tg__ZTV7S6126C8__8S6126C178S6126C16__8S6126C15[3]),  3,4},
  {&(_tg__ZTV7S6126C8__8S6126C16__8S6126C15[3]),  3,4},
  {&(_tg__ZTV7S6126C7__8S6126C16__8S6126C15[5]),  5,8},
  {&(_tg__ZTV8S6126C17__8S6126C16__8S6126C15[5]),  5,8},
  {&(_tg__ZTV8S6126C18__8S6126C15[7]),  7,10},
  {&(_tg__ZTV8S6126C19__8S6126C18__8S6126C15[8]),  8,11},
  {&(_tg__ZTV7S6126C8__8S6126C18__8S6126C15[3]),  3,4},
  {&(_tg__ZTV8S6126C16__8S6126C18__8S6126C15[7]),  7,10},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C18__8S6126C15[5]),  5,8},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C18__8S6126C15[5]),  5,8},
  {&(_tg__ZTV8S6126C19__8S6126C15[6]),  6,9},
  {&(_tg__ZTV8S6126C138S6126C19__8S6126C15[3]),  3,4},
  {&(_tg__ZTV7S6126C8__8S6126C19__8S6126C15[3]),  3,4},
  {&(_tg__ZTV8S6126C16__8S6126C19__8S6126C15[7]),  7,10},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C19__8S6126C15[5]),  5,8},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C19__8S6126C15[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S6126C15[];
extern  VTBL_ENTRY _ZTV8S6126C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C15[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C18D0Ev,_ZTv0_n32_N8S6126C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6126C18D0Ev,_ZThn56_N8S6126C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C18D1Ev,_ZTv0_n32_N8S6126C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6126C18D1Ev,_ZThn56_N8S6126C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C15D0Ev,_ZTv0_n32_N8S6126C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N8S6126C15D0Ev,_ZThn872_N8S6126C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C15D1Ev,_ZTv0_n32_N8S6126C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N8S6126C15D1Ev,_ZThn872_N8S6126C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6126C15D0Ev,_ZTv0_n36_N8S6126C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S6126C15D0Ev,_ZThn816_N8S6126C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6126C15D1Ev,_ZTv0_n36_N8S6126C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N8S6126C15D1Ev,_ZThn816_N8S6126C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C15D0Ev,_ZTv0_n28_N8S6126C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6126C15D0Ev,_ZThn48_N8S6126C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C15D1Ev,_ZTv0_n28_N8S6126C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6126C15D1Ev,_ZThn48_N8S6126C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6126C15 = {  "S6126C15", // class name
  bases_S6126C15, 19,
  &(vtc_S6126C15[0]), // expected_vtbl_contents
  &(vtt_S6126C15[0]), // expected_vtt_contents
  ABISELECT(1392,916), // object size
  NSPAIRA(_ZTI8S6126C15),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S6126C15),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6126C15),31, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6126C14  : virtual S6126C13 , virtual S6126C15 {
  ~S6126C14(); // tgen
  S6126C14(); // tgen
};
//SIG(-1 S6126C14) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC4 VBC7{ VBC5 BC8{ VBC3 FC2[9]} BC9{ VBC4 VBC3 BC5 vd} BC10{ BC9 vd}} VBC11{ VBC12{ VBC3 BC2 VBC7 vd} BC13{ BC14{ BC4 BC3} FD}} vd Fp}}


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

static void Test_S6126C14()
{
  extern Class_Descriptor cd_S6126C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(94,242)];
    init_test(&cd_S6126C14, buf);
    S6126C14 *dp, &lv = *(dp=new (buf) S6126C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1488,964), "sizeof(S6126C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6126C14)");
    /*is_ambiguous_... S6126C14::S6126C13 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C13*), ABISELECT(8,4), "S6126C14");
    /*is_ambiguous_... S6126C14::S6126C13 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C13*), ABISELECT(96,48), "S6126C14");
    /*is_ambiguous_... S6126C15::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C15*), ABISELECT(96,48), "S6126C14");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C7*)(S6126C16*), ABISELECT(96,48), "S6126C14");
    check_base_class_offset(lv, (S20997C6*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(96,48), "S6126C14");
    check_base_class_offset(lv, (S20997C6*)(S6126C13*)(S6126C19*), ABISELECT(96,48), "S6126C14");
    /*is_ambiguous_... S6126C14::S6126C13 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C13*), ABISELECT(8,4), "S6126C14");
    /*is_ambiguous_... S6126C14::S6126C13 */ AMB_check_base_class_offset(lv, (S6126C13*), ABISELECT(8,4), "S6126C14");
    /*is_ambiguous_... S6126C16::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C16*), 0, "S6126C14");
    check_base_class_offset(lv, (S6126C8*)(S6126C12*)(S6126C16*), 0, "S6126C14");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C7*)(S6126C16*), 0, "S6126C14");
    check_base_class_offset(lv, (S6126C8*)(S6126C7*)(S6126C17*)(S6126C16*), 0, "S6126C14");
    /*is_ambiguous_... S6126C19::S6126C8 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C19*), 0, "S6126C14");
    check_base_class_offset(lv, (S6126C12*)(S6126C16*), ABISELECT(152,96), "S6126C14");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C7*)(S6126C16*), ABISELECT(1312,856), "S6126C14");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C7*)(S6126C16*), ABISELECT(1312,856), "S6126C14");
    check_base_class_offset(lv, (S4227C37*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(1320,860), "S6126C14");
    check_base_class_offset(lv, (S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(1320,860), "S6126C14");
    check_base_class_offset(lv, (S6126C17*)(S6126C16*), ABISELECT(1320,860), "S6126C14");
    check_base_class_offset(lv, (S6126C16*)(S6126C15*), ABISELECT(152,96), "S6126C14");
    check_base_class_offset(lv, (S6126C16*)(S6126C19*), ABISELECT(152,96), "S6126C14");
    check_base_class_offset(lv, (S6126C8*)(S6126C13*)(S6126C19*), ABISELECT(1392,920), "S6126C14");
    check_base_class_offset(lv, (S4227C37*)(S6126C13*)(S6126C19*), ABISELECT(1392,920), "S6126C14");
    check_base_class_offset(lv, (S6126C13*)(S6126C19*), ABISELECT(1392,920), "S6126C14");
    check_base_class_offset(lv, (S6126C19*)(S6126C18*), ABISELECT(1392,920), "S6126C14");
    check_base_class_offset(lv, (S20997C6*)(S6126C9*)(S6126C20*)(S6126C18*), ABISELECT(1336,868), "S6126C14");
    check_base_class_offset(lv, (S6126C8*)(S6126C9*)(S6126C20*)(S6126C18*), ABISELECT(1328,864), "S6126C14");
    check_base_class_offset(lv, (S6126C9*)(S6126C20*)(S6126C18*), ABISELECT(1328,864), "S6126C14");
    check_base_class_offset(lv, (S6126C20*)(S6126C18*), ABISELECT(1328,864), "S6126C14");
    check_base_class_offset(lv, (S6126C18*)(S6126C15*), ABISELECT(1328,864), "S6126C14");
    check_base_class_offset(lv, (S6126C15*), ABISELECT(136,88), "S6126C14");
    test_class_info(&lv, &cd_S6126C14);
    dp->~S6126C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C14(Test_S6126C14, "S6126C14", ABISELECT(1488,964));

#else // __cplusplus

extern void _ZN8S6126C14C1Ev();
extern void _ZN8S6126C14D1Ev();
Name_Map name_map_S6126C14[] = {
  NSPAIR(_ZN8S6126C14C1Ev),
  NSPAIR(_ZN8S6126C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C13;
extern VTBL_ENTRY _ZTI8S6126C13[];
extern  VTBL_ENTRY _ZTV8S6126C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C12;
extern VTBL_ENTRY _ZTI8S6126C12[];
extern  VTBL_ENTRY _ZTV8S6126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S6126C17;
extern VTBL_ENTRY _ZTI8S6126C17[];
extern  VTBL_ENTRY _ZTV8S6126C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C17[];
extern Class_Descriptor cd_S6126C16;
extern VTBL_ENTRY _ZTI8S6126C16[];
extern  VTBL_ENTRY _ZTV8S6126C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C16[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C13;
extern VTBL_ENTRY _ZTI8S6126C13[];
extern  VTBL_ENTRY _ZTV8S6126C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C13[];
extern Class_Descriptor cd_S6126C19;
extern VTBL_ENTRY _ZTI8S6126C19[];
extern  VTBL_ENTRY _ZTV8S6126C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C19[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C9;
extern VTBL_ENTRY _ZTI7S6126C9[];
extern  VTBL_ENTRY _ZTV7S6126C9[];
extern Class_Descriptor cd_S6126C20;
extern VTBL_ENTRY _ZTI8S6126C20[];
extern  VTBL_ENTRY _ZTV8S6126C20[];
extern Class_Descriptor cd_S6126C18;
extern VTBL_ENTRY _ZTI8S6126C18[];
extern  VTBL_ENTRY _ZTV8S6126C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C18[];
extern Class_Descriptor cd_S6126C15;
extern VTBL_ENTRY _ZTI8S6126C15[];
extern  VTBL_ENTRY _ZTV8S6126C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C15[];
static Base_Class bases_S6126C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6126C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C13,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C8,    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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6126C12,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C7,    ABISELECT(1312,856), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C7,    ABISELECT(1320,860), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S6126C17,    ABISELECT(1320,860), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S6126C16,    ABISELECT(152,96), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S6126C8,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6126C13,    ABISELECT(1392,920), //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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S6126C19,    ABISELECT(1392,920), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6126C8,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6126C9,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S6126C20,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S6126C18,    ABISELECT(1328,864), //bcp->offset
    58, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S6126C15,    ABISELECT(136,88), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S6126C14[];
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C14D1Ev();
extern void _ZN8S6126C14D0Ev();
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6126C14D1Ev,_ZTv0_n40_N8S6126C14D1Ev)();
extern void ABISELECT(_ZThn136_N8S6126C14D1Ev,_ZThn88_N8S6126C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6126C14D0Ev,_ZTv0_n40_N8S6126C14D0Ev)();
extern void ABISELECT(_ZThn136_N8S6126C14D0Ev,_ZThn88_N8S6126C14D0Ev)() __attribute__((weak));
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C14D1Ev,_ZTv0_n28_N8S6126C14D1Ev)();
extern void ABISELECT(_ZThn152_N8S6126C14D1Ev,_ZThn96_N8S6126C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S6126C14D0Ev,_ZTv0_n28_N8S6126C14D0Ev)();
extern void ABISELECT(_ZThn152_N8S6126C14D0Ev,_ZThn96_N8S6126C14D0Ev)() __attribute__((weak));
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C14D1Ev,_ZTvn760_n28_N8S6126C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C14D0Ev,_ZTvn760_n28_N8S6126C14D0Ev)();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C14D1Ev,_ZTvn764_n28_N8S6126C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C14D0Ev,_ZTvn764_n28_N8S6126C14D0Ev)();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S6126C14D1Ev,_ZTv0_n36_N8S6126C14D1Ev)();
extern void ABISELECT(_ZThn1328_N8S6126C14D1Ev,_ZThn864_N8S6126C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6126C14D0Ev,_ZTv0_n36_N8S6126C14D0Ev)();
extern void ABISELECT(_ZThn1328_N8S6126C14D0Ev,_ZThn864_N8S6126C14D0Ev)() __attribute__((weak));
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6126C14D1Ev,_ZTv0_n32_N8S6126C14D1Ev)();
extern void ABISELECT(_ZThn1392_N8S6126C14D1Ev,_ZThn920_N8S6126C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6126C14D0Ev,_ZTv0_n32_N8S6126C14D0Ev)();
extern void ABISELECT(_ZThn1392_N8S6126C14D0Ev,_ZThn920_N8S6126C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6126C14[] = {
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  0,
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C14D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6126C14D1Ev,_ZTv0_n40_N8S6126C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6126C14D0Ev,_ZTv0_n40_N8S6126C14D0Ev),
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C14D1Ev,_ZTv0_n28_N8S6126C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C14D0Ev,_ZTv0_n28_N8S6126C14D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C14D1Ev,_ZTvn760_n28_N8S6126C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C14D0Ev,_ZTvn760_n28_N8S6126C14D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C14D1Ev,_ZTvn764_n28_N8S6126C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C14D0Ev,_ZTvn764_n28_N8S6126C14D0Ev),
  ABISELECT(-1328,-864),
  0,
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6126C14D1Ev,_ZTv0_n36_N8S6126C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6126C14D0Ev,_ZTv0_n36_N8S6126C14D0Ev),
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C14D1Ev,_ZTv0_n32_N8S6126C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C14D0Ev,_ZTv0_n32_N8S6126C14D0Ev),
};
extern VTBL_ENTRY _ZTV8S6126C14[];
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C13__8S6126C14[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C13[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C15D1Ev();
extern void _ZN8S6126C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C15__8S6126C14[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C15D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C15D1Ev,_ZTv0_n28_N8S6126C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S6126C15D1Ev,_ZThn8_N8S6126C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S6126C15D0Ev,_ZTv0_n28_N8S6126C15D0Ev)();
extern void ABISELECT(_ZThn16_N8S6126C15D0Ev,_ZThn8_N8S6126C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C15__8S6126C14[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C15D1Ev,_ZTv0_n28_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C15D0Ev,_ZTv0_n28_N8S6126C15D0Ev),
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C15__8S6126C14[] = {
  0,
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C15D1Ev,_ZTvn760_n28_N8S6126C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C15D0Ev,_ZTvn760_n28_N8S6126C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C15__8S6126C14[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C15D1Ev,_ZTvn760_n28_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C15D0Ev,_ZTvn760_n28_N8S6126C15D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C15D1Ev,_ZTvn764_n28_N8S6126C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C15D0Ev,_ZTvn764_n28_N8S6126C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C15__8S6126C14[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C15D1Ev,_ZTvn764_n28_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C15D0Ev,_ZTvn764_n28_N8S6126C15D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S6126C15D1Ev,_ZTv0_n36_N8S6126C15D1Ev)();
extern void ABISELECT(_ZThn1192_N8S6126C15D1Ev,_ZThn776_N8S6126C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6126C15D0Ev,_ZTv0_n36_N8S6126C15D0Ev)();
extern void ABISELECT(_ZThn1192_N8S6126C15D0Ev,_ZThn776_N8S6126C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C18__8S6126C15__8S6126C14[] = {
  ABISELECT(-1192,-776),
  0,
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6126C15D1Ev,_ZTv0_n36_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6126C15D0Ev,_ZTv0_n36_N8S6126C15D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6126C15D1Ev,_ZTv0_n32_N8S6126C15D1Ev)();
extern void ABISELECT(_ZThn1256_N8S6126C15D1Ev,_ZThn832_N8S6126C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6126C15D0Ev,_ZTv0_n32_N8S6126C15D0Ev)();
extern void ABISELECT(_ZThn1256_N8S6126C15D0Ev,_ZThn832_N8S6126C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C19__8S6126C15__8S6126C14[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C15D1Ev,_ZTv0_n32_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C15D0Ev,_ZTv0_n32_N8S6126C15D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C16D1Ev();
extern void _ZN8S6126C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C14[] = {
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C16D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C128S6126C16__8S6126C14[] = {
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C128S6126C16__8S6126C14[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C14[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__7S6126C78S6126C16__8S6126C14[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C17D1Ev();
extern void _ZN8S6126C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C14[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C178S6126C16__A1__8S6126C14[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__7S6126C78S6126C178S6126C16__A1__8S6126C14[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C178S6126C16__8S6126C14[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C16__8S6126C14[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn1160_N8S6126C16D1Ev,_ZThn760_N8S6126C16D1Ev)();
extern void ABISELECT(_ZThn1160_N8S6126C16D0Ev,_ZThn760_N8S6126C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C7__8S6126C16__8S6126C14[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S6126C16D1Ev,_ZThn760_N8S6126C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S6126C16D0Ev,_ZThn760_N8S6126C16D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn1168_N8S6126C16D1Ev,_ZThn764_N8S6126C16D1Ev)();
extern void ABISELECT(_ZThn1168_N8S6126C16D0Ev,_ZThn764_N8S6126C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C17__8S6126C16__8S6126C14[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S6126C16D1Ev,_ZThn764_N8S6126C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S6126C16D0Ev,_ZThn764_N8S6126C16D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C18D1Ev();
extern void _ZN8S6126C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C18__8S6126C14[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C18D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6126C18D1Ev,_ZTv0_n32_N8S6126C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S6126C18D1Ev,_ZThn56_N8S6126C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6126C18D0Ev,_ZTv0_n32_N8S6126C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S6126C18D0Ev,_ZThn56_N8S6126C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C19__8S6126C18__8S6126C14[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C18D1Ev,_ZTv0_n32_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C18D0Ev,_ZTv0_n32_N8S6126C18D0Ev),
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C18__8S6126C14[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C18D1Ev,_ZTv0_n28_N8S6126C18D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S6126C18D0Ev,_ZTv0_n28_N8S6126C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C18__8S6126C14[] = {
  ABISELECT(1176,768),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C18D1Ev,_ZTv0_n28_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C18D0Ev,_ZTv0_n28_N8S6126C18D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C18D1Ev,_ZTvn760_n28_N8S6126C18D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C18D0Ev,_ZTvn760_n28_N8S6126C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C18__8S6126C14[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C18D1Ev,_ZTvn760_n28_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C18D0Ev,_ZTvn760_n28_N8S6126C18D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C18D1Ev,_ZTvn764_n28_N8S6126C18D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C18D0Ev,_ZTvn764_n28_N8S6126C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C18__8S6126C14[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C18D1Ev,_ZTvn764_n28_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C18D0Ev,_ZTvn764_n28_N8S6126C18D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C19D1Ev();
extern void _ZN8S6126C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C19__8S6126C14[] = {
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C19D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C19D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C138S6126C19__A1__8S6126C14[] = {
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C13[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C19__8S6126C14[] = {
  0,
  ABISELECT(1392,920),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C19D1Ev,_ZTv0_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S6126C19D0Ev,_ZTv0_n28_N8S6126C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C19__8S6126C14[] = {
  ABISELECT(1240,824),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C19D1Ev,_ZTv0_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C19D0Ev,_ZTv0_n28_N8S6126C19D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C19D1Ev,_ZTvn760_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C19D0Ev,_ZTvn760_n28_N8S6126C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C19__8S6126C14[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C19D1Ev,_ZTvn760_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C19D0Ev,_ZTvn760_n28_N8S6126C19D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C19D1Ev,_ZTvn764_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C19D0Ev,_ZTvn764_n28_N8S6126C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C19__8S6126C14[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C19D1Ev,_ZTvn764_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C19D0Ev,_ZTvn764_n28_N8S6126C19D0Ev),
};
static  VTT_ENTRY vtt_S6126C14[] = {
  {&(_ZTV8S6126C14[11]),  11,81},
  {&(_ZTV8S6126C14[18]),  18,81},
  {&(_ZTV8S6126C14[29]),  29,81},
  {&(_ZTV8S6126C14[39]),  39,81},
  {&(_ZTV8S6126C14[11]),  11,81},
  {&(_ZTV8S6126C14[47]),  47,81},
  {&(_ZTV8S6126C14[55]),  55,81},
  {&(_ZTV8S6126C14[67]),  67,81},
  {&(_ZTV8S6126C14[78]),  78,81},
  {&(_tg__ZTV8S6126C13__8S6126C14[3]),  3,4},
  {&(_tg__ZTV8S6126C15__8S6126C14[9]),  9,12},
  {&(_tg__ZTV8S6126C16__8S6126C15__8S6126C14[7]),  7,10},
  {&(_tg__ZTV7S6126C8__8S6126C15__8S6126C14[3]),  3,4},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C15__8S6126C14[5]),  5,8},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C15__8S6126C14[5]),  5,8},
  {&(_tg__ZTV8S6126C18__8S6126C15__8S6126C14[9]),  9,12},
  {&(_tg__ZTV8S6126C19__8S6126C15__8S6126C14[8]),  8,11},
  {&(_tg__ZTV8S6126C16__8S6126C14[6]),  6,9},
  {&(_tg__ZTV8S6126C128S6126C16__8S6126C14[4]),  4,5},
  {&(_tg__ZTV7S6126C8__8S6126C128S6126C16__8S6126C14[3]),  3,4},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C14[5]),  5,8},
  {&(_tg__ZTV7S6126C8__7S6126C78S6126C16__8S6126C14[3]),  3,4},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C14[5]),  5,8},
  {&(_tg__ZTV7S6126C78S6126C178S6126C16__A1__8S6126C14[5]),  5,8},
  {&(_tg__ZTV7S6126C8__7S6126C78S6126C178S6126C16__A1__8S6126C14[3]),  3,4},
  {&(_tg__ZTV7S6126C8__8S6126C178S6126C16__8S6126C14[3]),  3,4},
  {&(_tg__ZTV7S6126C8__8S6126C16__8S6126C14[3]),  3,4},
  {&(_tg__ZTV7S6126C7__8S6126C16__8S6126C14[5]),  5,8},
  {&(_tg__ZTV8S6126C17__8S6126C16__8S6126C14[5]),  5,8},
  {&(_tg__ZTV8S6126C18__8S6126C14[7]),  7,10},
  {&(_tg__ZTV8S6126C19__8S6126C18__8S6126C14[8]),  8,11},
  {&(_tg__ZTV7S6126C8__8S6126C18__8S6126C14[3]),  3,4},
  {&(_tg__ZTV8S6126C16__8S6126C18__8S6126C14[7]),  7,10},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C18__8S6126C14[5]),  5,8},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C18__8S6126C14[5]),  5,8},
  {&(_tg__ZTV8S6126C19__8S6126C14[6]),  6,9},
  {&(_tg__ZTV8S6126C138S6126C19__A1__8S6126C14[3]),  3,4},
  {&(_tg__ZTV7S6126C8__8S6126C19__8S6126C14[3]),  3,4},
  {&(_tg__ZTV8S6126C16__8S6126C19__8S6126C14[7]),  7,10},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C19__8S6126C14[5]),  5,8},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C19__8S6126C14[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S6126C14[];
extern  VTBL_ENTRY _ZTV8S6126C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C14[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C18D0Ev,_ZTv0_n32_N8S6126C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6126C18D0Ev,_ZThn56_N8S6126C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C18D1Ev,_ZTv0_n32_N8S6126C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6126C18D1Ev,_ZThn56_N8S6126C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C15D0Ev,_ZTv0_n32_N8S6126C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N8S6126C15D0Ev,_ZThn832_N8S6126C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C15D1Ev,_ZTv0_n32_N8S6126C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N8S6126C15D1Ev,_ZThn832_N8S6126C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6126C15D0Ev,_ZTv0_n36_N8S6126C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S6126C15D0Ev,_ZThn776_N8S6126C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6126C15D1Ev,_ZTv0_n36_N8S6126C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S6126C15D1Ev,_ZThn776_N8S6126C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C15D0Ev,_ZTv0_n28_N8S6126C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6126C15D0Ev,_ZThn8_N8S6126C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C15D1Ev,_ZTv0_n28_N8S6126C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6126C15D1Ev,_ZThn8_N8S6126C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C14D0Ev,_ZTv0_n32_N8S6126C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S6126C14D0Ev,_ZThn920_N8S6126C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C14D1Ev,_ZTv0_n32_N8S6126C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N8S6126C14D1Ev,_ZThn920_N8S6126C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6126C14D0Ev,_ZTv0_n36_N8S6126C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S6126C14D0Ev,_ZThn864_N8S6126C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6126C14D1Ev,_ZTv0_n36_N8S6126C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N8S6126C14D1Ev,_ZThn864_N8S6126C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C14D0Ev,_ZTv0_n28_N8S6126C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6126C14D0Ev,_ZThn96_N8S6126C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C14D1Ev,_ZTv0_n28_N8S6126C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S6126C14D1Ev,_ZThn96_N8S6126C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6126C14D0Ev,_ZTv0_n40_N8S6126C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6126C14D0Ev,_ZThn88_N8S6126C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6126C14D1Ev,_ZTv0_n40_N8S6126C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S6126C14D1Ev,_ZThn88_N8S6126C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6126C14 = {  "S6126C14", // class name
  bases_S6126C14, 23,
  &(vtc_S6126C14[0]), // expected_vtbl_contents
  &(vtt_S6126C14[0]), // expected_vtt_contents
  ABISELECT(1488,964), // object size
  NSPAIRA(_ZTI8S6126C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S6126C14),81, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6126C14),41, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6126C1  : S4227C37 , S6126C3 , S20997C6 , S6126C14 {
  virtual  ~S6126C1(); // _ZN7S6126C1D2Ev
  S6126C1(); // tgen
};
//SIG(1 S6126C1) C1{ BC2{ m} BC3{ VBC4{ VBC5{ m FL[5]} BC6{ VBC2 VBC7{ VBC5 VBC8{ v1} BC2 vd} v2} VBC9{ BC5 BC8}} BC10{ VBC8 VBC7 VBC11{ m FL[4]} VBC6 VBC12{ VBC8 FC13{ BC8 VBC5 BC2 Fp[10]}[9]} vd} v3} BC5 BC14{ VBC13 VBC15{ VBC5 VBC16{ VBC2 BC12 BC7 BC17{ BC7 vd}} VBC18{ VBC19{ VBC8 BC13 VBC16 vd} BC20{ BC9 FD}} vd Fp}} vd}


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

static void Test_S6126C1()
{
  extern Class_Descriptor cd_S6126C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(175,463)];
    init_test(&cd_S6126C1, buf);
    S6126C1 *dp, &lv = *(dp=new (buf) S6126C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2784,1848), "sizeof(S6126C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6126C1)");
    /*is_ambiguous_... S6126C1::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S6126C1");
    /*is_ambiguous_... S6126C4::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C4*), ABISELECT(64,52), "S6126C1");
    /*is_ambiguous_... S6126C1::S6126C7 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C7*), ABISELECT(64,52), "S6126C1");
    /*is_ambiguous_... S6126C1::S6126C13 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C13*), ABISELECT(64,52), "S6126C1");
    /*is_ambiguous_... S6126C15::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C15*), ABISELECT(64,52), "S6126C1");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C7*)(S6126C16*), ABISELECT(64,52), "S6126C1");
    check_base_class_offset(lv, (S20997C6*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(64,52), "S6126C1");
    check_base_class_offset(lv, (S20997C6*)(S6126C13*)(S6126C19*), ABISELECT(64,52), "S6126C1");
    /*is_ambiguous_... S6126C6::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C6*)(S6126C4*), ABISELECT(104,92), "S6126C1");
    /*is_ambiguous_... S6126C1::S6126C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C6*), ABISELECT(104,92), "S6126C1");
    /*is_ambiguous_... S6126C16::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C16*), ABISELECT(104,92), "S6126C1");
    /*is_ambiguous_... S6126C1::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C7*), ABISELECT(56,48), "S6126C1");
    check_base_class_offset(lv, (S6126C8*)(S6126C10*)(S6126C3*), ABISELECT(56,48), "S6126C1");
    /*is_ambiguous_... S6126C1::S6126C12 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C12*), ABISELECT(56,48), "S6126C1");
    check_base_class_offset(lv, (S6126C8*)(S6126C12*)(S6126C16*), ABISELECT(56,48), "S6126C1");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C7*)(S6126C16*), ABISELECT(56,48), "S6126C1");
    check_base_class_offset(lv, (S6126C8*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(56,48), "S6126C1");
    /*is_ambiguous_... S6126C19::S6126C8 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C19*), ABISELECT(56,48), "S6126C1");
    /*is_ambiguous_... S6126C1::S6126C7 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C7*), ABISELECT(56,48), "S6126C1");
    check_base_class_offset(lv, (S6126C7*)(S6126C6*)(S6126C4*), ABISELECT(56,48), "S6126C1");
    check_base_class_offset(lv, (S6126C7*)(S6126C10*)(S6126C3*), ABISELECT(56,48), "S6126C1");
    /*is_ambiguous_... S6126C1::S6126C6 */ AMB_check_base_class_offset(lv, (S6126C7*)(S6126C6*), ABISELECT(56,48), "S6126C1");
    check_base_class_offset(lv, (S6126C6*)(S6126C4*), ABISELECT(56,48), "S6126C1");
    /*is_ambiguous_... S6126C1::S6126C9 */ AMB_check_base_class_offset(lv, (S20997C6*)(S6126C9*), ABISELECT(112,96), "S6126C1");
    /*is_ambiguous_... S6126C1::S6126C9 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C9*), ABISELECT(104,92), "S6126C1");
    check_base_class_offset(lv, (S6126C9*)(S6126C4*), ABISELECT(104,92), "S6126C1");
    check_base_class_offset(lv, (S6126C4*)(S6126C3*), ABISELECT(56,48), "S6126C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S6126C10*)(S6126C3*), ABISELECT(152,136), "S6126C1");
    check_base_class_offset(lv, (S6126C6*)(S6126C10*)(S6126C3*), 0, "S6126C1");
    check_base_class_offset(lv, (S6126C12*)(S6126C10*)(S6126C3*), ABISELECT(184,168), "S6126C1");
    check_base_class_offset(lv, (S6126C10*)(S6126C3*), 0, "S6126C1");
    check_base_class_offset(lv, (S6126C3*), 0, "S6126C1");
    /*is_ambiguous_... S6126C1::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S6126C1");
    /*is_ambiguous_... S6126C1::S6126C13 */ AMB_check_base_class_offset(lv, (S6126C8*)(S6126C13*), ABISELECT(1344,928), "S6126C1");
    /*is_ambiguous_... S6126C1::S6126C13 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C13*), ABISELECT(1344,928), "S6126C1");
    /*is_ambiguous_... S6126C14::S6126C13 */ AMB_check_base_class_offset(lv, (S6126C13*)(S6126C14*), ABISELECT(1344,928), "S6126C1");
    check_base_class_offset(lv, (S6126C12*)(S6126C16*), ABISELECT(1448,980), "S6126C1");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S4227C37*)(S6126C7*)(S6126C16*), ABISELECT(2608,1740), "S6126C1");
    /*is_ambiguous_... S6126C16::S6126C7 */ AMB_check_base_class_offset(lv, (S6126C7*)(S6126C16*), ABISELECT(2608,1740), "S6126C1");
    check_base_class_offset(lv, (S4227C37*)(S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(2616,1744), "S6126C1");
    check_base_class_offset(lv, (S6126C7*)(S6126C17*)(S6126C16*), ABISELECT(2616,1744), "S6126C1");
    check_base_class_offset(lv, (S6126C17*)(S6126C16*), ABISELECT(2616,1744), "S6126C1");
    check_base_class_offset(lv, (S6126C16*)(S6126C15*), ABISELECT(1448,980), "S6126C1");
    check_base_class_offset(lv, (S6126C16*)(S6126C19*), ABISELECT(1448,980), "S6126C1");
    check_base_class_offset(lv, (S6126C8*)(S6126C13*)(S6126C19*), ABISELECT(2688,1804), "S6126C1");
    check_base_class_offset(lv, (S4227C37*)(S6126C13*)(S6126C19*), ABISELECT(2688,1804), "S6126C1");
    check_base_class_offset(lv, (S6126C13*)(S6126C19*), ABISELECT(2688,1804), "S6126C1");
    check_base_class_offset(lv, (S6126C19*)(S6126C18*), ABISELECT(2688,1804), "S6126C1");
    check_base_class_offset(lv, (S20997C6*)(S6126C9*)(S6126C20*)(S6126C18*), ABISELECT(2632,1752), "S6126C1");
    check_base_class_offset(lv, (S6126C8*)(S6126C9*)(S6126C20*)(S6126C18*), ABISELECT(2624,1748), "S6126C1");
    check_base_class_offset(lv, (S6126C9*)(S6126C20*)(S6126C18*), ABISELECT(2624,1748), "S6126C1");
    check_base_class_offset(lv, (S6126C20*)(S6126C18*), ABISELECT(2624,1748), "S6126C1");
    check_base_class_offset(lv, (S6126C18*)(S6126C15*), ABISELECT(2624,1748), "S6126C1");
    check_base_class_offset(lv, (S6126C15*)(S6126C14*), ABISELECT(1432,972), "S6126C1");
    check_base_class_offset(lv, (S6126C14*), ABISELECT(48,44), "S6126C1");
    test_class_info(&lv, &cd_S6126C1);
    dp->~S6126C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6126C1(Test_S6126C1, "S6126C1", ABISELECT(2784,1848));

#else // __cplusplus

extern void _ZN7S6126C1C1Ev();
extern void _ZN7S6126C1D2Ev();
Name_Map name_map_S6126C1[] = {
  NSPAIR(_ZN7S6126C1C1Ev),
  NSPAIR(_ZN7S6126C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S6126C6;
extern VTBL_ENTRY _ZTI7S6126C6[];
extern  VTBL_ENTRY _ZTV7S6126C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C9;
extern VTBL_ENTRY _ZTI7S6126C9[];
extern  VTBL_ENTRY _ZTV7S6126C9[];
extern Class_Descriptor cd_S6126C4;
extern VTBL_ENTRY _ZTI7S6126C4[];
extern  VTBL_ENTRY _ZTV7S6126C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C4[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S6126C6;
extern VTBL_ENTRY _ZTI7S6126C6[];
extern  VTBL_ENTRY _ZTV7S6126C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C6[];
extern Class_Descriptor cd_S6126C12;
extern VTBL_ENTRY _ZTI8S6126C12[];
extern  VTBL_ENTRY _ZTV8S6126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C12[];
extern Class_Descriptor cd_S6126C10;
extern VTBL_ENTRY _ZTI8S6126C10[];
extern  VTBL_ENTRY _ZTV8S6126C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C10[];
extern Class_Descriptor cd_S6126C3;
extern VTBL_ENTRY _ZTI7S6126C3[];
extern  VTBL_ENTRY _ZTV7S6126C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C3[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C13;
extern VTBL_ENTRY _ZTI8S6126C13[];
extern  VTBL_ENTRY _ZTV8S6126C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C13[];
extern Class_Descriptor cd_S6126C12;
extern VTBL_ENTRY _ZTI8S6126C12[];
extern  VTBL_ENTRY _ZTV8S6126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C7;
extern VTBL_ENTRY _ZTI7S6126C7[];
extern  VTBL_ENTRY _ZTV7S6126C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C7[];
extern Class_Descriptor cd_S6126C17;
extern VTBL_ENTRY _ZTI8S6126C17[];
extern  VTBL_ENTRY _ZTV8S6126C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C17[];
extern Class_Descriptor cd_S6126C16;
extern VTBL_ENTRY _ZTI8S6126C16[];
extern  VTBL_ENTRY _ZTV8S6126C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C16[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S6126C13;
extern VTBL_ENTRY _ZTI8S6126C13[];
extern  VTBL_ENTRY _ZTV8S6126C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C13[];
extern Class_Descriptor cd_S6126C19;
extern VTBL_ENTRY _ZTI8S6126C19[];
extern  VTBL_ENTRY _ZTV8S6126C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C19[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6126C8;
extern VTBL_ENTRY _ZTI7S6126C8[];
extern  VTBL_ENTRY _ZTV7S6126C8[];
extern Class_Descriptor cd_S6126C9;
extern VTBL_ENTRY _ZTI7S6126C9[];
extern  VTBL_ENTRY _ZTV7S6126C9[];
extern Class_Descriptor cd_S6126C20;
extern VTBL_ENTRY _ZTI8S6126C20[];
extern  VTBL_ENTRY _ZTV8S6126C20[];
extern Class_Descriptor cd_S6126C18;
extern VTBL_ENTRY _ZTI8S6126C18[];
extern  VTBL_ENTRY _ZTV8S6126C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C18[];
extern Class_Descriptor cd_S6126C15;
extern VTBL_ENTRY _ZTI8S6126C15[];
extern  VTBL_ENTRY _ZTV8S6126C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C15[];
extern Class_Descriptor cd_S6126C14;
extern VTBL_ENTRY _ZTI8S6126C14[];
extern  VTBL_ENTRY _ZTV8S6126C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6126C14[];
static Base_Class bases_S6126C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(104,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, 1},
  {&cd_S6126C8,    ABISELECT(56,48), //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
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6126C7,    ABISELECT(56,48), //bcp->offset
    -1, //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
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6126C6,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(112,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
    9, //immediately_derived
  0, 0},
  {&cd_S6126C8,    ABISELECT(104,92), //bcp->offset
    52, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S6126C9,    ABISELECT(104,92), //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
    4, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S6126C4,    ABISELECT(56,48), //bcp->offset
    38, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S10258C6_nt,    ABISELECT(152,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S6126C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S6126C12,    ABISELECT(184,168), //bcp->offset
    56, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S6126C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S6126C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6126C8,    ABISELECT(1344,928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1344,928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S6126C13,    ABISELECT(1344,928), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S6126C12,    ABISELECT(1448,980), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2608,1740), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S6126C7,    ABISELECT(2608,1740), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2616,1744), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S6126C7,    ABISELECT(2616,1744), //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
    13, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S6126C17,    ABISELECT(2616,1744), //bcp->offset
    97, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S6126C16,    ABISELECT(1448,980), //bcp->offset
    79, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S6126C8,    ABISELECT(2688,1804), //bcp->offset
    -1, //bcp->virtual_function_table_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
    29, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2688,1804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6126C13,    ABISELECT(2688,1804), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S6126C19,    ABISELECT(2688,1804), //bcp->offset
    117, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(2632,1752), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S6126C8,    ABISELECT(2624,1748), //bcp->offset
    -1, //bcp->virtual_function_table_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
    33, //immediately_derived
  0, 0},
  {&cd_S6126C9,    ABISELECT(2624,1748), //bcp->offset
    -1, //bcp->virtual_function_table_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
    34, //immediately_derived
  0, 0},
  {&cd_S6126C20,    ABISELECT(2624,1748), //bcp->offset
    -1, //bcp->virtual_function_table_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
    35, //immediately_derived
  0, 0},
  {&cd_S6126C18,    ABISELECT(2624,1748), //bcp->offset
    105, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    36, //immediately_derived
  0, 1},
  {&cd_S6126C15,    ABISELECT(1432,972), //bcp->offset
    66, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S6126C14,    ABISELECT(48,44), //bcp->offset
    24, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6126C1[];
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C1D1Ev,_ZTv0_n24_N7S6126C1D1Ev)();
extern void _ZN7S6126C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C1D0Ev,_ZTv0_n24_N7S6126C1D0Ev)();
extern void _ZN7S6126C1D0Ev() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
extern void _ZN7S6126C32v3Ev();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn48_N7S6126C1D1Ev,_ZThn44_N7S6126C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S6126C1D0Ev,_ZThn44_N7S6126C1D0Ev)();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C1D1Ev,_ZTv0_n24_N7S6126C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S6126C1D1Ev,_ZThn48_N7S6126C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C1D0Ev,_ZTv0_n24_N7S6126C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S6126C1D0Ev,_ZThn48_N7S6126C1D0Ev)() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N7S6126C1D1Ev,_ZTv0_n40_N7S6126C1D1Ev)();
extern void ABISELECT(_ZThn1432_N7S6126C1D1Ev,_ZThn972_N7S6126C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6126C1D0Ev,_ZTv0_n40_N7S6126C1D0Ev)();
extern void ABISELECT(_ZThn1432_N7S6126C1D0Ev,_ZThn972_N7S6126C1D0Ev)() __attribute__((weak));
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N7S6126C1D1Ev,_ZTv0_n28_N7S6126C1D1Ev)();
extern void ABISELECT(_ZThn1448_N7S6126C1D1Ev,_ZThn980_N7S6126C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S6126C1D0Ev,_ZTv0_n28_N7S6126C1D0Ev)();
extern void ABISELECT(_ZThn1448_N7S6126C1D0Ev,_ZThn980_N7S6126C1D0Ev)() __attribute__((weak));
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S6126C1D1Ev,_ZTvn760_n28_N7S6126C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S6126C1D0Ev,_ZTvn760_n28_N7S6126C1D0Ev)();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S6126C1D1Ev,_ZTvn764_n28_N7S6126C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S6126C1D0Ev,_ZTvn764_n28_N7S6126C1D0Ev)();
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n72_N7S6126C1D1Ev,_ZTv0_n36_N7S6126C1D1Ev)();
extern void ABISELECT(_ZThn2624_N7S6126C1D1Ev,_ZThn1748_N7S6126C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6126C1D0Ev,_ZTv0_n36_N7S6126C1D0Ev)();
extern void ABISELECT(_ZThn2624_N7S6126C1D0Ev,_ZThn1748_N7S6126C1D0Ev)() __attribute__((weak));
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S6126C1D1Ev,_ZTv0_n32_N7S6126C1D1Ev)();
extern void ABISELECT(_ZThn2688_N7S6126C1D1Ev,_ZThn1804_N7S6126C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S6126C1D0Ev,_ZTv0_n32_N7S6126C1D0Ev)();
extern void ABISELECT(_ZThn2688_N7S6126C1D0Ev,_ZThn1804_N7S6126C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S6126C1[] = {
  ABISELECT(2688,1804),
  ABISELECT(2624,1748),
  ABISELECT(1448,980),
  ABISELECT(1432,972),
  ABISELECT(1344,928),
  ABISELECT(104,92),
  ABISELECT(56,48),
  ABISELECT(184,168),
  0,
  ABISELECT(152,136),
  0,
  ABISELECT(56,48),
  ABISELECT(104,92),
  0,
  ABISELECT(56,48),
  ABISELECT(64,52),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C1[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C1D1Ev,_ZTv0_n24_N7S6126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C1D0Ev,_ZTv0_n24_N7S6126C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
  (VTBL_ENTRY)&_ZN7S6126C32v3Ev,
  ABISELECT(2640,1760),
  ABISELECT(2576,1704),
  ABISELECT(8,4),
  ABISELECT(56,48),
  ABISELECT(1400,936),
  ABISELECT(1384,928),
  ABISELECT(16,8),
  ABISELECT(1296,884),
  ABISELECT(8,4),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI7S6126C1[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S6126C1D1Ev,_ZThn44_N7S6126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S6126C1D0Ev,_ZThn44_N7S6126C1D0Ev),
  0,
  ABISELECT(48,44),
  0,
  ABISELECT(48,44),
  ABISELECT(-56,-48),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S6126C1[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C1D1Ev,_ZTv0_n24_N7S6126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C1D0Ev,_ZTv0_n24_N7S6126C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
  0,
  ABISELECT(-104,-92),
  (VTBL_ENTRY)&(_ZTI7S6126C1[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-184,-168),
  (VTBL_ENTRY)&(_ZTI7S6126C1[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  0,
  ABISELECT(-1280,-876),
  ABISELECT(-1344,-928),
  (VTBL_ENTRY)&(_ZTI7S6126C1[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  ABISELECT(-1432,-972),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-1376,-924),
  ABISELECT(-1328,-880),
  ABISELECT(16,8),
  ABISELECT(-1368,-920),
  ABISELECT(-1376,-924),
  ABISELECT(-1432,-972),
  (VTBL_ENTRY)&(_ZTI7S6126C1[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6126C1D1Ev,_ZTv0_n40_N7S6126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6126C1D0Ev,_ZTv0_n40_N7S6126C1D0Ev),
  ABISELECT(-1448,-980),
  ABISELECT(-1384,-928),
  ABISELECT(-1344,-888),
  ABISELECT(-1392,-932),
  ABISELECT(-1392,-932),
  ABISELECT(-1448,-980),
  (VTBL_ENTRY)&(_ZTI7S6126C1[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6126C1D1Ev,_ZTv0_n28_N7S6126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S6126C1D0Ev,_ZTv0_n28_N7S6126C1D0Ev),
  ABISELECT(-2552,-1692),
  ABISELECT(-2544,-1688),
  ABISELECT(-2552,-1692),
  ABISELECT(-2608,-1740),
  (VTBL_ENTRY)&(_ZTI7S6126C1[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S6126C1D1Ev,_ZTvn760_n28_N7S6126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S6126C1D0Ev,_ZTvn760_n28_N7S6126C1D0Ev),
  ABISELECT(-2560,-1696),
  ABISELECT(-2552,-1692),
  ABISELECT(-2560,-1696),
  ABISELECT(-2616,-1744),
  (VTBL_ENTRY)&(_ZTI7S6126C1[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S6126C1D1Ev,_ZTvn764_n28_N7S6126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S6126C1D0Ev,_ZTvn764_n28_N7S6126C1D0Ev),
  ABISELECT(-2624,-1748),
  0,
  ABISELECT(-2520,-1656),
  ABISELECT(-1176,-768),
  ABISELECT(-2560,-1696),
  ABISELECT(-2568,-1700),
  ABISELECT(64,56),
  ABISELECT(-2624,-1748),
  (VTBL_ENTRY)&(_ZTI7S6126C1[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6126C1D1Ev,_ZTv0_n36_N7S6126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6126C1D0Ev,_ZTv0_n36_N7S6126C1D0Ev),
  ABISELECT(-2688,-1804),
  0,
  ABISELECT(-2584,-1712),
  ABISELECT(-1240,-824),
  ABISELECT(-2632,-1756),
  ABISELECT(-2624,-1752),
  ABISELECT(-2688,-1804),
  (VTBL_ENTRY)&(_ZTI7S6126C1[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6126C1D1Ev,_ZTv0_n32_N7S6126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S6126C1D0Ev,_ZTv0_n32_N7S6126C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S6126C1[];
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C3D1Ev,_ZTv0_n24_N7S6126C3D1Ev)();
extern void _ZN7S6126C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C3D0Ev,_ZTv0_n24_N7S6126C3D0Ev)();
extern void _ZN7S6126C3D0Ev() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
extern void _ZN7S6126C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C3__7S6126C1[] = {
  ABISELECT(104,92),
  ABISELECT(56,48),
  ABISELECT(184,168),
  0,
  ABISELECT(152,136),
  0,
  ABISELECT(56,48),
  ABISELECT(104,92),
  0,
  ABISELECT(56,48),
  ABISELECT(64,52),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C3[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C3D1Ev,_ZTv0_n24_N7S6126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C3D0Ev,_ZTv0_n24_N7S6126C3D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
  (VTBL_ENTRY)&_ZN7S6126C32v3Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6126C10D1Ev,_ZTv0_n24_N8S6126C10D1Ev)();
extern void _ZN8S6126C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6126C10D0Ev,_ZTv0_n24_N8S6126C10D0Ev)();
extern void _ZN8S6126C10D0Ev() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C107S6126C3__7S6126C1[] = {
  ABISELECT(184,168),
  0,
  ABISELECT(152,136),
  0,
  ABISELECT(56,48),
  ABISELECT(104,92),
  0,
  ABISELECT(56,48),
  ABISELECT(64,52),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C10[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6126C10D1Ev,_ZTv0_n24_N8S6126C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6126C10D0Ev,_ZTv0_n24_N8S6126C10D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S6126C10D1Ev,_ZTv0_n24_N8S6126C10D1Ev)();
extern void ABISELECT(_ZThn56_N8S6126C10D1Ev,_ZThn48_N8S6126C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S6126C10D0Ev,_ZTv0_n24_N8S6126C10D0Ev)();
extern void ABISELECT(_ZThn56_N8S6126C10D0Ev,_ZThn48_N8S6126C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6126C7__8S6126C107S6126C3__7S6126C1[] = {
  ABISELECT(-56,-48),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S6126C10[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6126C10D1Ev,_ZTv0_n24_N8S6126C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S6126C10D0Ev,_ZTv0_n24_N8S6126C10D0Ev),
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C12__8S6126C107S6126C3__7S6126C1[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-184,-168),
  (VTBL_ENTRY)&(_ZTI8S6126C10[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C3D1Ev,_ZTv0_n24_N7S6126C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S6126C3D1Ev,_ZThn48_N7S6126C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C3D0Ev,_ZTv0_n24_N7S6126C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S6126C3D0Ev,_ZThn48_N7S6126C3D0Ev)() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C4__7S6126C3__7S6126C1[] = {
  0,
  ABISELECT(48,44),
  0,
  ABISELECT(48,44),
  ABISELECT(-56,-48),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S6126C3[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C3D1Ev,_ZTv0_n24_N7S6126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C3D0Ev,_ZTv0_n24_N7S6126C3D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C87S6126C9__A1__7S6126C3__7S6126C1[] = {
  0,
  ABISELECT(-104,-92),
  (VTBL_ENTRY)&(_ZTI7S6126C3[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C12__7S6126C3__7S6126C1[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-184,-168),
  (VTBL_ENTRY)&(_ZTI7S6126C3[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C14D1Ev();
extern void _ZN8S6126C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C14__7S6126C1[] = {
  ABISELECT(2640,1760),
  ABISELECT(2576,1704),
  ABISELECT(8,4),
  ABISELECT(56,48),
  ABISELECT(1400,936),
  ABISELECT(1384,928),
  ABISELECT(16,8),
  ABISELECT(1296,884),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C14D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C14D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C13__8S6126C14__7S6126C1[] = {
  0,
  ABISELECT(-1280,-876),
  ABISELECT(-1296,-884),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S6126C14D1Ev,_ZTv0_n40_N8S6126C14D1Ev)();
extern void ABISELECT(_ZThn1384_N8S6126C14D1Ev,_ZThn928_N8S6126C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S6126C14D0Ev,_ZTv0_n40_N8S6126C14D0Ev)();
extern void ABISELECT(_ZThn1384_N8S6126C14D0Ev,_ZThn928_N8S6126C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C15__8S6126C14__7S6126C1[] = {
  ABISELECT(-1384,-928),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-1376,-924),
  ABISELECT(-1328,-880),
  ABISELECT(16,8),
  ABISELECT(-1368,-920),
  ABISELECT(-1376,-924),
  ABISELECT(-1384,-928),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6126C14D1Ev,_ZTv0_n40_N8S6126C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S6126C14D0Ev,_ZTv0_n40_N8S6126C14D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C14D1Ev,_ZTv0_n28_N8S6126C14D1Ev)();
extern void ABISELECT(_ZThn1400_N8S6126C14D1Ev,_ZThn936_N8S6126C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S6126C14D0Ev,_ZTv0_n28_N8S6126C14D0Ev)();
extern void ABISELECT(_ZThn1400_N8S6126C14D0Ev,_ZThn936_N8S6126C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C14__7S6126C1[] = {
  ABISELECT(-1400,-936),
  ABISELECT(-1384,-928),
  ABISELECT(-1344,-888),
  ABISELECT(-1392,-932),
  ABISELECT(-1392,-932),
  ABISELECT(-1400,-936),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C14D1Ev,_ZTv0_n28_N8S6126C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C14D0Ev,_ZTv0_n28_N8S6126C14D0Ev),
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__A1__8S6126C14__7S6126C1[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C14D1Ev,_ZTvn760_n28_N8S6126C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C14D0Ev,_ZTvn760_n28_N8S6126C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C14__7S6126C1[] = {
  ABISELECT(-2552,-1692),
  ABISELECT(-2544,-1688),
  ABISELECT(-2552,-1692),
  ABISELECT(-2560,-1696),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C14D1Ev,_ZTvn760_n28_N8S6126C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C14D0Ev,_ZTvn760_n28_N8S6126C14D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C14D1Ev,_ZTvn764_n28_N8S6126C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C14D0Ev,_ZTvn764_n28_N8S6126C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C14__7S6126C1[] = {
  ABISELECT(-2560,-1696),
  ABISELECT(-2552,-1692),
  ABISELECT(-2560,-1696),
  ABISELECT(-2568,-1700),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C14D1Ev,_ZTvn764_n28_N8S6126C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C14D0Ev,_ZTvn764_n28_N8S6126C14D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S6126C14D1Ev,_ZTv0_n36_N8S6126C14D1Ev)();
extern void ABISELECT(_ZThn2576_N8S6126C14D1Ev,_ZThn1704_N8S6126C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6126C14D0Ev,_ZTv0_n36_N8S6126C14D0Ev)();
extern void ABISELECT(_ZThn2576_N8S6126C14D0Ev,_ZThn1704_N8S6126C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C18__8S6126C14__7S6126C1[] = {
  ABISELECT(-2576,-1704),
  0,
  ABISELECT(-2520,-1656),
  ABISELECT(-1176,-768),
  ABISELECT(-2560,-1696),
  ABISELECT(-2568,-1700),
  ABISELECT(64,56),
  ABISELECT(-2576,-1704),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6126C14D1Ev,_ZTv0_n36_N8S6126C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6126C14D0Ev,_ZTv0_n36_N8S6126C14D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6126C14D1Ev,_ZTv0_n32_N8S6126C14D1Ev)();
extern void ABISELECT(_ZThn2640_N8S6126C14D1Ev,_ZThn1760_N8S6126C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6126C14D0Ev,_ZTv0_n32_N8S6126C14D0Ev)();
extern void ABISELECT(_ZThn2640_N8S6126C14D0Ev,_ZThn1760_N8S6126C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C19__8S6126C14__7S6126C1[] = {
  ABISELECT(-2640,-1760),
  0,
  ABISELECT(-2584,-1712),
  ABISELECT(-1240,-824),
  ABISELECT(-2632,-1756),
  ABISELECT(-2624,-1752),
  ABISELECT(-2640,-1760),
  (VTBL_ENTRY)&(_ZTI8S6126C14[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C14D1Ev,_ZTv0_n32_N8S6126C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C14D0Ev,_ZTv0_n32_N8S6126C14D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C4D1Ev,_ZTv0_n24_N7S6126C4D1Ev)();
extern void _ZN7S6126C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C4D0Ev,_ZTv0_n24_N7S6126C4D0Ev)();
extern void _ZN7S6126C4D0Ev() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C4__7S6126C1[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C4[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C4D1Ev,_ZTv0_n24_N7S6126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C4D0Ev,_ZTv0_n24_N7S6126C4D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev)();
extern void _ZN7S6126C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev)();
extern void _ZN7S6126C6D0Ev() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C67S6126C4__7S6126C1[] = {
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C6[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C87S6126C9__A1__7S6126C4__7S6126C1[] = {
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI7S6126C4[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C7__7S6126C1[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev)();
extern void _ZN7S6126C6D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev)();
extern void _ZN7S6126C6D0Ev() __attribute__((weak));
extern void _ZN7S6126C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C6__A1__7S6126C1[] = {
  ABISELECT(56,48),
  ABISELECT(104,92),
  0,
  ABISELECT(56,48),
  ABISELECT(64,52),
  ABISELECT(56,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C6[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev),
  (VTBL_ENTRY)&_ZN7S6126C62v2Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev)();
extern void ABISELECT(_ZThn56_N7S6126C6D1Ev,_ZThn48_N7S6126C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev)();
extern void ABISELECT(_ZThn56_N7S6126C6D0Ev,_ZThn48_N7S6126C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S6126C7__7S6126C6__A1__7S6126C1[] = {
  ABISELECT(-56,-48),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI7S6126C6[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev),
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C12__7S6126C1[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C12__7S6126C1[] = {
  0,
  ABISELECT(128,120),
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C13__7S6126C1[] = {
  ABISELECT(-1280,-876),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C13[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C15D1Ev();
extern void _ZN8S6126C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C15__7S6126C1[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-1376,-924),
  ABISELECT(-1328,-880),
  ABISELECT(16,8),
  ABISELECT(-1368,-920),
  ABISELECT(-1376,-924),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C15D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C15D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C15D1Ev,_ZTv0_n28_N8S6126C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S6126C15D1Ev,_ZThn8_N8S6126C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S6126C15D0Ev,_ZTv0_n28_N8S6126C15D0Ev)();
extern void ABISELECT(_ZThn16_N8S6126C15D0Ev,_ZThn8_N8S6126C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C15__7S6126C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-1384,-928),
  ABISELECT(-1344,-888),
  ABISELECT(-1392,-932),
  ABISELECT(-1392,-932),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C15D1Ev,_ZTv0_n28_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C15D0Ev,_ZTv0_n28_N8S6126C15D0Ev),
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C15__7S6126C1[] = {
  0,
  ABISELECT(1376,924),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C15D1Ev,_ZTvn760_n28_N8S6126C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C15D0Ev,_ZTvn760_n28_N8S6126C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C15__7S6126C1[] = {
  ABISELECT(-2552,-1692),
  ABISELECT(-2544,-1688),
  ABISELECT(-2552,-1692),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C15D1Ev,_ZTvn760_n28_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C15D0Ev,_ZTvn760_n28_N8S6126C15D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C15D1Ev,_ZTvn764_n28_N8S6126C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C15D0Ev,_ZTvn764_n28_N8S6126C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C15__7S6126C1[] = {
  ABISELECT(-2560,-1696),
  ABISELECT(-2552,-1692),
  ABISELECT(-2560,-1696),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C15D1Ev,_ZTvn764_n28_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C15D0Ev,_ZTvn764_n28_N8S6126C15D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S6126C15D1Ev,_ZTv0_n36_N8S6126C15D1Ev)();
extern void ABISELECT(_ZThn1192_N8S6126C15D1Ev,_ZThn776_N8S6126C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S6126C15D0Ev,_ZTv0_n36_N8S6126C15D0Ev)();
extern void ABISELECT(_ZThn1192_N8S6126C15D0Ev,_ZThn776_N8S6126C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C18__8S6126C15__7S6126C1[] = {
  ABISELECT(-1192,-776),
  0,
  ABISELECT(-2520,-1656),
  ABISELECT(-1176,-768),
  ABISELECT(-2560,-1696),
  ABISELECT(-2568,-1700),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6126C15D1Ev,_ZTv0_n36_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S6126C15D0Ev,_ZTv0_n36_N8S6126C15D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6126C15D1Ev,_ZTv0_n32_N8S6126C15D1Ev)();
extern void ABISELECT(_ZThn1256_N8S6126C15D1Ev,_ZThn832_N8S6126C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6126C15D0Ev,_ZTv0_n32_N8S6126C15D0Ev)();
extern void ABISELECT(_ZThn1256_N8S6126C15D0Ev,_ZThn832_N8S6126C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C19__8S6126C15__7S6126C1[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-2584,-1712),
  ABISELECT(-1240,-824),
  ABISELECT(-2632,-1756),
  ABISELECT(-2624,-1752),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI8S6126C15[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C15D1Ev,_ZTv0_n32_N8S6126C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C15D0Ev,_ZTv0_n32_N8S6126C15D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C16D1Ev();
extern void _ZN8S6126C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C16__7S6126C1[] = {
  ABISELECT(-1384,-928),
  ABISELECT(-1344,-888),
  ABISELECT(-1392,-932),
  ABISELECT(-1392,-932),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C16D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C16D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C128S6126C16__A1__7S6126C1[] = {
  ABISELECT(-1392,-932),
  ABISELECT(-1392,-932),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C128S6126C16__A1__7S6126C1[] = {
  0,
  ABISELECT(1392,932),
  (VTBL_ENTRY)&(_ZTI8S6126C12[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__A1__7S6126C1[] = {
  ABISELECT(-2552,-1692),
  ABISELECT(-2544,-1688),
  ABISELECT(-2552,-1692),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__7S6126C78S6126C16__A1__7S6126C1[] = {
  0,
  ABISELECT(2552,1692),
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C17D1Ev();
extern void _ZN8S6126C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__7S6126C1[] = {
  ABISELECT(-2560,-1696),
  ABISELECT(-2552,-1692),
  ABISELECT(-2560,-1696),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C17D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN7S6126C7D1Ev();
extern void _ZN7S6126C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C178S6126C16__A2__7S6126C1[] = {
  ABISELECT(-2560,-1696),
  ABISELECT(-2552,-1692),
  ABISELECT(-2560,-1696),
  0,
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D1Ev,
  (VTBL_ENTRY)&_ZN7S6126C7D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__7S6126C78S6126C178S6126C16__A2__7S6126C1[] = {
  0,
  ABISELECT(2560,1696),
  (VTBL_ENTRY)&(_ZTI7S6126C7[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C178S6126C16__7S6126C1[] = {
  0,
  ABISELECT(2560,1696),
  (VTBL_ENTRY)&(_ZTI8S6126C17[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C16__7S6126C1[] = {
  0,
  ABISELECT(1392,932),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn1160_N8S6126C16D1Ev,_ZThn760_N8S6126C16D1Ev)();
extern void ABISELECT(_ZThn1160_N8S6126C16D0Ev,_ZThn760_N8S6126C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C7__8S6126C16__7S6126C1[] = {
  ABISELECT(-2552,-1692),
  ABISELECT(-2544,-1688),
  ABISELECT(-2552,-1692),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S6126C16D1Ev,_ZThn760_N8S6126C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S6126C16D0Ev,_ZThn760_N8S6126C16D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZThn1168_N8S6126C16D1Ev,_ZThn764_N8S6126C16D1Ev)();
extern void ABISELECT(_ZThn1168_N8S6126C16D0Ev,_ZThn764_N8S6126C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C17__8S6126C16__7S6126C1[] = {
  ABISELECT(-2560,-1696),
  ABISELECT(-2552,-1692),
  ABISELECT(-2560,-1696),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S6126C16[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S6126C16D1Ev,_ZThn764_N8S6126C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S6126C16D0Ev,_ZThn764_N8S6126C16D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C18D1Ev();
extern void _ZN8S6126C18D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C18__7S6126C1[] = {
  ABISELECT(-2520,-1656),
  ABISELECT(-1176,-768),
  ABISELECT(-2560,-1696),
  ABISELECT(-2568,-1700),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C18D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C18D0Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S6126C18D1Ev,_ZTv0_n32_N8S6126C18D1Ev)();
extern void ABISELECT(_ZThn64_N8S6126C18D1Ev,_ZThn56_N8S6126C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S6126C18D0Ev,_ZTv0_n32_N8S6126C18D0Ev)();
extern void ABISELECT(_ZThn64_N8S6126C18D0Ev,_ZThn56_N8S6126C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S6126C19__8S6126C18__7S6126C1[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-2584,-1712),
  ABISELECT(-1240,-824),
  ABISELECT(-2632,-1756),
  ABISELECT(-2624,-1752),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C18D1Ev,_ZTv0_n32_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S6126C18D0Ev,_ZTv0_n32_N8S6126C18D0Ev),
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C18__7S6126C1[] = {
  0,
  ABISELECT(2568,1700),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C18D1Ev,_ZTv0_n28_N8S6126C18D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S6126C18D0Ev,_ZTv0_n28_N8S6126C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C18__7S6126C1[] = {
  ABISELECT(1176,768),
  ABISELECT(-1384,-928),
  ABISELECT(-1344,-888),
  ABISELECT(-1392,-932),
  ABISELECT(-1392,-932),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C18D1Ev,_ZTv0_n28_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C18D0Ev,_ZTv0_n28_N8S6126C18D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C18D1Ev,_ZTvn760_n28_N8S6126C18D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C18D0Ev,_ZTvn760_n28_N8S6126C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C18__7S6126C1[] = {
  ABISELECT(-2552,-1692),
  ABISELECT(-2544,-1688),
  ABISELECT(-2552,-1692),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C18D1Ev,_ZTvn760_n28_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C18D0Ev,_ZTvn760_n28_N8S6126C18D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C18D1Ev,_ZTvn764_n28_N8S6126C18D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C18D0Ev,_ZTvn764_n28_N8S6126C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C18__7S6126C1[] = {
  ABISELECT(-2560,-1696),
  ABISELECT(-2552,-1692),
  ABISELECT(-2560,-1696),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S6126C18[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C18D1Ev,_ZTvn764_n28_N8S6126C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C18D0Ev,_ZTvn764_n28_N8S6126C18D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void _ZN8S6126C19D1Ev();
extern void _ZN8S6126C19D0Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C19__7S6126C1[] = {
  ABISELECT(-2584,-1712),
  ABISELECT(-1240,-824),
  ABISELECT(-2632,-1756),
  ABISELECT(-2624,-1752),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&_ZN8S6126C19D1Ev,
  (VTBL_ENTRY)&_ZN8S6126C19D0Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S6126C138S6126C19__A1__7S6126C1[] = {
  ABISELECT(-2624,-1752),
  0,
  (VTBL_ENTRY)&(_ZTI8S6126C13[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S6126C8__8S6126C19__7S6126C1[] = {
  0,
  ABISELECT(2632,1756),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S6126C19D1Ev,_ZTv0_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S6126C19D0Ev,_ZTv0_n28_N8S6126C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C16__8S6126C19__7S6126C1[] = {
  ABISELECT(1240,824),
  ABISELECT(-1384,-928),
  ABISELECT(-1344,-888),
  ABISELECT(-1392,-932),
  ABISELECT(-1392,-932),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C19D1Ev,_ZTv0_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S6126C19D0Ev,_ZTv0_n28_N8S6126C19D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C19D1Ev,_ZTvn760_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S6126C19D0Ev,_ZTvn760_n28_N8S6126C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S6126C78S6126C16__8S6126C19__7S6126C1[] = {
  ABISELECT(-2552,-1692),
  ABISELECT(-2544,-1688),
  ABISELECT(-2552,-1692),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C19D1Ev,_ZTvn760_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S6126C19D0Ev,_ZTvn760_n28_N8S6126C19D0Ev),
};
extern void _ZN7S6126C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C19D1Ev,_ZTvn764_n28_N8S6126C19D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S6126C19D0Ev,_ZTvn764_n28_N8S6126C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S6126C178S6126C16__8S6126C19__7S6126C1[] = {
  ABISELECT(-2560,-1696),
  ABISELECT(-2552,-1692),
  ABISELECT(-2560,-1696),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S6126C19[0]),
  (VTBL_ENTRY)&_ZN7S6126C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C19D1Ev,_ZTvn764_n28_N8S6126C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S6126C19D0Ev,_ZTvn764_n28_N8S6126C19D0Ev),
};
static  VTT_ENTRY vtt_S6126C1[] = {
  {&(_ZTV7S6126C1[19]),  19,128},
  {&(_tg__ZTV7S6126C3__7S6126C1[14]),  14,19},
  {&(_tg__ZTV8S6126C107S6126C3__7S6126C1[12]),  12,16},
  {&(_tg__ZTV7S6126C7__8S6126C107S6126C3__7S6126C1[6]),  6,9},
  {&(_tg__ZTV7S6126C7__8S6126C107S6126C3__7S6126C1[6]),  6,9},
  {&(_tg__ZTV8S6126C107S6126C3__7S6126C1[12]),  12,16},
  {&(_tg__ZTV8S6126C12__8S6126C107S6126C3__7S6126C1[4]),  4,5},
  {&(_tg__ZTV7S6126C4__7S6126C3__7S6126C1[10]),  10,14},
  {&(_tg__ZTV7S6126C4__7S6126C3__7S6126C1[10]),  10,14},
  {&(_tg__ZTV7S6126C4__7S6126C3__7S6126C1[10]),  10,14},
  {&(_tg__ZTV7S6126C87S6126C9__A1__7S6126C3__7S6126C1[3]),  3,4},
  {&(_tg__ZTV7S6126C3__7S6126C1[14]),  14,19},
  {&(_tg__ZTV8S6126C12__7S6126C3__7S6126C1[4]),  4,5},
  {&(_tg__ZTV8S6126C14__7S6126C1[11]),  11,14},
  {&(_tg__ZTV8S6126C13__8S6126C14__7S6126C1[4]),  4,5},
  {&(_tg__ZTV8S6126C15__8S6126C14__7S6126C1[10]),  10,13},
  {&(_tg__ZTV8S6126C16__8S6126C14__7S6126C1[7]),  7,10},
  {&(_tg__ZTV7S6126C8__A1__8S6126C14__7S6126C1[3]),  3,4},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C14__7S6126C1[5]),  5,8},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C14__7S6126C1[5]),  5,8},
  {&(_tg__ZTV8S6126C18__8S6126C14__7S6126C1[9]),  9,12},
  {&(_tg__ZTV8S6126C19__8S6126C14__7S6126C1[8]),  8,11},
  {&(_ZTV7S6126C1[48]),  48,128},
  {&(_ZTV7S6126C1[48]),  48,128},
  {&(_ZTV7S6126C1[48]),  48,128},
  {&(_ZTV7S6126C1[55]),  55,128},
  {&(_ZTV7S6126C1[19]),  19,128},
  {&(_ZTV7S6126C1[60]),  60,128},
  {&(_ZTV7S6126C1[35]),  35,128},
  {&(_ZTV7S6126C1[65]),  65,128},
  {&(_ZTV7S6126C1[76]),  76,128},
  {&(_ZTV7S6126C1[86]),  86,128},
  {&(_ZTV7S6126C1[94]),  94,128},
  {&(_ZTV7S6126C1[102]),  102,128},
  {&(_ZTV7S6126C1[114]),  114,128},
  {&(_ZTV7S6126C1[125]),  125,128},
  {&(_tg__ZTV7S6126C4__7S6126C1[9]),  9,13},
  {&(_tg__ZTV7S6126C67S6126C4__7S6126C1[8]),  8,12},
  {&(_tg__ZTV7S6126C67S6126C4__7S6126C1[8]),  8,12},
  {&(_tg__ZTV7S6126C67S6126C4__7S6126C1[8]),  8,12},
  {&(_tg__ZTV7S6126C4__7S6126C1[9]),  9,13},
  {&(_tg__ZTV7S6126C4__7S6126C1[9]),  9,13},
  {&(_tg__ZTV7S6126C87S6126C9__A1__7S6126C4__7S6126C1[3]),  3,4},
  {&(_tg__ZTV7S6126C7__7S6126C1[5]),  5,8},
  {&(_tg__ZTV7S6126C7__7S6126C1[5]),  5,8},
  {&(_tg__ZTV7S6126C6__A1__7S6126C1[8]),  8,12},
  {&(_tg__ZTV7S6126C7__7S6126C6__A1__7S6126C1[6]),  6,9},
  {&(_tg__ZTV7S6126C7__7S6126C6__A1__7S6126C1[6]),  6,9},
  {&(_tg__ZTV8S6126C12__7S6126C1[4]),  4,5},
  {&(_tg__ZTV7S6126C8__8S6126C12__7S6126C1[3]),  3,4},
  {&(_tg__ZTV8S6126C13__7S6126C1[3]),  3,4},
  {&(_tg__ZTV8S6126C15__7S6126C1[9]),  9,12},
  {&(_tg__ZTV8S6126C16__8S6126C15__7S6126C1[7]),  7,10},
  {&(_tg__ZTV7S6126C8__8S6126C15__7S6126C1[3]),  3,4},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C15__7S6126C1[5]),  5,8},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C15__7S6126C1[5]),  5,8},
  {&(_tg__ZTV8S6126C18__8S6126C15__7S6126C1[9]),  9,12},
  {&(_tg__ZTV8S6126C19__8S6126C15__7S6126C1[8]),  8,11},
  {&(_tg__ZTV8S6126C16__7S6126C1[6]),  6,9},
  {&(_tg__ZTV8S6126C128S6126C16__A1__7S6126C1[4]),  4,5},
  {&(_tg__ZTV7S6126C8__8S6126C128S6126C16__A1__7S6126C1[3]),  3,4},
  {&(_tg__ZTV7S6126C78S6126C16__A1__7S6126C1[5]),  5,8},
  {&(_tg__ZTV7S6126C8__7S6126C78S6126C16__A1__7S6126C1[3]),  3,4},
  {&(_tg__ZTV8S6126C178S6126C16__7S6126C1[5]),  5,8},
  {&(_tg__ZTV7S6126C78S6126C178S6126C16__A2__7S6126C1[5]),  5,8},
  {&(_tg__ZTV7S6126C8__7S6126C78S6126C178S6126C16__A2__7S6126C1[3]),  3,4},
  {&(_tg__ZTV7S6126C8__8S6126C178S6126C16__7S6126C1[3]),  3,4},
  {&(_tg__ZTV7S6126C8__8S6126C16__7S6126C1[3]),  3,4},
  {&(_tg__ZTV7S6126C7__8S6126C16__7S6126C1[5]),  5,8},
  {&(_tg__ZTV8S6126C17__8S6126C16__7S6126C1[5]),  5,8},
  {&(_tg__ZTV8S6126C18__7S6126C1[7]),  7,10},
  {&(_tg__ZTV8S6126C19__8S6126C18__7S6126C1[8]),  8,11},
  {&(_tg__ZTV7S6126C8__8S6126C18__7S6126C1[3]),  3,4},
  {&(_tg__ZTV8S6126C16__8S6126C18__7S6126C1[7]),  7,10},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C18__7S6126C1[5]),  5,8},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C18__7S6126C1[5]),  5,8},
  {&(_tg__ZTV8S6126C19__7S6126C1[6]),  6,9},
  {&(_tg__ZTV8S6126C138S6126C19__A1__7S6126C1[3]),  3,4},
  {&(_tg__ZTV7S6126C8__8S6126C19__7S6126C1[3]),  3,4},
  {&(_tg__ZTV8S6126C16__8S6126C19__7S6126C1[7]),  7,10},
  {&(_tg__ZTV7S6126C78S6126C16__8S6126C19__7S6126C1[5]),  5,8},
  {&(_tg__ZTV8S6126C178S6126C16__8S6126C19__7S6126C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S6126C1[];
extern  VTBL_ENTRY _ZTV7S6126C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6126C1[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C18D0Ev,_ZTv0_n32_N8S6126C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6126C18D0Ev,_ZThn56_N8S6126C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C18D1Ev,_ZTv0_n32_N8S6126C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S6126C18D1Ev,_ZThn56_N8S6126C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C15D0Ev,_ZTv0_n32_N8S6126C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N8S6126C15D0Ev,_ZThn832_N8S6126C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C15D1Ev,_ZTv0_n32_N8S6126C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N8S6126C15D1Ev,_ZThn832_N8S6126C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6126C15D0Ev,_ZTv0_n36_N8S6126C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S6126C15D0Ev,_ZThn776_N8S6126C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6126C15D1Ev,_ZTv0_n36_N8S6126C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N8S6126C15D1Ev,_ZThn776_N8S6126C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C15D0Ev,_ZTv0_n28_N8S6126C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6126C15D0Ev,_ZThn8_N8S6126C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C15D1Ev,_ZTv0_n28_N8S6126C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S6126C15D1Ev,_ZThn8_N8S6126C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C6D0Ev,_ZTv0_n24_N7S6126C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6126C6D0Ev,_ZThn48_N7S6126C6D0Ev),
  (VTBL_ENTRY)_ZN7S6126C6D0Ev,
  (VTBL_ENTRY)_ZN7S6126C6D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C6D1Ev,_ZTv0_n24_N7S6126C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6126C6D1Ev,_ZThn48_N7S6126C6D1Ev),
  (VTBL_ENTRY)_ZN7S6126C6D1Ev,
  (VTBL_ENTRY)_ZN7S6126C6D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C4D0Ev,_ZTv0_n24_N7S6126C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S6126C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C4D1Ev,_ZTv0_n24_N7S6126C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S6126C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C14D0Ev,_ZTv0_n32_N8S6126C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N8S6126C14D0Ev,_ZThn1760_N8S6126C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S6126C14D1Ev,_ZTv0_n32_N8S6126C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N8S6126C14D1Ev,_ZThn1760_N8S6126C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6126C14D0Ev,_ZTv0_n36_N8S6126C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S6126C14D0Ev,_ZThn1704_N8S6126C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S6126C14D1Ev,_ZTv0_n36_N8S6126C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2576_N8S6126C14D1Ev,_ZThn1704_N8S6126C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C14D0Ev,_ZTv0_n28_N8S6126C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N8S6126C14D0Ev,_ZThn936_N8S6126C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S6126C14D1Ev,_ZTv0_n28_N8S6126C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N8S6126C14D1Ev,_ZThn936_N8S6126C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6126C14D0Ev,_ZTv0_n40_N8S6126C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1384_N8S6126C14D0Ev,_ZThn928_N8S6126C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S6126C14D1Ev,_ZTv0_n40_N8S6126C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1384_N8S6126C14D1Ev,_ZThn928_N8S6126C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6126C10D0Ev,_ZTv0_n24_N8S6126C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6126C10D0Ev,_ZThn48_N8S6126C10D0Ev),
  (VTBL_ENTRY)_ZN8S6126C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S6126C10D1Ev,_ZTv0_n24_N8S6126C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S6126C10D1Ev,_ZThn48_N8S6126C10D1Ev),
  (VTBL_ENTRY)_ZN8S6126C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C3D0Ev,_ZTv0_n24_N7S6126C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6126C3D0Ev,_ZThn48_N7S6126C3D0Ev),
  (VTBL_ENTRY)_ZN7S6126C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C3D1Ev,_ZTv0_n24_N7S6126C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6126C3D1Ev,_ZThn48_N7S6126C3D1Ev),
  (VTBL_ENTRY)_ZN7S6126C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6126C1D0Ev,_ZTv0_n32_N7S6126C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2688_N7S6126C1D0Ev,_ZThn1804_N7S6126C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S6126C1D1Ev,_ZTv0_n32_N7S6126C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2688_N7S6126C1D1Ev,_ZThn1804_N7S6126C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6126C1D0Ev,_ZTv0_n36_N7S6126C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2624_N7S6126C1D0Ev,_ZThn1748_N7S6126C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6126C1D1Ev,_ZTv0_n36_N7S6126C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2624_N7S6126C1D1Ev,_ZThn1748_N7S6126C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6126C1D0Ev,_ZTv0_n28_N7S6126C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N7S6126C1D0Ev,_ZThn980_N7S6126C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S6126C1D1Ev,_ZTv0_n28_N7S6126C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N7S6126C1D1Ev,_ZThn980_N7S6126C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6126C1D0Ev,_ZTv0_n40_N7S6126C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1432_N7S6126C1D0Ev,_ZThn972_N7S6126C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6126C1D1Ev,_ZTv0_n40_N7S6126C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1432_N7S6126C1D1Ev,_ZThn972_N7S6126C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C1D0Ev,_ZTv0_n24_N7S6126C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6126C1D0Ev,_ZThn48_N7S6126C1D0Ev),
  (VTBL_ENTRY)_ZN7S6126C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S6126C1D1Ev,_ZTv0_n24_N7S6126C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S6126C1D1Ev,_ZThn48_N7S6126C1D1Ev),
  (VTBL_ENTRY)_ZN7S6126C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6126C1 = {  "S6126C1", // class name
  bases_S6126C1, 38,
  &(vtc_S6126C1[0]), // expected_vtbl_contents
  &(vtt_S6126C1[0]), // expected_vtt_contents
  ABISELECT(2784,1848), // object size
  NSPAIRA(_ZTI7S6126C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S6126C1),128, //virtual function table var
  19, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6126C1),82, //virtual table table var
  26, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9913C2  {
  void *s9913c2f0;
  ::S4227C37 s9913c2f1;
  int s9913c2f2;
  ::S9141C28_nt s9913c2f3;
  unsigned int s9913c2f4:1;
  unsigned int s9913c2f5:1;
  unsigned int s9913c2f6:1;
  unsigned int s9913c2f7:1;
  unsigned int s9913c2f8:1;
  unsigned int s9913c2f9:1;
  unsigned int s9913c2f10:1;
  int s9913c2f11:3;
  int s9913c2f12:3;
  ::S3214C23 s9913c2f13;
  int s9913c2f14;
  virtual  ~S9913C2(); // _ZN7S9913C2D1Ev
  virtual void  v5(); // _ZN7S9913C22v5Ev
  virtual void  v6(); // _ZN7S9913C22v6Ev
  virtual void  v7(); // _ZN7S9913C22v7Ev
  virtual void  v8(); // _ZN7S9913C22v8Ev
  virtual void  v9(); // _ZN7S9913C22v9Ev
  virtual void  v10(); // _ZN7S9913C23v10Ev
  virtual void  v11(); // _ZN7S9913C23v11Ev
  virtual void  v12(); // _ZN7S9913C23v12Ev
  virtual void  v13(); // _ZN7S9913C23v13Ev
  virtual void  v14(); // _ZN7S9913C23v14Ev
  virtual void  v15(); // _ZN7S9913C23v15Ev
  virtual void  v16(); // _ZN7S9913C23v16Ev
  virtual void  v17(); // _ZN7S9913C23v17Ev
  virtual void  v18(); // _ZN7S9913C23v18Ev
  virtual void  v19(); // _ZN7S9913C23v19Ev
  virtual void  v20(); // _ZN7S9913C23v20Ev
  virtual void  v21(); // _ZN7S9913C23v21Ev
  virtual void  v22(); // _ZN7S9913C23v22Ev
  S9913C2(); // tgen
};
//SIG(-1 S9913C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S9913C2 ::~S9913C2(){ note_dtor("S9913C2", this);}
void  S9913C2 ::v5(){vfunc_called(this, "_ZN7S9913C22v5Ev");}
void  S9913C2 ::v6(){vfunc_called(this, "_ZN7S9913C22v6Ev");}
void  S9913C2 ::v7(){vfunc_called(this, "_ZN7S9913C22v7Ev");}
void  S9913C2 ::v8(){vfunc_called(this, "_ZN7S9913C22v8Ev");}
void  S9913C2 ::v9(){vfunc_called(this, "_ZN7S9913C22v9Ev");}
void  S9913C2 ::v10(){vfunc_called(this, "_ZN7S9913C23v10Ev");}
void  S9913C2 ::v11(){vfunc_called(this, "_ZN7S9913C23v11Ev");}
void  S9913C2 ::v12(){vfunc_called(this, "_ZN7S9913C23v12Ev");}
void  S9913C2 ::v13(){vfunc_called(this, "_ZN7S9913C23v13Ev");}
void  S9913C2 ::v14(){vfunc_called(this, "_ZN7S9913C23v14Ev");}
void  S9913C2 ::v15(){vfunc_called(this, "_ZN7S9913C23v15Ev");}
void  S9913C2 ::v16(){vfunc_called(this, "_ZN7S9913C23v16Ev");}
void  S9913C2 ::v17(){vfunc_called(this, "_ZN7S9913C23v17Ev");}
void  S9913C2 ::v18(){vfunc_called(this, "_ZN7S9913C23v18Ev");}
void  S9913C2 ::v19(){vfunc_called(this, "_ZN7S9913C23v19Ev");}
void  S9913C2 ::v20(){vfunc_called(this, "_ZN7S9913C23v20Ev");}
void  S9913C2 ::v21(){vfunc_called(this, "_ZN7S9913C23v21Ev");}
void  S9913C2 ::v22(){vfunc_called(this, "_ZN7S9913C23v22Ev");}
S9913C2 ::S9913C2(){ note_ctor("S9913C2", this);} // tgen

static void Test_S9913C2()
{
  extern Class_Descriptor cd_S9913C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S9913C2, buf);
    S9913C2 *dp, &lv = *(dp=new (buf) S9913C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S9913C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9913C2)");
    check_field_offset(lv, s9913c2f0, ABISELECT(8,4), "S9913C2.s9913c2f0");
    check_field_offset(lv, s9913c2f1, ABISELECT(16,8), "S9913C2.s9913c2f1");
    check_field_offset(lv, s9913c2f2, ABISELECT(20,12), "S9913C2.s9913c2f2");
    check_field_offset(lv, s9913c2f3, ABISELECT(24,16), "S9913C2.s9913c2f3");
    set_bf_and_test(lv, s9913c2f4, ABISELECT(40,28), 0, 1, 1, "S9913C2");
    set_bf_and_test(lv, s9913c2f5, ABISELECT(40,28), 1, 1, 1, "S9913C2");
    set_bf_and_test(lv, s9913c2f6, ABISELECT(40,28), 2, 1, 1, "S9913C2");
    set_bf_and_test(lv, s9913c2f7, ABISELECT(40,28), 3, 1, 1, "S9913C2");
    set_bf_and_test(lv, s9913c2f8, ABISELECT(40,28), 4, 1, 1, "S9913C2");
    set_bf_and_test(lv, s9913c2f9, ABISELECT(40,28), 5, 1, 1, "S9913C2");
    set_bf_and_test(lv, s9913c2f10, ABISELECT(40,28), 6, 1, 1, "S9913C2");
    set_bf_and_test(lv, s9913c2f11, ABISELECT(40,28), 7, 3, 1, "S9913C2");
    set_bf_and_test(lv, s9913c2f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S9913C2");
    set_bf_and_test(lv, s9913c2f12, ABISELECT(41,29), 2, 3, 1, "S9913C2");
    set_bf_and_test(lv, s9913c2f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S9913C2");
    check_field_offset(lv, s9913c2f13, ABISELECT(48,32), "S9913C2.s9913c2f13");
    check_field_offset(lv, s9913c2f14, ABISELECT(64,44), "S9913C2.s9913c2f14");
    test_class_info(&lv, &cd_S9913C2);
    dp->~S9913C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9913C2(Test_S9913C2, "S9913C2", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S9913C2C1Ev();
extern void _ZN7S9913C2D1Ev();
Name_Map name_map_S9913C2[] = {
  NSPAIR(_ZN7S9913C2C1Ev),
  NSPAIR(_ZN7S9913C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9913C2[];
extern void _ZN7S9913C2D1Ev();
extern void _ZN7S9913C2D0Ev();
extern void _ZN7S9913C22v5Ev();
extern void _ZN7S9913C22v6Ev();
extern void _ZN7S9913C22v7Ev();
extern void _ZN7S9913C22v8Ev();
extern void _ZN7S9913C22v9Ev();
extern void _ZN7S9913C23v10Ev();
extern void _ZN7S9913C23v11Ev();
extern void _ZN7S9913C23v12Ev();
extern void _ZN7S9913C23v13Ev();
extern void _ZN7S9913C23v14Ev();
extern void _ZN7S9913C23v15Ev();
extern void _ZN7S9913C23v16Ev();
extern void _ZN7S9913C23v17Ev();
extern void _ZN7S9913C23v18Ev();
extern void _ZN7S9913C23v19Ev();
extern void _ZN7S9913C23v20Ev();
extern void _ZN7S9913C23v21Ev();
extern void _ZN7S9913C23v22Ev();
static  VTBL_ENTRY vtc_S9913C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9913C2[0]),
  (VTBL_ENTRY)&_ZN7S9913C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9913C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9913C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9913C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9913C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9913C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9913C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S9913C2[];
extern  VTBL_ENTRY _ZTV7S9913C2[];
Class_Descriptor cd_S9913C2 = {  "S9913C2", // class name
  0,0,//no base classes
  &(vtc_S9913C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S9913C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9913C2),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9913C8  {
  unsigned int s9913c8f0:1;
  unsigned int s9913c8f1:1;
  unsigned int s9913c8f2:1;
  unsigned int s9913c8f3:1;
  unsigned int s9913c8f4:1;
  unsigned int s9913c8f5:1;
  unsigned int s9913c8f6:1;
  unsigned int s9913c8f7:1;
  unsigned int s9913c8f8:1;
  unsigned int s9913c8f9:1;
  unsigned int s9913c8f10:1;
  unsigned int s9913c8f11:1;
  unsigned int s9913c8f12:1;
  unsigned int s9913c8f13:1;
  unsigned int s9913c8f14:1;
  unsigned int s9913c8f15:1;
  void  mf9913c8(); // _ZN7S9913C88mf9913c8Ev
};
//SIG(-1 S9913C8) C1{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1}


void  S9913C8 ::mf9913c8(){}

static void Test_S9913C8()
{
  {
    init_simple_test("S9913C8");
    static S9913C8 lv;
    check2(sizeof(lv), 4, "sizeof(S9913C8)");
    check2(__alignof__(lv), 4, "__alignof__(S9913C8)");
    set_bf_and_test(lv, s9913c8f0, 0, 0, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f1, 0, 1, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f2, 0, 2, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f3, 0, 3, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f4, 0, 4, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f5, 0, 5, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f6, 0, 6, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f7, 0, 7, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f8, 1, 0, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f9, 1, 1, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f10, 1, 2, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f11, 1, 3, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f12, 1, 4, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f13, 1, 5, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f14, 1, 6, 1, 1, "S9913C8");
    set_bf_and_test(lv, s9913c8f15, 1, 7, 1, 1, "S9913C8");
  }
}
static Arrange_To_Call_Me vS9913C8(Test_S9913C8, "S9913C8", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9913C1  : S9913C2 {
  ::S3214C18 s9913c1f0;
  ::S9913C8 s9913c1f1;
  virtual void  v1(); // _ZN7S9913C12v1Ev
  virtual void  v2(); // _ZN7S9913C12v2Ev
  virtual void  v3(); // _ZN7S9913C12v3Ev
  virtual void  v4(); // _ZN7S9913C12v4Ev
  ~S9913C1(); // tgen
  S9913C1(); // tgen
};
//SIG(1 S9913C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} v1 v2 v3 v4 FC7{ BC5} FC8{ m Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1}}


void  S9913C1 ::v1(){vfunc_called(this, "_ZN7S9913C12v1Ev");}
void  S9913C1 ::v2(){vfunc_called(this, "_ZN7S9913C12v2Ev");}
void  S9913C1 ::v3(){vfunc_called(this, "_ZN7S9913C12v3Ev");}
void  S9913C1 ::v4(){vfunc_called(this, "_ZN7S9913C12v4Ev");}
S9913C1 ::~S9913C1(){ note_dtor("S9913C1", this);} // tgen
S9913C1 ::S9913C1(){ note_ctor("S9913C1", this);} // tgen

static void Test_S9913C1()
{
  extern Class_Descriptor cd_S9913C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,17)];
    init_test(&cd_S9913C1, buf);
    S9913C1 *dp, &lv = *(dp=new (buf) S9913C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S9913C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9913C1)");
    check_base_class_offset(lv, (S9913C2*), 0, "S9913C1");
    check_field_offset(lv, s9913c1f0, ABISELECT(72,48), "S9913C1.s9913c1f0");
    check_field_offset(lv, s9913c1f1, ABISELECT(88,60), "S9913C1.s9913c1f1");
    test_class_info(&lv, &cd_S9913C1);
    dp->~S9913C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9913C1(Test_S9913C1, "S9913C1", ABISELECT(96,64));

#else // __cplusplus

extern void _ZN7S9913C1C1Ev();
extern void _ZN7S9913C1D1Ev();
Name_Map name_map_S9913C1[] = {
  NSPAIR(_ZN7S9913C1C1Ev),
  NSPAIR(_ZN7S9913C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9913C2;
extern VTBL_ENTRY _ZTI7S9913C2[];
extern  VTBL_ENTRY _ZTV7S9913C2[];
static Base_Class bases_S9913C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9913C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9913C1[];
extern void _ZN7S9913C1D1Ev();
extern void _ZN7S9913C1D0Ev();
extern void _ZN7S9913C22v5Ev();
extern void _ZN7S9913C22v6Ev();
extern void _ZN7S9913C22v7Ev();
extern void _ZN7S9913C22v8Ev();
extern void _ZN7S9913C22v9Ev();
extern void _ZN7S9913C23v10Ev();
extern void _ZN7S9913C23v11Ev();
extern void _ZN7S9913C23v12Ev();
extern void _ZN7S9913C23v13Ev();
extern void _ZN7S9913C23v14Ev();
extern void _ZN7S9913C23v15Ev();
extern void _ZN7S9913C23v16Ev();
extern void _ZN7S9913C23v17Ev();
extern void _ZN7S9913C23v18Ev();
extern void _ZN7S9913C23v19Ev();
extern void _ZN7S9913C23v20Ev();
extern void _ZN7S9913C23v21Ev();
extern void _ZN7S9913C23v22Ev();
extern void _ZN7S9913C12v1Ev();
extern void _ZN7S9913C12v2Ev();
extern void _ZN7S9913C12v3Ev();
extern void _ZN7S9913C12v4Ev();
static  VTBL_ENTRY vtc_S9913C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9913C1[0]),
  (VTBL_ENTRY)&_ZN7S9913C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9913C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9913C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9913C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9913C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9913C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9913C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9913C23v22Ev,
  (VTBL_ENTRY)&_ZN7S9913C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9913C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9913C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9913C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9913C1[];
extern  VTBL_ENTRY _ZTV7S9913C1[];
Class_Descriptor cd_S9913C1 = {  "S9913C1", // class name
  bases_S9913C1, 1,
  &(vtc_S9913C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,64), // object size
  NSPAIRA(_ZTI7S9913C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9913C1),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5327C3  {
  void *s5327c3f0;
  ::S4227C37 s5327c3f1;
  int s5327c3f2;
  ::S9141C28_nt s5327c3f3;
  unsigned int s5327c3f4:1;
  unsigned int s5327c3f5:1;
  unsigned int s5327c3f6:1;
  unsigned int s5327c3f7:1;
  unsigned int s5327c3f8:1;
  unsigned int s5327c3f9:1;
  unsigned int s5327c3f10:1;
  int s5327c3f11:3;
  int s5327c3f12:3;
  ::S3214C23 s5327c3f13;
  int s5327c3f14;
  virtual  ~S5327C3(); // _ZN7S5327C3D1Ev
  virtual void  v6(); // _ZN7S5327C32v6Ev
  virtual void  v7(); // _ZN7S5327C32v7Ev
  virtual void  v8(); // _ZN7S5327C32v8Ev
  virtual void  v9(); // _ZN7S5327C32v9Ev
  virtual void  v10(); // _ZN7S5327C33v10Ev
  virtual void  v11(); // _ZN7S5327C33v11Ev
  virtual void  v12(); // _ZN7S5327C33v12Ev
  virtual void  v13(); // _ZN7S5327C33v13Ev
  virtual void  v14(); // _ZN7S5327C33v14Ev
  virtual void  v15(); // _ZN7S5327C33v15Ev
  virtual void  v16(); // _ZN7S5327C33v16Ev
  virtual void  v17(); // _ZN7S5327C33v17Ev
  virtual void  v18(); // _ZN7S5327C33v18Ev
  virtual void  v19(); // _ZN7S5327C33v19Ev
  virtual void  v20(); // _ZN7S5327C33v20Ev
  virtual void  v21(); // _ZN7S5327C33v21Ev
  virtual void  v22(); // _ZN7S5327C33v22Ev
  virtual void  v23(); // _ZN7S5327C33v23Ev
  S5327C3(); // tgen
};
//SIG(-1 S5327C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S5327C3 ::~S5327C3(){ note_dtor("S5327C3", this);}
void  S5327C3 ::v6(){vfunc_called(this, "_ZN7S5327C32v6Ev");}
void  S5327C3 ::v7(){vfunc_called(this, "_ZN7S5327C32v7Ev");}
void  S5327C3 ::v8(){vfunc_called(this, "_ZN7S5327C32v8Ev");}
void  S5327C3 ::v9(){vfunc_called(this, "_ZN7S5327C32v9Ev");}
void  S5327C3 ::v10(){vfunc_called(this, "_ZN7S5327C33v10Ev");}
void  S5327C3 ::v11(){vfunc_called(this, "_ZN7S5327C33v11Ev");}
void  S5327C3 ::v12(){vfunc_called(this, "_ZN7S5327C33v12Ev");}
void  S5327C3 ::v13(){vfunc_called(this, "_ZN7S5327C33v13Ev");}
void  S5327C3 ::v14(){vfunc_called(this, "_ZN7S5327C33v14Ev");}
void  S5327C3 ::v15(){vfunc_called(this, "_ZN7S5327C33v15Ev");}
void  S5327C3 ::v16(){vfunc_called(this, "_ZN7S5327C33v16Ev");}
void  S5327C3 ::v17(){vfunc_called(this, "_ZN7S5327C33v17Ev");}
void  S5327C3 ::v18(){vfunc_called(this, "_ZN7S5327C33v18Ev");}
void  S5327C3 ::v19(){vfunc_called(this, "_ZN7S5327C33v19Ev");}
void  S5327C3 ::v20(){vfunc_called(this, "_ZN7S5327C33v20Ev");}
void  S5327C3 ::v21(){vfunc_called(this, "_ZN7S5327C33v21Ev");}
void  S5327C3 ::v22(){vfunc_called(this, "_ZN7S5327C33v22Ev");}
void  S5327C3 ::v23(){vfunc_called(this, "_ZN7S5327C33v23Ev");}
S5327C3 ::S5327C3(){ note_ctor("S5327C3", this);} // tgen

static void Test_S5327C3()
{
  extern Class_Descriptor cd_S5327C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S5327C3, buf);
    S5327C3 *dp, &lv = *(dp=new (buf) S5327C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S5327C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5327C3)");
    check_field_offset(lv, s5327c3f0, ABISELECT(8,4), "S5327C3.s5327c3f0");
    check_field_offset(lv, s5327c3f1, ABISELECT(16,8), "S5327C3.s5327c3f1");
    check_field_offset(lv, s5327c3f2, ABISELECT(20,12), "S5327C3.s5327c3f2");
    check_field_offset(lv, s5327c3f3, ABISELECT(24,16), "S5327C3.s5327c3f3");
    set_bf_and_test(lv, s5327c3f4, ABISELECT(40,28), 0, 1, 1, "S5327C3");
    set_bf_and_test(lv, s5327c3f5, ABISELECT(40,28), 1, 1, 1, "S5327C3");
    set_bf_and_test(lv, s5327c3f6, ABISELECT(40,28), 2, 1, 1, "S5327C3");
    set_bf_and_test(lv, s5327c3f7, ABISELECT(40,28), 3, 1, 1, "S5327C3");
    set_bf_and_test(lv, s5327c3f8, ABISELECT(40,28), 4, 1, 1, "S5327C3");
    set_bf_and_test(lv, s5327c3f9, ABISELECT(40,28), 5, 1, 1, "S5327C3");
    set_bf_and_test(lv, s5327c3f10, ABISELECT(40,28), 6, 1, 1, "S5327C3");
    set_bf_and_test(lv, s5327c3f11, ABISELECT(40,28), 7, 3, 1, "S5327C3");
    set_bf_and_test(lv, s5327c3f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S5327C3");
    set_bf_and_test(lv, s5327c3f12, ABISELECT(41,29), 2, 3, 1, "S5327C3");
    set_bf_and_test(lv, s5327c3f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S5327C3");
    check_field_offset(lv, s5327c3f13, ABISELECT(48,32), "S5327C3.s5327c3f13");
    check_field_offset(lv, s5327c3f14, ABISELECT(64,44), "S5327C3.s5327c3f14");
    test_class_info(&lv, &cd_S5327C3);
    dp->~S5327C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5327C3(Test_S5327C3, "S5327C3", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S5327C3C1Ev();
extern void _ZN7S5327C3D1Ev();
Name_Map name_map_S5327C3[] = {
  NSPAIR(_ZN7S5327C3C1Ev),
  NSPAIR(_ZN7S5327C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5327C3[];
extern void _ZN7S5327C3D1Ev();
extern void _ZN7S5327C3D0Ev();
extern void _ZN7S5327C32v6Ev();
extern void _ZN7S5327C32v7Ev();
extern void _ZN7S5327C32v8Ev();
extern void _ZN7S5327C32v9Ev();
extern void _ZN7S5327C33v10Ev();
extern void _ZN7S5327C33v11Ev();
extern void _ZN7S5327C33v12Ev();
extern void _ZN7S5327C33v13Ev();
extern void _ZN7S5327C33v14Ev();
extern void _ZN7S5327C33v15Ev();
extern void _ZN7S5327C33v16Ev();
extern void _ZN7S5327C33v17Ev();
extern void _ZN7S5327C33v18Ev();
extern void _ZN7S5327C33v19Ev();
extern void _ZN7S5327C33v20Ev();
extern void _ZN7S5327C33v21Ev();
extern void _ZN7S5327C33v22Ev();
extern void _ZN7S5327C33v23Ev();
static  VTBL_ENTRY vtc_S5327C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5327C3[0]),
  (VTBL_ENTRY)&_ZN7S5327C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5327C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5327C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5327C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5327C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5327C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v23Ev,
};
extern VTBL_ENTRY _ZTI7S5327C3[];
extern  VTBL_ENTRY _ZTV7S5327C3[];
Class_Descriptor cd_S5327C3 = {  "S5327C3", // class name
  0,0,//no base classes
  &(vtc_S5327C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S5327C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5327C3),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5327C2  : S5327C3 {
  ::S3214C18 s5327c2f0;
  ::S3214C12 s5327c2f1;
  ::S3214C6_nt s5327c2f2;
  ::S197C26 s5327c2f3;
  ::S197C22 s5327c2f4;
  virtual void  v24(); // _ZN7S5327C23v24Ev
  virtual void  v25(); // _ZN7S5327C23v25Ev
  virtual void  v26(); // _ZN7S5327C23v26Ev
  ~S5327C2(); // tgen
  S5327C2(); // tgen
};
//SIG(-1 S5327C2) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} v1 v2 v3 FC7{ BC5} FC8{ BC5} FC9{ BC5} FC10{ BC5} FC11{ BC5}}


void  S5327C2 ::v24(){vfunc_called(this, "_ZN7S5327C23v24Ev");}
void  S5327C2 ::v25(){vfunc_called(this, "_ZN7S5327C23v25Ev");}
void  S5327C2 ::v26(){vfunc_called(this, "_ZN7S5327C23v26Ev");}
S5327C2 ::~S5327C2(){ note_dtor("S5327C2", this);} // tgen
S5327C2 ::S5327C2(){ note_ctor("S5327C2", this);} // tgen

static void Test_S5327C2()
{
  extern Class_Descriptor cd_S5327C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,28)];
    init_test(&cd_S5327C2, buf);
    S5327C2 *dp, &lv = *(dp=new (buf) S5327C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,108), "sizeof(S5327C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5327C2)");
    check_base_class_offset(lv, (S5327C3*), 0, "S5327C2");
    check_field_offset(lv, s5327c2f0, ABISELECT(72,48), "S5327C2.s5327c2f0");
    check_field_offset(lv, s5327c2f1, ABISELECT(88,60), "S5327C2.s5327c2f1");
    check_field_offset(lv, s5327c2f2, ABISELECT(104,72), "S5327C2.s5327c2f2");
    check_field_offset(lv, s5327c2f3, ABISELECT(120,84), "S5327C2.s5327c2f3");
    check_field_offset(lv, s5327c2f4, ABISELECT(136,96), "S5327C2.s5327c2f4");
    test_class_info(&lv, &cd_S5327C2);
    dp->~S5327C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5327C2(Test_S5327C2, "S5327C2", ABISELECT(152,108));

#else // __cplusplus

extern void _ZN7S5327C2C1Ev();
extern void _ZN7S5327C2D1Ev();
Name_Map name_map_S5327C2[] = {
  NSPAIR(_ZN7S5327C2C1Ev),
  NSPAIR(_ZN7S5327C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5327C3;
extern VTBL_ENTRY _ZTI7S5327C3[];
extern  VTBL_ENTRY _ZTV7S5327C3[];
static Base_Class bases_S5327C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5327C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5327C2[];
extern void _ZN7S5327C2D1Ev();
extern void _ZN7S5327C2D0Ev();
extern void _ZN7S5327C32v6Ev();
extern void _ZN7S5327C32v7Ev();
extern void _ZN7S5327C32v8Ev();
extern void _ZN7S5327C32v9Ev();
extern void _ZN7S5327C33v10Ev();
extern void _ZN7S5327C33v11Ev();
extern void _ZN7S5327C33v12Ev();
extern void _ZN7S5327C33v13Ev();
extern void _ZN7S5327C33v14Ev();
extern void _ZN7S5327C33v15Ev();
extern void _ZN7S5327C33v16Ev();
extern void _ZN7S5327C33v17Ev();
extern void _ZN7S5327C33v18Ev();
extern void _ZN7S5327C33v19Ev();
extern void _ZN7S5327C33v20Ev();
extern void _ZN7S5327C33v21Ev();
extern void _ZN7S5327C33v22Ev();
extern void _ZN7S5327C33v23Ev();
extern void _ZN7S5327C23v24Ev();
extern void _ZN7S5327C23v25Ev();
extern void _ZN7S5327C23v26Ev();
static  VTBL_ENTRY vtc_S5327C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5327C2[0]),
  (VTBL_ENTRY)&_ZN7S5327C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5327C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5327C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5327C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5327C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5327C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5327C23v24Ev,
  (VTBL_ENTRY)&_ZN7S5327C23v25Ev,
  (VTBL_ENTRY)&_ZN7S5327C23v26Ev,
};
extern VTBL_ENTRY _ZTI7S5327C2[];
extern  VTBL_ENTRY _ZTV7S5327C2[];
Class_Descriptor cd_S5327C2 = {  "S5327C2", // class name
  bases_S5327C2, 1,
  &(vtc_S5327C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,108), // object size
  NSPAIRA(_ZTI7S5327C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5327C2),25, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S5327C13_nt

#else // __cplusplus

extern Class_Descriptor cd_S3214C7_nt;
static Base_Class bases_S5327C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S5327C1  : S5327C2 {
  int s5327c1f0;
  void *s5327c1f1;
  ::S5327C13_nt s5327c1f2;
  ::S197C22 s5327c1f3;
  ::S197C26 s5327c1f4;
  ::S3214C12 s5327c1f5;
  virtual void  v1(); // _ZN7S5327C12v1Ev
  virtual void  v2(); // _ZN7S5327C12v2Ev
  virtual void  v3(); // _ZN7S5327C12v3Ev
  virtual void  v4(); // _ZN7S5327C12v4Ev
  virtual void  v5(); // _ZN7S5327C12v5Ev
  ~S5327C1(); // tgen
  S5327C1(); // tgen
};
//SIG(1 S5327C1) C1{ BC2{ BC3{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp FC4{ m} Fi FC5{ BC6{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC7{ BC6} Fi} v24 v25 v26 FC8{ BC6} FC9{ BC6} FC10{ BC6} FC11{ BC6} FC12{ BC6}} v1 v2 v3 v4 v5 Fi Fp FC13{ BC6} FC12 FC11 FC9}


void  S5327C1 ::v1(){vfunc_called(this, "_ZN7S5327C12v1Ev");}
void  S5327C1 ::v2(){vfunc_called(this, "_ZN7S5327C12v2Ev");}
void  S5327C1 ::v3(){vfunc_called(this, "_ZN7S5327C12v3Ev");}
void  S5327C1 ::v4(){vfunc_called(this, "_ZN7S5327C12v4Ev");}
void  S5327C1 ::v5(){vfunc_called(this, "_ZN7S5327C12v5Ev");}
S5327C1 ::~S5327C1(){ note_dtor("S5327C1", this);} // tgen
S5327C1 ::S5327C1(){ note_ctor("S5327C1", this);} // tgen

static void Test_S5327C1()
{
  extern Class_Descriptor cd_S5327C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,42)];
    init_test(&cd_S5327C1, buf);
    S5327C1 *dp, &lv = *(dp=new (buf) S5327C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,164), "sizeof(S5327C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5327C1)");
    check_base_class_offset(lv, (S5327C3*)(S5327C2*), 0, "S5327C1");
    check_base_class_offset(lv, (S5327C2*), 0, "S5327C1");
    check_field_offset(lv, s5327c1f0, ABISELECT(152,108), "S5327C1.s5327c1f0");
    check_field_offset(lv, s5327c1f1, ABISELECT(160,112), "S5327C1.s5327c1f1");
    check_field_offset(lv, s5327c1f2, ABISELECT(168,116), "S5327C1.s5327c1f2");
    check_field_offset(lv, s5327c1f3, ABISELECT(184,128), "S5327C1.s5327c1f3");
    check_field_offset(lv, s5327c1f4, ABISELECT(200,140), "S5327C1.s5327c1f4");
    check_field_offset(lv, s5327c1f5, ABISELECT(216,152), "S5327C1.s5327c1f5");
    test_class_info(&lv, &cd_S5327C1);
    dp->~S5327C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5327C1(Test_S5327C1, "S5327C1", ABISELECT(232,164));

#else // __cplusplus

extern void _ZN7S5327C1C1Ev();
extern void _ZN7S5327C1D1Ev();
Name_Map name_map_S5327C1[] = {
  NSPAIR(_ZN7S5327C1C1Ev),
  NSPAIR(_ZN7S5327C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5327C3;
extern VTBL_ENTRY _ZTI7S5327C3[];
extern  VTBL_ENTRY _ZTV7S5327C3[];
extern Class_Descriptor cd_S5327C2;
extern VTBL_ENTRY _ZTI7S5327C2[];
extern  VTBL_ENTRY _ZTV7S5327C2[];
static Base_Class bases_S5327C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5327C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5327C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5327C1[];
extern void _ZN7S5327C1D1Ev();
extern void _ZN7S5327C1D0Ev();
extern void _ZN7S5327C32v6Ev();
extern void _ZN7S5327C32v7Ev();
extern void _ZN7S5327C32v8Ev();
extern void _ZN7S5327C32v9Ev();
extern void _ZN7S5327C33v10Ev();
extern void _ZN7S5327C33v11Ev();
extern void _ZN7S5327C33v12Ev();
extern void _ZN7S5327C33v13Ev();
extern void _ZN7S5327C33v14Ev();
extern void _ZN7S5327C33v15Ev();
extern void _ZN7S5327C33v16Ev();
extern void _ZN7S5327C33v17Ev();
extern void _ZN7S5327C33v18Ev();
extern void _ZN7S5327C33v19Ev();
extern void _ZN7S5327C33v20Ev();
extern void _ZN7S5327C33v21Ev();
extern void _ZN7S5327C33v22Ev();
extern void _ZN7S5327C33v23Ev();
extern void _ZN7S5327C23v24Ev();
extern void _ZN7S5327C23v25Ev();
extern void _ZN7S5327C23v26Ev();
extern void _ZN7S5327C12v1Ev();
extern void _ZN7S5327C12v2Ev();
extern void _ZN7S5327C12v3Ev();
extern void _ZN7S5327C12v4Ev();
extern void _ZN7S5327C12v5Ev();
static  VTBL_ENTRY vtc_S5327C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5327C1[0]),
  (VTBL_ENTRY)&_ZN7S5327C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5327C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5327C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5327C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5327C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5327C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v22Ev,
  (VTBL_ENTRY)&_ZN7S5327C33v23Ev,
  (VTBL_ENTRY)&_ZN7S5327C23v24Ev,
  (VTBL_ENTRY)&_ZN7S5327C23v25Ev,
  (VTBL_ENTRY)&_ZN7S5327C23v26Ev,
  (VTBL_ENTRY)&_ZN7S5327C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5327C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5327C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5327C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5327C12v5Ev,
};
extern VTBL_ENTRY _ZTI7S5327C1[];
extern  VTBL_ENTRY _ZTV7S5327C1[];
Class_Descriptor cd_S5327C1 = {  "S5327C1", // class name
  bases_S5327C1, 2,
  &(vtc_S5327C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,164), // object size
  NSPAIRA(_ZTI7S5327C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5327C1),30, //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  S19497C7  {
  virtual void  v2(); // _ZN8S19497C72v2Ev
  ~S19497C7(); // tgen
  S19497C7(); // tgen
};
//SIG(-1 S19497C7) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S19497C7C1Ev();
extern void _ZN8S19497C7D1Ev();
Name_Map name_map_S19497C7[] = {
  NSPAIR(_ZN8S19497C7C1Ev),
  NSPAIR(_ZN8S19497C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19497C7[];
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY vtc_S19497C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C7[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
Class_Descriptor cd_S19497C7 = {  "S19497C7", // class name
  0,0,//no base classes
  &(vtc_S19497C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19497C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19497C7),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  S19497C5  : virtual S20997C6 , virtual S19497C7 , S4227C37 {
  virtual  ~S19497C5(); // _ZN8S19497C5D2Ev
  S19497C5(); // tgen
};
//SIG(-1 S19497C5) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S19497C5()
{
  extern Class_Descriptor cd_S19497C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19497C5, buf);
    S19497C5 *dp, &lv = *(dp=new (buf) S19497C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19497C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C5)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S19497C5");
    check_base_class_offset(lv, (S19497C7*), 0, "S19497C5");
    check_base_class_offset(lv, (S4227C37*), 0, "S19497C5");
    test_class_info(&lv, &cd_S19497C5);
    dp->~S19497C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C5(Test_S19497C5, "S19497C5", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S19497C5C1Ev();
extern void _ZN8S19497C5D2Ev();
Name_Map name_map_S19497C5[] = {
  NSPAIR(_ZN8S19497C5C1Ev),
  NSPAIR(_ZN8S19497C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S19497C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19497C7,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19497C5[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY vtc_S19497C5[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern VTBL_ENTRY _ZTV8S19497C5[];
static  VTT_ENTRY vtt_S19497C5[] = {
  {&(_ZTV8S19497C5[5]),  5,8},
  {&(_ZTV8S19497C5[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
Class_Descriptor cd_S19497C5 = {  "S19497C5", // class name
  bases_S19497C5, 3,
  &(vtc_S19497C5[0]), // expected_vtbl_contents
  &(vtt_S19497C5[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S19497C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19497C5),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19497C5),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  S19497C3  : virtual S4227C37 , virtual S19497C5 {
  virtual void  v3(); // _ZN8S19497C32v3Ev
  ~S19497C3(); // tgen
  S19497C3(); // tgen
};
//SIG(-1 S19497C3) C1{ VBC2{ m} VBC3{ VBC4{ m FL[5]} VBC5{ v2} BC2 vd} v1}


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

static void Test_S19497C3()
{
  extern Class_Descriptor cd_S19497C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19497C3, buf);
    S19497C3 *dp, &lv = *(dp=new (buf) S19497C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19497C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C3)");
    /*is_ambiguous_... S19497C3::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), ABISELECT(8,4), "S19497C3");
    check_base_class_offset(lv, (S20997C6*)(S19497C5*), ABISELECT(8,4), "S19497C3");
    check_base_class_offset(lv, (S19497C7*)(S19497C5*), 0, "S19497C3");
    check_base_class_offset(lv, (S4227C37*)(S19497C5*), 0, "S19497C3");
    check_base_class_offset(lv, (S19497C5*), 0, "S19497C3");
    test_class_info(&lv, &cd_S19497C3);
    dp->~S19497C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C3(Test_S19497C3, "S19497C3", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S19497C3C1Ev();
extern void _ZN8S19497C3D1Ev();
Name_Map name_map_S19497C3[] = {
  NSPAIR(_ZN8S19497C3C1Ev),
  NSPAIR(_ZN8S19497C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
static Base_Class bases_S19497C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19497C7,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19497C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19497C3[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C3D1Ev();
extern void _ZN8S19497C3D0Ev();
extern void _ZN8S19497C32v3Ev();
static  VTBL_ENTRY vtc_S19497C3[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C3[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19497C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S19497C3[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C5__8S19497C3[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
static  VTT_ENTRY vtt_S19497C3[] = {
  {&(_ZTV8S19497C3[8]),  8,12},
  {&(_ZTV8S19497C3[8]),  8,12},
  {&(_ZTV8S19497C3[8]),  8,12},
  {&(_tg__ZTV8S19497C5__8S19497C3[5]),  5,8},
  {&(_tg__ZTV8S19497C5__8S19497C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19497C3[];
extern  VTBL_ENTRY _ZTV8S19497C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C3[];
Class_Descriptor cd_S19497C3 = {  "S19497C3", // class name
  bases_S19497C3, 5,
  &(vtc_S19497C3[0]), // expected_vtbl_contents
  &(vtt_S19497C3[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S19497C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19497C3),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19497C3),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19497C2  : S19497C3 {
  virtual  ~S19497C2(); // _ZN8S19497C2D2Ev
  S19497C2(); // tgen
};
//SIG(-1 S19497C2) C1{ BC2{ VBC3{ m} VBC4{ VBC5{ m FL[5]} VBC6{ v1} BC3 vd} v2} vd}


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

static void Test_S19497C2()
{
  extern Class_Descriptor cd_S19497C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19497C2, buf);
    S19497C2 *dp, &lv = *(dp=new (buf) S19497C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19497C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C2)");
    /*is_ambiguous_... S19497C3::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C3*), ABISELECT(8,4), "S19497C2");
    check_base_class_offset(lv, (S20997C6*)(S19497C5*), ABISELECT(8,4), "S19497C2");
    check_base_class_offset(lv, (S19497C7*)(S19497C5*), 0, "S19497C2");
    check_base_class_offset(lv, (S4227C37*)(S19497C5*), 0, "S19497C2");
    check_base_class_offset(lv, (S19497C5*)(S19497C3*), 0, "S19497C2");
    check_base_class_offset(lv, (S19497C3*), 0, "S19497C2");
    test_class_info(&lv, &cd_S19497C2);
    dp->~S19497C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C2(Test_S19497C2, "S19497C2", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S19497C2C1Ev();
extern void _ZN8S19497C2D2Ev();
Name_Map name_map_S19497C2[] = {
  NSPAIR(_ZN8S19497C2C1Ev),
  NSPAIR(_ZN8S19497C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C3;
extern VTBL_ENTRY _ZTI8S19497C3[];
extern  VTBL_ENTRY _ZTV8S19497C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C3[];
static Base_Class bases_S19497C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19497C7,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19497C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19497C3,    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
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19497C2[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C2D1Ev();
extern void _ZN8S19497C2D0Ev();
extern void _ZN8S19497C32v3Ev();
static  VTBL_ENTRY vtc_S19497C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C2[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19497C32v3Ev,
};
extern VTBL_ENTRY _ZTV8S19497C2[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C3D1Ev();
extern void _ZN8S19497C3D0Ev();
extern void _ZN8S19497C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C3__8S19497C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C3[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19497C32v3Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C5__8S19497C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
static  VTT_ENTRY vtt_S19497C2[] = {
  {&(_ZTV8S19497C2[8]),  8,12},
  {&(_tg__ZTV8S19497C3__8S19497C2[8]),  8,12},
  {&(_tg__ZTV8S19497C3__8S19497C2[8]),  8,12},
  {&(_tg__ZTV8S19497C3__8S19497C2[8]),  8,12},
  {&(_ZTV8S19497C2[8]),  8,12},
  {&(_ZTV8S19497C2[8]),  8,12},
  {&(_tg__ZTV8S19497C5__8S19497C2[5]),  5,8},
  {&(_tg__ZTV8S19497C5__8S19497C2[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19497C2[];
extern  VTBL_ENTRY _ZTV8S19497C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C2[];
Class_Descriptor cd_S19497C2 = {  "S19497C2", // class name
  bases_S19497C2, 6,
  &(vtc_S19497C2[0]), // expected_vtbl_contents
  &(vtt_S19497C2[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S19497C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19497C2),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19497C2),8, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19497C11  : S19497C7 , virtual S20997C6 , S4227C37 {
  void *s19497c11f0[10];
  ~S19497C11(); // tgen
  S19497C11(); // tgen
};
//SIG(-1 S19497C11) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S19497C11()
{
  extern Class_Descriptor cd_S19497C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S19497C11, buf);
    S19497C11 *dp, &lv = *(dp=new (buf) S19497C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S19497C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C11)");
    check_base_class_offset(lv, (S19497C7*), 0, "S19497C11");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S19497C11");
    check_base_class_offset(lv, (S4227C37*), 0, "S19497C11");
    check_field_offset(lv, s19497c11f0, ABISELECT(8,4), "S19497C11.s19497c11f0");
    test_class_info(&lv, &cd_S19497C11);
    dp->~S19497C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C11(Test_S19497C11, "S19497C11", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN9S19497C11C1Ev();
extern void _ZN9S19497C11D1Ev();
Name_Map name_map_S19497C11[] = {
  NSPAIR(_ZN9S19497C11C1Ev),
  NSPAIR(_ZN9S19497C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S19497C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19497C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19497C11[];
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY vtc_S19497C11[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C11[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S19497C11[];
static  VTT_ENTRY vtt_S19497C11[] = {
  {&(_ZTV9S19497C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19497C11[];
extern  VTBL_ENTRY _ZTV9S19497C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C11[];
Class_Descriptor cd_S19497C11 = {  "S19497C11", // class name
  bases_S19497C11, 3,
  &(vtc_S19497C11[0]), // expected_vtbl_contents
  &(vtt_S19497C11[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI9S19497C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19497C11),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19497C11),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  S19497C13  : virtual S19497C7 {
  ::S19497C11 s19497c13f0[9];
  ~S19497C13(); // tgen
  S19497C13(); // tgen
};
//SIG(-1 S19497C13) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S19497C13()
{
  extern Class_Descriptor cd_S19497C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S19497C13, buf);
    S19497C13 *dp, &lv = *(dp=new (buf) S19497C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S19497C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C13)");
    check_base_class_offset(lv, (S19497C7*), 0, "S19497C13");
    check_field_offset(lv, s19497c13f0, ABISELECT(8,4), "S19497C13.s19497c13f0");
    test_class_info(&lv, &cd_S19497C13);
    dp->~S19497C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C13(Test_S19497C13, "S19497C13", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN9S19497C13C1Ev();
extern void _ZN9S19497C13D1Ev();
Name_Map name_map_S19497C13[] = {
  NSPAIR(_ZN9S19497C13C1Ev),
  NSPAIR(_ZN9S19497C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
static Base_Class bases_S19497C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19497C7,    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 _ZTI9S19497C13[];
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY vtc_S19497C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S19497C13[];
static  VTT_ENTRY vtt_S19497C13[] = {
  {&(_ZTV9S19497C13[4]),  4,5},
  {&(_ZTV9S19497C13[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S19497C13[];
extern  VTBL_ENTRY _ZTV9S19497C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C13[];
Class_Descriptor cd_S19497C13 = {  "S19497C13", // class name
  bases_S19497C13, 1,
  &(vtc_S19497C13[0]), // expected_vtbl_contents
  &(vtt_S19497C13[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI9S19497C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19497C13),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19497C13),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  S19497C14  : S19497C5 {
  virtual  ~S19497C14(); // _ZN9S19497C14D2Ev
  S19497C14(); // tgen
};
//SIG(-1 S19497C14) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S19497C14()
{
  extern Class_Descriptor cd_S19497C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19497C14, buf);
    S19497C14 *dp, &lv = *(dp=new (buf) S19497C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19497C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C14)");
    check_base_class_offset(lv, (S20997C6*)(S19497C5*), ABISELECT(8,4), "S19497C14");
    check_base_class_offset(lv, (S19497C7*)(S19497C5*), 0, "S19497C14");
    check_base_class_offset(lv, (S4227C37*)(S19497C5*), 0, "S19497C14");
    check_base_class_offset(lv, (S19497C5*), 0, "S19497C14");
    test_class_info(&lv, &cd_S19497C14);
    dp->~S19497C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C14(Test_S19497C14, "S19497C14", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S19497C14C1Ev();
extern void _ZN9S19497C14D2Ev();
Name_Map name_map_S19497C14[] = {
  NSPAIR(_ZN9S19497C14C1Ev),
  NSPAIR(_ZN9S19497C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
static Base_Class bases_S19497C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C7,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19497C14[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C14D1Ev();
extern void _ZN9S19497C14D0Ev();
static  VTBL_ENTRY vtc_S19497C14[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D0Ev,
};
extern VTBL_ENTRY _ZTV9S19497C14[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C5__9S19497C14[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
static  VTT_ENTRY vtt_S19497C14[] = {
  {&(_ZTV9S19497C14[5]),  5,8},
  {&(_tg__ZTV8S19497C5__9S19497C14[5]),  5,8},
  {&(_tg__ZTV8S19497C5__9S19497C14[5]),  5,8},
  {&(_ZTV9S19497C14[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19497C14[];
extern  VTBL_ENTRY _ZTV9S19497C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C14[];
Class_Descriptor cd_S19497C14 = {  "S19497C14", // class name
  bases_S19497C14, 4,
  &(vtc_S19497C14[0]), // expected_vtbl_contents
  &(vtt_S19497C14[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S19497C14),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19497C14),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19497C14),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  S19497C12  : virtual S4227C37 , S19497C13 , S19497C5 , S19497C14 {
  ~S19497C12(); // tgen
  S19497C12(); // tgen
};
//SIG(-1 S19497C12) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S19497C12()
{
  extern Class_Descriptor cd_S19497C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S19497C12, buf);
    S19497C12 *dp, &lv = *(dp=new (buf) S19497C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S19497C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C12)");
    /*is_ambiguous_... S19497C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S19497C12");
    check_base_class_offset(lv, (S19497C7*)(S19497C13*), 0, "S19497C12");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*), 0, "S19497C12");
    check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C14*), 0, "S19497C12");
    check_base_class_offset(lv, (S19497C13*), 0, "S19497C12");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*), ABISELECT(1176,768), "S19497C12");
    check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C14*), ABISELECT(1176,768), "S19497C12");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*), ABISELECT(1160,760), "S19497C12");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C5*), ABISELECT(1160,760), "S19497C12");
    check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C14*), ABISELECT(1168,764), "S19497C12");
    check_base_class_offset(lv, (S19497C5*)(S19497C14*), ABISELECT(1168,764), "S19497C12");
    check_base_class_offset(lv, (S19497C14*), ABISELECT(1168,764), "S19497C12");
    test_class_info(&lv, &cd_S19497C12);
    dp->~S19497C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C12(Test_S19497C12, "S19497C12", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN9S19497C12C1Ev();
extern void _ZN9S19497C12D1Ev();
Name_Map name_map_S19497C12[] = {
  NSPAIR(_ZN9S19497C12C1Ev),
  NSPAIR(_ZN9S19497C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S19497C13;
extern VTBL_ENTRY _ZTI9S19497C13[];
extern  VTBL_ENTRY _ZTV9S19497C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C13[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C14;
extern VTBL_ENTRY _ZTI9S19497C14[];
extern  VTBL_ENTRY _ZTV9S19497C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C14[];
static Base_Class bases_S19497C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19497C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19497C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19497C14,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19497C12[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C12D1Ev();
extern void _ZN9S19497C12D0Ev();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev)();
static  VTBL_ENTRY vtc_S19497C12[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19497C12[];
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C13__9S19497C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C5__9S19497C12[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C5__9S19497C12[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C14D1Ev();
extern void _ZN9S19497C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C14__9S19497C12[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C14__A1__9S19497C12[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C14__A1__9S19497C12[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C14__9S19497C12[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
static  VTT_ENTRY vtt_S19497C12[] = {
  {&(_ZTV9S19497C12[6]),  6,25},
  {&(_tg__ZTV9S19497C13__9S19497C12[4]),  4,5},
  {&(_tg__ZTV9S19497C13__9S19497C12[4]),  4,5},
  {&(_tg__ZTV8S19497C5__9S19497C12[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C5__9S19497C12[3]),  3,4},
  {&(_tg__ZTV9S19497C14__9S19497C12[5]),  5,8},
  {&(_tg__ZTV8S19497C59S19497C14__A1__9S19497C12[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C14__A1__9S19497C12[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C14__9S19497C12[3]),  3,4},
  {&(_ZTV9S19497C12[6]),  6,25},
  {&(_ZTV9S19497C12[14]),  14,25},
  {&(_ZTV9S19497C12[22]),  22,25},
};
extern VTBL_ENTRY _ZTI9S19497C12[];
extern  VTBL_ENTRY _ZTV9S19497C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C12[];
Class_Descriptor cd_S19497C12 = {  "S19497C12", // class name
  bases_S19497C12, 9,
  &(vtc_S19497C12[0]), // expected_vtbl_contents
  &(vtt_S19497C12[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI9S19497C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19497C12),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19497C12),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  S19497C10  : virtual S19497C7 , S19497C11 , virtual S19497C12 {
  virtual  ~S19497C10(); // _ZN9S19497C10D2Ev
  S19497C10(); // tgen
};
//SIG(-1 S19497C10) C1{ VBC2{ v1} BC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC5 BC7{ VBC2 FC3[9]} BC8{ VBC4 VBC2 BC5 vd} BC9{ BC8 vd}} vd}


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

static void Test_S19497C10()
{
  extern Class_Descriptor cd_S19497C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(165,215)];
    init_test(&cd_S19497C10, buf);
    S19497C10 *dp, &lv = *(dp=new (buf) S19497C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1312,856), "sizeof(S19497C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C10)");
    /*is_ambiguous_... S19497C10::S19497C7 */ AMB_check_base_class_offset(lv, (S19497C7*), ABISELECT(128,84), "S19497C10");
    check_base_class_offset(lv, (S19497C7*)(S19497C13*)(S19497C12*), ABISELECT(128,84), "S19497C10");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C12*), ABISELECT(128,84), "S19497C10");
    check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(128,84), "S19497C10");
    check_base_class_offset(lv, (S19497C7*)(S19497C11*), 0, "S19497C10");
    check_base_class_offset(lv, (S20997C6*)(S19497C11*), ABISELECT(88,44), "S19497C10");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C12*), ABISELECT(88,44), "S19497C10");
    check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(88,44), "S19497C10");
    check_base_class_offset(lv, (S4227C37*)(S19497C11*), 0, "S19497C10");
    check_base_class_offset(lv, (S19497C11*), 0, "S19497C10");
    /*is_ambiguous_... S19497C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C12*), ABISELECT(1304,852), "S19497C10");
    check_base_class_offset(lv, (S19497C13*)(S19497C12*), ABISELECT(128,84), "S19497C10");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C12*), ABISELECT(1288,844), "S19497C10");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C12*), ABISELECT(1288,844), "S19497C10");
    check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1296,848), "S19497C10");
    check_base_class_offset(lv, (S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1296,848), "S19497C10");
    check_base_class_offset(lv, (S19497C14*)(S19497C12*), ABISELECT(1296,848), "S19497C10");
    check_base_class_offset(lv, (S19497C12*), ABISELECT(128,84), "S19497C10");
    test_class_info(&lv, &cd_S19497C10);
    dp->~S19497C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C10(Test_S19497C10, "S19497C10", ABISELECT(1312,856));

#else // __cplusplus

extern void _ZN9S19497C10C1Ev();
extern void _ZN9S19497C10D2Ev();
Name_Map name_map_S19497C10[] = {
  NSPAIR(_ZN9S19497C10C1Ev),
  NSPAIR(_ZN9S19497C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C11;
extern VTBL_ENTRY _ZTI9S19497C11[];
extern  VTBL_ENTRY _ZTV9S19497C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C13;
extern VTBL_ENTRY _ZTI9S19497C13[];
extern  VTBL_ENTRY _ZTV9S19497C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C14;
extern VTBL_ENTRY _ZTI9S19497C14[];
extern  VTBL_ENTRY _ZTV9S19497C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C14[];
extern Class_Descriptor cd_S19497C12;
extern VTBL_ENTRY _ZTI9S19497C12[];
extern  VTBL_ENTRY _ZTV9S19497C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C12[];
static Base_Class bases_S19497C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19497C7,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19497C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19497C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C13,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1288,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(1288,844), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(1296,848), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19497C14,    ABISELECT(1296,848), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S19497C12,    ABISELECT(128,84), //bcp->offset
    9, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19497C10[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C10D1Ev();
extern void _ZN9S19497C10D0Ev();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19497C10D1Ev,_ZThn84_N9S19497C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19497C10D0Ev,_ZThn84_N9S19497C10D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY vtc_S19497C10[] = {
  ABISELECT(1304,852),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D0Ev,
  ABISELECT(-128,-84),
  -40,
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev),
};
extern VTBL_ENTRY _ZTV9S19497C10[];
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C11__9S19497C10[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C11[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C12D1Ev();
extern void _ZN9S19497C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C10[] = {
  -40,
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C139S19497C12__9S19497C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C10[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C12__9S19497C10[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C14D1Ev();
extern void _ZN9S19497C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C10[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C149S19497C12__A1__9S19497C10[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A1__9S19497C10[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C149S19497C12__9S19497C10[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C5__9S19497C12__9S19497C10[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C14__9S19497C12__9S19497C10[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev),
};
static  VTT_ENTRY vtt_S19497C10[] = {
  {&(_ZTV9S19497C10[6]),  6,35},
  {&(_tg__ZTV9S19497C11__9S19497C10[3]),  3,4},
  {&(_ZTV9S19497C10[16]),  16,35},
  {&(_ZTV9S19497C10[16]),  16,35},
  {&(_ZTV9S19497C10[24]),  24,35},
  {&(_ZTV9S19497C10[32]),  32,35},
  {&(_tg__ZTV9S19497C12__9S19497C10[6]),  6,9},
  {&(_tg__ZTV9S19497C139S19497C12__9S19497C10[4]),  4,5},
  {&(_tg__ZTV9S19497C139S19497C12__9S19497C10[4]),  4,5},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C10[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C12__9S19497C10[3]),  3,4},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C10[5]),  5,8},
  {&(_tg__ZTV8S19497C59S19497C149S19497C12__A1__9S19497C10[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A1__9S19497C10[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C149S19497C12__9S19497C10[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C10[6]),  6,9},
  {&(_tg__ZTV8S19497C5__9S19497C12__9S19497C10[5]),  5,8},
  {&(_tg__ZTV9S19497C14__9S19497C12__9S19497C10[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19497C10[];
extern  VTBL_ENTRY _ZTV9S19497C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C10[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19497C10D0Ev,_ZThn84_N9S19497C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19497C10D1Ev,_ZThn84_N9S19497C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19497C10 = {  "S19497C10", // class name
  bases_S19497C10, 13,
  &(vtc_S19497C10[0]), // expected_vtbl_contents
  &(vtt_S19497C10[0]), // expected_vtt_contents
  ABISELECT(1312,856), // object size
  NSPAIRA(_ZTI9S19497C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19497C10),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19497C10),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19497C9  : virtual S19497C10 {
  int s19497c9f0;
  ~S19497C9(); // tgen
  S19497C9(); // tgen
};
//SIG(-1 S19497C9) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} Fi}


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

static void Test_S19497C9()
{
  extern Class_Descriptor cd_S19497C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(166,216)];
    init_test(&cd_S19497C9, buf);
    S19497C9 *dp, &lv = *(dp=new (buf) S19497C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1320,860), "sizeof(S19497C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C9)");
    /*is_ambiguous_... S19497C10::S19497C7 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C10*), 0, "S19497C9");
    check_base_class_offset(lv, (S19497C7*)(S19497C13*)(S19497C12*), 0, "S19497C9");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C12*), 0, "S19497C9");
    check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C14*)(S19497C12*), 0, "S19497C9");
    check_base_class_offset(lv, (S19497C7*)(S19497C11*)(S19497C10*), ABISELECT(16,8), "S19497C9");
    check_base_class_offset(lv, (S20997C6*)(S19497C11*)(S19497C10*), ABISELECT(104,52), "S19497C9");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C12*), ABISELECT(104,52), "S19497C9");
    check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(104,52), "S19497C9");
    check_base_class_offset(lv, (S4227C37*)(S19497C11*)(S19497C10*), ABISELECT(16,8), "S19497C9");
    check_base_class_offset(lv, (S19497C11*)(S19497C10*), ABISELECT(16,8), "S19497C9");
    /*is_ambiguous_... S19497C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C12*), 0, "S19497C9");
    check_base_class_offset(lv, (S19497C13*)(S19497C12*), ABISELECT(144,92), "S19497C9");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C12*), ABISELECT(1304,852), "S19497C9");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C12*), ABISELECT(1304,852), "S19497C9");
    check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1312,856), "S19497C9");
    check_base_class_offset(lv, (S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1312,856), "S19497C9");
    check_base_class_offset(lv, (S19497C14*)(S19497C12*), ABISELECT(1312,856), "S19497C9");
    check_base_class_offset(lv, (S19497C12*)(S19497C10*), ABISELECT(144,92), "S19497C9");
    check_base_class_offset(lv, (S19497C10*), ABISELECT(16,8), "S19497C9");
    check_field_offset(lv, s19497c9f0, ABISELECT(8,4), "S19497C9.s19497c9f0");
    test_class_info(&lv, &cd_S19497C9);
    dp->~S19497C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C9(Test_S19497C9, "S19497C9", ABISELECT(1320,860));

#else // __cplusplus

extern void _ZN8S19497C9C1Ev();
extern void _ZN8S19497C9D1Ev();
Name_Map name_map_S19497C9[] = {
  NSPAIR(_ZN8S19497C9C1Ev),
  NSPAIR(_ZN8S19497C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C11;
extern VTBL_ENTRY _ZTI9S19497C11[];
extern  VTBL_ENTRY _ZTV9S19497C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C13;
extern VTBL_ENTRY _ZTI9S19497C13[];
extern  VTBL_ENTRY _ZTV9S19497C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C14;
extern VTBL_ENTRY _ZTI9S19497C14[];
extern  VTBL_ENTRY _ZTV9S19497C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C14[];
extern Class_Descriptor cd_S19497C12;
extern VTBL_ENTRY _ZTI9S19497C12[];
extern  VTBL_ENTRY _ZTV9S19497C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C12[];
extern Class_Descriptor cd_S19497C10;
extern VTBL_ENTRY _ZTI9S19497C10[];
extern  VTBL_ENTRY _ZTV9S19497C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C10[];
static Base_Class bases_S19497C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19497C7,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19497C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19497C11,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C13,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(1304,852), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(1312,856), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19497C14,    ABISELECT(1312,856), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19497C12,    ABISELECT(144,92), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19497C10,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19497C9[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C9D1Ev();
extern void _ZN8S19497C9D0Ev();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S19497C9D1Ev,_ZTv0_n32_N8S19497C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19497C9D1Ev,_ZThn8_N8S19497C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19497C9D0Ev,_ZTv0_n32_N8S19497C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19497C9D0Ev,_ZThn8_N8S19497C9D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S19497C9D1Ev,_ZTv0_n28_N8S19497C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S19497C9D1Ev,_ZThn92_N8S19497C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19497C9D0Ev,_ZTv0_n28_N8S19497C9D0Ev)();
extern void ABISELECT(_ZThn144_N8S19497C9D0Ev,_ZThn92_N8S19497C9D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19497C9D1Ev,_ZTvn760_n28_N8S19497C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19497C9D0Ev,_ZTvn760_n28_N8S19497C9D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19497C9D1Ev,_ZTvn764_n28_N8S19497C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19497C9D0Ev,_ZTvn764_n28_N8S19497C9D0Ev)();
static  VTBL_ENTRY vtc_S19497C9[] = {
  0,
  ABISELECT(144,92),
  ABISELECT(104,52),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C9D0Ev,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19497C9D1Ev,_ZTv0_n32_N8S19497C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19497C9D0Ev,_ZTv0_n32_N8S19497C9D0Ev),
  ABISELECT(-144,-92),
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19497C9D1Ev,_ZTv0_n28_N8S19497C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19497C9D0Ev,_ZTv0_n28_N8S19497C9D0Ev),
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1304,-852),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19497C9D1Ev,_ZTvn760_n28_N8S19497C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19497C9D0Ev,_ZTvn760_n28_N8S19497C9D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19497C9D1Ev,_ZTvn764_n28_N8S19497C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19497C9D0Ev,_ZTvn764_n28_N8S19497C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19497C9[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C10D1Ev();
extern void _ZN9S19497C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C10__8S19497C9[] = {
  ABISELECT(-16,-8),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C119S19497C10__8S19497C9[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C11[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C10__8S19497C9[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19497C10D1Ev,_ZThn84_N9S19497C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19497C10D0Ev,_ZThn84_N9S19497C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C10__8S19497C9[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C10__8S19497C9[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C10__8S19497C9[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C12D1Ev();
extern void _ZN9S19497C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C12__8S19497C9[] = {
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C139S19497C12__8S19497C9[] = {
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C139S19497C12__8S19497C9[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__8S19497C9[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C12__8S19497C9[] = {
  0,
  ABISELECT(1304,852),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C14D1Ev();
extern void _ZN9S19497C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__8S19497C9[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C149S19497C12__A1__8S19497C9[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A1__8S19497C9[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C149S19497C12__8S19497C9[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C12__8S19497C9[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C5__9S19497C12__8S19497C9[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C14__9S19497C12__8S19497C9[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev),
};
static  VTT_ENTRY vtt_S19497C9[] = {
  {&(_ZTV8S19497C9[8]),  8,48},
  {&(_ZTV8S19497C9[19]),  19,48},
  {&(_ZTV8S19497C9[8]),  8,48},
  {&(_ZTV8S19497C9[29]),  29,48},
  {&(_ZTV8S19497C9[37]),  37,48},
  {&(_ZTV8S19497C9[45]),  45,48},
  {&(_tg__ZTV9S19497C10__8S19497C9[6]),  6,9},
  {&(_tg__ZTV9S19497C119S19497C10__8S19497C9[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C10__8S19497C9[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C10__8S19497C9[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C10__8S19497C9[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C10__8S19497C9[5]),  5,8},
  {&(_tg__ZTV9S19497C12__8S19497C9[6]),  6,9},
  {&(_tg__ZTV9S19497C139S19497C12__8S19497C9[4]),  4,5},
  {&(_tg__ZTV8S19497C7__9S19497C139S19497C12__8S19497C9[3]),  3,4},
  {&(_tg__ZTV8S19497C59S19497C12__8S19497C9[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C12__8S19497C9[3]),  3,4},
  {&(_tg__ZTV9S19497C149S19497C12__8S19497C9[5]),  5,8},
  {&(_tg__ZTV8S19497C59S19497C149S19497C12__A1__8S19497C9[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A1__8S19497C9[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C149S19497C12__8S19497C9[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C12__8S19497C9[3]),  3,4},
  {&(_tg__ZTV8S19497C5__9S19497C12__8S19497C9[5]),  5,8},
  {&(_tg__ZTV9S19497C14__9S19497C12__8S19497C9[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19497C9[];
extern  VTBL_ENTRY _ZTV8S19497C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C9[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19497C10D0Ev,_ZThn84_N9S19497C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19497C10D1Ev,_ZThn84_N9S19497C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19497C9D0Ev,_ZTv0_n28_N8S19497C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19497C9D0Ev,_ZThn92_N8S19497C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19497C9D1Ev,_ZTv0_n28_N8S19497C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19497C9D1Ev,_ZThn92_N8S19497C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19497C9D0Ev,_ZTv0_n32_N8S19497C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19497C9D0Ev,_ZThn8_N8S19497C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19497C9D1Ev,_ZTv0_n32_N8S19497C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19497C9D1Ev,_ZThn8_N8S19497C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19497C9 = {  "S19497C9", // class name
  bases_S19497C9, 14,
  &(vtc_S19497C9[0]), // expected_vtbl_contents
  &(vtt_S19497C9[0]), // expected_vtt_contents
  ABISELECT(1320,860), // object size
  NSPAIRA(_ZTI8S19497C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19497C9),48, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19497C9),24, //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  S19497C8  : virtual S19497C9 {
  char s19497c8f0;
  ~S19497C8(); // tgen
  S19497C8(); // tgen
};
//SIG(-1 S19497C8) C1{ VBC2{ VBC3{ VBC4{ v1} BC5{ BC4 VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC7 BC9{ VBC4 FC5[9]} BC10{ VBC6 VBC4 BC7 vd} BC11{ BC10 vd}} vd} Fi} Fc}


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

static void Test_S19497C8()
{
  extern Class_Descriptor cd_S19497C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(168,218)];
    init_test(&cd_S19497C8, buf);
    S19497C8 *dp, &lv = *(dp=new (buf) S19497C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1336,868), "sizeof(S19497C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C8)");
    /*is_ambiguous_... S19497C10::S19497C7 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C10*), 0, "S19497C8");
    check_base_class_offset(lv, (S19497C7*)(S19497C13*)(S19497C12*), 0, "S19497C8");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C12*), 0, "S19497C8");
    check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C14*)(S19497C12*), 0, "S19497C8");
    check_base_class_offset(lv, (S19497C7*)(S19497C11*)(S19497C10*), ABISELECT(32,16), "S19497C8");
    check_base_class_offset(lv, (S20997C6*)(S19497C11*)(S19497C10*), ABISELECT(120,60), "S19497C8");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C12*), ABISELECT(120,60), "S19497C8");
    check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(120,60), "S19497C8");
    check_base_class_offset(lv, (S4227C37*)(S19497C11*)(S19497C10*), ABISELECT(32,16), "S19497C8");
    check_base_class_offset(lv, (S19497C11*)(S19497C10*), ABISELECT(32,16), "S19497C8");
    /*is_ambiguous_... S19497C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C12*), 0, "S19497C8");
    check_base_class_offset(lv, (S19497C13*)(S19497C12*), ABISELECT(160,100), "S19497C8");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C12*), ABISELECT(1320,860), "S19497C8");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C12*), ABISELECT(1320,860), "S19497C8");
    check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1328,864), "S19497C8");
    check_base_class_offset(lv, (S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1328,864), "S19497C8");
    check_base_class_offset(lv, (S19497C14*)(S19497C12*), ABISELECT(1328,864), "S19497C8");
    check_base_class_offset(lv, (S19497C12*)(S19497C10*), ABISELECT(160,100), "S19497C8");
    check_base_class_offset(lv, (S19497C10*)(S19497C9*), ABISELECT(32,16), "S19497C8");
    check_base_class_offset(lv, (S19497C9*), ABISELECT(16,8), "S19497C8");
    check_field_offset(lv, s19497c8f0, ABISELECT(8,4), "S19497C8.s19497c8f0");
    test_class_info(&lv, &cd_S19497C8);
    dp->~S19497C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C8(Test_S19497C8, "S19497C8", ABISELECT(1336,868));

#else // __cplusplus

extern void _ZN8S19497C8C1Ev();
extern void _ZN8S19497C8D1Ev();
Name_Map name_map_S19497C8[] = {
  NSPAIR(_ZN8S19497C8C1Ev),
  NSPAIR(_ZN8S19497C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C11;
extern VTBL_ENTRY _ZTI9S19497C11[];
extern  VTBL_ENTRY _ZTV9S19497C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C13;
extern VTBL_ENTRY _ZTI9S19497C13[];
extern  VTBL_ENTRY _ZTV9S19497C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C14;
extern VTBL_ENTRY _ZTI9S19497C14[];
extern  VTBL_ENTRY _ZTV9S19497C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C14[];
extern Class_Descriptor cd_S19497C12;
extern VTBL_ENTRY _ZTI9S19497C12[];
extern  VTBL_ENTRY _ZTV9S19497C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C12[];
extern Class_Descriptor cd_S19497C10;
extern VTBL_ENTRY _ZTI9S19497C10[];
extern  VTBL_ENTRY _ZTV9S19497C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C10[];
extern Class_Descriptor cd_S19497C9;
extern VTBL_ENTRY _ZTI8S19497C9[];
extern  VTBL_ENTRY _ZTV8S19497C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C9[];
static Base_Class bases_S19497C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19497C7,    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
    6, //immediately_derived
  0, 1},
  {&cd_S19497C7,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19497C11,    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
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C13,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(1320,860), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19497C5,    ABISELECT(1328,864), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19497C14,    ABISELECT(1328,864), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19497C12,    ABISELECT(160,100), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19497C10,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19497C9,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19497C8[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C8D1Ev();
extern void _ZN8S19497C8D0Ev();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S19497C8D1Ev,_ZTv0_n36_N8S19497C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19497C8D1Ev,_ZThn8_N8S19497C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19497C8D0Ev,_ZTv0_n36_N8S19497C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19497C8D0Ev,_ZThn8_N8S19497C8D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S19497C8D1Ev,_ZTv0_n32_N8S19497C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19497C8D1Ev,_ZThn16_N8S19497C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19497C8D0Ev,_ZTv0_n32_N8S19497C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19497C8D0Ev,_ZThn16_N8S19497C8D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S19497C8D1Ev,_ZTv0_n28_N8S19497C8D1Ev)();
extern void ABISELECT(_ZThn160_N8S19497C8D1Ev,_ZThn100_N8S19497C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19497C8D0Ev,_ZTv0_n28_N8S19497C8D0Ev)();
extern void ABISELECT(_ZThn160_N8S19497C8D0Ev,_ZThn100_N8S19497C8D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19497C8D1Ev,_ZTvn760_n28_N8S19497C8D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19497C8D0Ev,_ZTvn760_n28_N8S19497C8D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19497C8D1Ev,_ZTvn764_n28_N8S19497C8D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19497C8D0Ev,_ZTvn764_n28_N8S19497C8D0Ev)();
static  VTBL_ENTRY vtc_S19497C8[] = {
  0,
  ABISELECT(160,100),
  ABISELECT(120,60),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C8D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19497C8D1Ev,_ZTv0_n36_N8S19497C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19497C8D0Ev,_ZTv0_n36_N8S19497C8D0Ev),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-32,-16),
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19497C8D1Ev,_ZTv0_n32_N8S19497C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19497C8D0Ev,_ZTv0_n32_N8S19497C8D0Ev),
  ABISELECT(-160,-100),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19497C8D1Ev,_ZTv0_n28_N8S19497C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19497C8D0Ev,_ZTv0_n28_N8S19497C8D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1200,-800),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19497C8D1Ev,_ZTvn760_n28_N8S19497C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19497C8D0Ev,_ZTvn760_n28_N8S19497C8D0Ev),
  ABISELECT(-1328,-864),
  ABISELECT(-1208,-804),
  ABISELECT(-1328,-864),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19497C8D1Ev,_ZTvn764_n28_N8S19497C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19497C8D0Ev,_ZTvn764_n28_N8S19497C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19497C8[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C9D1Ev();
extern void _ZN8S19497C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C9__8S19497C8[] = {
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C9D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S19497C9D1Ev,_ZTv0_n32_N8S19497C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19497C9D1Ev,_ZThn8_N8S19497C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19497C9D0Ev,_ZTv0_n32_N8S19497C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19497C9D0Ev,_ZThn8_N8S19497C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C10__8S19497C9__8S19497C8[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-32,-16),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19497C9D1Ev,_ZTv0_n32_N8S19497C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19497C9D0Ev,_ZTv0_n32_N8S19497C9D0Ev),
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C9__8S19497C8[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S19497C9D1Ev,_ZTv0_n28_N8S19497C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S19497C9D1Ev,_ZThn92_N8S19497C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19497C9D0Ev,_ZTv0_n28_N8S19497C9D0Ev)();
extern void ABISELECT(_ZThn144_N8S19497C9D0Ev,_ZThn92_N8S19497C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C12__8S19497C9__8S19497C8[] = {
  ABISELECT(-144,-92),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19497C9D1Ev,_ZTv0_n28_N8S19497C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19497C9D0Ev,_ZTv0_n28_N8S19497C9D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19497C9D1Ev,_ZTvn760_n28_N8S19497C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19497C9D0Ev,_ZTvn760_n28_N8S19497C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__8S19497C9__8S19497C8[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1200,-800),
  ABISELECT(-1320,-860),
  ABISELECT(-1304,-852),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19497C9D1Ev,_ZTvn760_n28_N8S19497C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19497C9D0Ev,_ZTvn760_n28_N8S19497C9D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19497C9D1Ev,_ZTvn764_n28_N8S19497C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19497C9D0Ev,_ZTvn764_n28_N8S19497C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__8S19497C9__8S19497C8[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1208,-804),
  ABISELECT(-1328,-864),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19497C9D1Ev,_ZTvn764_n28_N8S19497C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19497C9D0Ev,_ZTvn764_n28_N8S19497C9D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C10D1Ev();
extern void _ZN9S19497C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C10__8S19497C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-32,-16),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C119S19497C10__8S19497C8[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C11[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C10__8S19497C8[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19497C10D1Ev,_ZThn84_N9S19497C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19497C10D0Ev,_ZThn84_N9S19497C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C10__8S19497C8[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C10__8S19497C8[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1200,-800),
  ABISELECT(-1320,-860),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C10__8S19497C8[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1208,-804),
  ABISELECT(-1328,-864),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C12D1Ev();
extern void _ZN9S19497C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C12__8S19497C8[] = {
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C139S19497C12__8S19497C8[] = {
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C139S19497C12__8S19497C8[] = {
  0,
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__8S19497C8[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1200,-800),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C12__8S19497C8[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C14D1Ev();
extern void _ZN9S19497C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__8S19497C8[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1208,-804),
  ABISELECT(-1328,-864),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C149S19497C12__A1__8S19497C8[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1208,-804),
  ABISELECT(-1328,-864),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A1__8S19497C8[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C149S19497C12__8S19497C8[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C12__8S19497C8[] = {
  0,
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C5__9S19497C12__8S19497C8[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1200,-800),
  ABISELECT(-1320,-860),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C14__9S19497C12__8S19497C8[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1208,-804),
  ABISELECT(-1328,-864),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev),
};
static  VTT_ENTRY vtt_S19497C8[] = {
  {&(_ZTV8S19497C8[9]),  9,61},
  {&(_ZTV8S19497C8[21]),  21,61},
  {&(_ZTV8S19497C8[32]),  32,61},
  {&(_ZTV8S19497C8[9]),  9,61},
  {&(_ZTV8S19497C8[42]),  42,61},
  {&(_ZTV8S19497C8[50]),  50,61},
  {&(_ZTV8S19497C8[58]),  58,61},
  {&(_tg__ZTV8S19497C9__8S19497C8[8]),  8,11},
  {&(_tg__ZTV9S19497C10__8S19497C9__8S19497C8[8]),  8,11},
  {&(_tg__ZTV8S19497C7__8S19497C9__8S19497C8[3]),  3,4},
  {&(_tg__ZTV9S19497C12__8S19497C9__8S19497C8[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__8S19497C9__8S19497C8[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__8S19497C9__8S19497C8[5]),  5,8},
  {&(_tg__ZTV9S19497C10__8S19497C8[6]),  6,9},
  {&(_tg__ZTV9S19497C119S19497C10__8S19497C8[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C10__8S19497C8[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C10__8S19497C8[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C10__8S19497C8[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C10__8S19497C8[5]),  5,8},
  {&(_tg__ZTV9S19497C12__8S19497C8[6]),  6,9},
  {&(_tg__ZTV9S19497C139S19497C12__8S19497C8[4]),  4,5},
  {&(_tg__ZTV8S19497C7__9S19497C139S19497C12__8S19497C8[3]),  3,4},
  {&(_tg__ZTV8S19497C59S19497C12__8S19497C8[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C12__8S19497C8[3]),  3,4},
  {&(_tg__ZTV9S19497C149S19497C12__8S19497C8[5]),  5,8},
  {&(_tg__ZTV8S19497C59S19497C149S19497C12__A1__8S19497C8[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A1__8S19497C8[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C149S19497C12__8S19497C8[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C12__8S19497C8[3]),  3,4},
  {&(_tg__ZTV8S19497C5__9S19497C12__8S19497C8[5]),  5,8},
  {&(_tg__ZTV9S19497C14__9S19497C12__8S19497C8[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19497C8[];
extern  VTBL_ENTRY _ZTV8S19497C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C8[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19497C10D0Ev,_ZThn84_N9S19497C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19497C10D1Ev,_ZThn84_N9S19497C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19497C9D0Ev,_ZTv0_n28_N8S19497C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19497C9D0Ev,_ZThn92_N8S19497C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19497C9D1Ev,_ZTv0_n28_N8S19497C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S19497C9D1Ev,_ZThn92_N8S19497C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19497C9D0Ev,_ZTv0_n32_N8S19497C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19497C9D0Ev,_ZThn8_N8S19497C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19497C9D1Ev,_ZTv0_n32_N8S19497C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19497C9D1Ev,_ZThn8_N8S19497C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19497C8D0Ev,_ZTv0_n28_N8S19497C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19497C8D0Ev,_ZThn100_N8S19497C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19497C8D1Ev,_ZTv0_n28_N8S19497C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S19497C8D1Ev,_ZThn100_N8S19497C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19497C8D0Ev,_ZTv0_n32_N8S19497C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19497C8D0Ev,_ZThn16_N8S19497C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19497C8D1Ev,_ZTv0_n32_N8S19497C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19497C8D1Ev,_ZThn16_N8S19497C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19497C8D0Ev,_ZTv0_n36_N8S19497C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19497C8D0Ev,_ZThn8_N8S19497C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19497C8D1Ev,_ZTv0_n36_N8S19497C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19497C8D1Ev,_ZThn8_N8S19497C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19497C8 = {  "S19497C8", // class name
  bases_S19497C8, 15,
  &(vtc_S19497C8[0]), // expected_vtbl_contents
  &(vtt_S19497C8[0]), // expected_vtt_contents
  ABISELECT(1336,868), // object size
  NSPAIRA(_ZTI8S19497C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19497C8),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19497C8),31, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19497C15  : virtual S20997C6 {
  int s19497c15f0;
  ~S19497C15(); // tgen
  S19497C15(); // tgen
};
//SIG(-1 S19497C15) C1{ VBC2{ m FL[5]} Fi}


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

static void Test_S19497C15()
{
  extern Class_Descriptor cd_S19497C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S19497C15, buf);
    S19497C15 *dp, &lv = *(dp=new (buf) S19497C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S19497C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C15)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(16,8), "S19497C15");
    check_field_offset(lv, s19497c15f0, ABISELECT(8,4), "S19497C15.s19497c15f0");
    test_class_info(&lv, &cd_S19497C15);
    dp->~S19497C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C15(Test_S19497C15, "S19497C15", ABISELECT(56,48));

#else // __cplusplus

extern void _ZN9S19497C15C1Ev();
extern void _ZN9S19497C15D1Ev();
Name_Map name_map_S19497C15[] = {
  NSPAIR(_ZN9S19497C15C1Ev),
  NSPAIR(_ZN9S19497C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
static Base_Class bases_S19497C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    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 _ZTI9S19497C15[];
static  VTBL_ENTRY vtc_S19497C15[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C15[0]),
};
extern VTBL_ENTRY _ZTV9S19497C15[];
static  VTT_ENTRY vtt_S19497C15[] = {
  {&(_ZTV9S19497C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19497C15[];
extern  VTBL_ENTRY _ZTV9S19497C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C15[];
Class_Descriptor cd_S19497C15 = {  "S19497C15", // class name
  bases_S19497C15, 1,
  &(vtc_S19497C15[0]), // expected_vtbl_contents
  &(vtt_S19497C15[0]), // expected_vtt_contents
  ABISELECT(56,48), // object size
  NSPAIRA(_ZTI9S19497C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19497C15),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19497C15),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  S19497C20  : S20997C6 , S19497C7 {
  ~S19497C20(); // tgen
  S19497C20(); // tgen
};
//SIG(-1 S19497C20) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S19497C20()
{
  extern Class_Descriptor cd_S19497C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19497C20, buf);
    S19497C20 *dp, &lv = *(dp=new (buf) S19497C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19497C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C20)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S19497C20");
    check_base_class_offset(lv, (S19497C7*), 0, "S19497C20");
    test_class_info(&lv, &cd_S19497C20);
    dp->~S19497C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C20(Test_S19497C20, "S19497C20", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S19497C20C1Ev();
extern void _ZN9S19497C20D1Ev();
Name_Map name_map_S19497C20[] = {
  NSPAIR(_ZN9S19497C20C1Ev),
  NSPAIR(_ZN9S19497C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
static Base_Class bases_S19497C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19497C7,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19497C20[];
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY vtc_S19497C20[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C20[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern VTBL_ENTRY _ZTI9S19497C20[];
extern  VTBL_ENTRY _ZTV9S19497C20[];
Class_Descriptor cd_S19497C20 = {  "S19497C20", // class name
  bases_S19497C20, 2,
  &(vtc_S19497C20[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S19497C20),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19497C20),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19497C19  : S19497C20 {
  long double s19497c19f0;
  ~S19497C19(); // tgen
  S19497C19(); // tgen
};
//SIG(-1 S19497C19) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} FD}


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

static void Test_S19497C19()
{
  extern Class_Descriptor cd_S19497C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,15)];
    init_test(&cd_S19497C19, buf);
    S19497C19 *dp, &lv = *(dp=new (buf) S19497C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S19497C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19497C19)");
    check_base_class_offset(lv, (S20997C6*)(S19497C20*), ABISELECT(8,4), "S19497C19");
    check_base_class_offset(lv, (S19497C7*)(S19497C20*), 0, "S19497C19");
    check_base_class_offset(lv, (S19497C20*), 0, "S19497C19");
    check_field_offset(lv, s19497c19f0, ABISELECT(48,44), "S19497C19.s19497c19f0");
    test_class_info(&lv, &cd_S19497C19);
    dp->~S19497C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C19(Test_S19497C19, "S19497C19", ABISELECT(64,56));

#else // __cplusplus

extern void _ZN9S19497C19C1Ev();
extern void _ZN9S19497C19D1Ev();
Name_Map name_map_S19497C19[] = {
  NSPAIR(_ZN9S19497C19C1Ev),
  NSPAIR(_ZN9S19497C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S19497C20;
extern VTBL_ENTRY _ZTI9S19497C20[];
extern  VTBL_ENTRY _ZTV9S19497C20[];
static Base_Class bases_S19497C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19497C7,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19497C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19497C19[];
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY vtc_S19497C19[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C19[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern VTBL_ENTRY _ZTI9S19497C19[];
extern  VTBL_ENTRY _ZTV9S19497C19[];
Class_Descriptor cd_S19497C19 = {  "S19497C19", // class name
  bases_S19497C19, 3,
  &(vtc_S19497C19[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,56), // object size
  NSPAIRA(_ZTI9S19497C19),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19497C19),3, //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  S19497C18  : virtual S19497C10 , S19497C19 {
  ~S19497C18(); // tgen
  S19497C18(); // tgen
};
//SIG(-1 S19497C18) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} BC11{ BC12{ BC5 BC3} FD}}


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

static void Test_S19497C18()
{
  extern Class_Descriptor cd_S19497C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S19497C18, buf);
    S19497C18 *dp, &lv = *(dp=new (buf) S19497C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S19497C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19497C18)");
    /*is_ambiguous_... S19497C10::S19497C7 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C10*), ABISELECT(192,140), "S19497C18");
    check_base_class_offset(lv, (S19497C7*)(S19497C13*)(S19497C12*), ABISELECT(192,140), "S19497C18");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C12*), ABISELECT(192,140), "S19497C18");
    check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(192,140), "S19497C18");
    check_base_class_offset(lv, (S19497C7*)(S19497C11*)(S19497C10*), ABISELECT(64,56), "S19497C18");
    check_base_class_offset(lv, (S20997C6*)(S19497C11*)(S19497C10*), ABISELECT(152,100), "S19497C18");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C12*), ABISELECT(152,100), "S19497C18");
    check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(152,100), "S19497C18");
    check_base_class_offset(lv, (S4227C37*)(S19497C11*)(S19497C10*), ABISELECT(64,56), "S19497C18");
    check_base_class_offset(lv, (S19497C11*)(S19497C10*), ABISELECT(64,56), "S19497C18");
    /*is_ambiguous_... S19497C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C12*), 0, "S19497C18");
    check_base_class_offset(lv, (S19497C13*)(S19497C12*), ABISELECT(192,140), "S19497C18");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C12*), ABISELECT(1352,900), "S19497C18");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C12*), ABISELECT(1352,900), "S19497C18");
    check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1360,904), "S19497C18");
    check_base_class_offset(lv, (S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1360,904), "S19497C18");
    check_base_class_offset(lv, (S19497C14*)(S19497C12*), ABISELECT(1360,904), "S19497C18");
    check_base_class_offset(lv, (S19497C12*)(S19497C10*), ABISELECT(192,140), "S19497C18");
    check_base_class_offset(lv, (S19497C10*), ABISELECT(64,56), "S19497C18");
    check_base_class_offset(lv, (S20997C6*)(S19497C20*)(S19497C19*), ABISELECT(8,4), "S19497C18");
    check_base_class_offset(lv, (S19497C7*)(S19497C20*)(S19497C19*), 0, "S19497C18");
    check_base_class_offset(lv, (S19497C20*)(S19497C19*), 0, "S19497C18");
    check_base_class_offset(lv, (S19497C19*), 0, "S19497C18");
    test_class_info(&lv, &cd_S19497C18);
    dp->~S19497C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C18(Test_S19497C18, "S19497C18", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN9S19497C18C1Ev();
extern void _ZN9S19497C18D1Ev();
Name_Map name_map_S19497C18[] = {
  NSPAIR(_ZN9S19497C18C1Ev),
  NSPAIR(_ZN9S19497C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C11;
extern VTBL_ENTRY _ZTI9S19497C11[];
extern  VTBL_ENTRY _ZTV9S19497C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C13;
extern VTBL_ENTRY _ZTI9S19497C13[];
extern  VTBL_ENTRY _ZTV9S19497C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C14;
extern VTBL_ENTRY _ZTI9S19497C14[];
extern  VTBL_ENTRY _ZTV9S19497C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C14[];
extern Class_Descriptor cd_S19497C12;
extern VTBL_ENTRY _ZTI9S19497C12[];
extern  VTBL_ENTRY _ZTV9S19497C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C12[];
extern Class_Descriptor cd_S19497C10;
extern VTBL_ENTRY _ZTI9S19497C10[];
extern  VTBL_ENTRY _ZTV9S19497C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S19497C20;
extern VTBL_ENTRY _ZTI9S19497C20[];
extern  VTBL_ENTRY _ZTV9S19497C20[];
extern Class_Descriptor cd_S19497C19;
extern VTBL_ENTRY _ZTI9S19497C19[];
extern  VTBL_ENTRY _ZTV9S19497C19[];
static Base_Class bases_S19497C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19497C7,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19497C7,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S19497C11,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C13,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19497C5,    ABISELECT(1352,900), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19497C14,    ABISELECT(1360,904), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19497C12,    ABISELECT(192,140), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19497C10,    ABISELECT(64,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19497C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19497C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19497C18[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C18D1Ev();
extern void _ZN9S19497C18D0Ev();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19497C18D1Ev,_ZTv0_n32_N9S19497C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S19497C18D1Ev,_ZThn56_N9S19497C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19497C18D0Ev,_ZTv0_n32_N9S19497C18D0Ev)();
extern void ABISELECT(_ZThn64_N9S19497C18D0Ev,_ZThn56_N9S19497C18D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C18D1Ev,_ZTv0_n28_N9S19497C18D1Ev)();
extern void ABISELECT(_ZThn192_N9S19497C18D1Ev,_ZThn140_N9S19497C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C18D0Ev,_ZTv0_n28_N9S19497C18D0Ev)();
extern void ABISELECT(_ZThn192_N9S19497C18D0Ev,_ZThn140_N9S19497C18D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C18D1Ev,_ZTvn760_n28_N9S19497C18D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C18D0Ev,_ZTvn760_n28_N9S19497C18D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C18D1Ev,_ZTvn764_n28_N9S19497C18D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C18D0Ev,_ZTvn764_n28_N9S19497C18D0Ev)();
static  VTBL_ENTRY vtc_S19497C18[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C18D0Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C18D1Ev,_ZTv0_n32_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C18D0Ev,_ZTv0_n32_N9S19497C18D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C18D1Ev,_ZTv0_n28_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C18D0Ev,_ZTv0_n28_N9S19497C18D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C18D1Ev,_ZTvn760_n28_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C18D0Ev,_ZTvn760_n28_N9S19497C18D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C18D1Ev,_ZTvn764_n28_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C18D0Ev,_ZTvn764_n28_N9S19497C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S19497C18[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C10D1Ev();
extern void _ZN9S19497C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C10__9S19497C18[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C119S19497C10__9S19497C18[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C11[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19497C10D1Ev,_ZThn84_N9S19497C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19497C10D0Ev,_ZThn84_N9S19497C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C10__9S19497C18[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C10__9S19497C18[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C10__9S19497C18[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C12D1Ev();
extern void _ZN9S19497C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C18[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C139S19497C12__9S19497C18[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C18[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C12__9S19497C18[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C14D1Ev();
extern void _ZN9S19497C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C18[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C149S19497C12__A1__9S19497C18[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A1__9S19497C18[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C149S19497C12__9S19497C18[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C5__9S19497C12__9S19497C18[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C14__9S19497C12__9S19497C18[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev),
};
static  VTT_ENTRY vtt_S19497C18[] = {
  {&(_ZTV9S19497C18[7]),  7,47},
  {&(_ZTV9S19497C18[18]),  18,47},
  {&(_ZTV9S19497C18[28]),  28,47},
  {&(_ZTV9S19497C18[28]),  28,47},
  {&(_ZTV9S19497C18[36]),  36,47},
  {&(_ZTV9S19497C18[44]),  44,47},
  {&(_tg__ZTV9S19497C10__9S19497C18[6]),  6,9},
  {&(_tg__ZTV9S19497C119S19497C10__9S19497C18[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C10__9S19497C18[7]),  7,10},
  {&(_tg__ZTV9S19497C12__9S19497C10__9S19497C18[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C10__9S19497C18[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C10__9S19497C18[5]),  5,8},
  {&(_tg__ZTV9S19497C12__9S19497C18[6]),  6,9},
  {&(_tg__ZTV9S19497C139S19497C12__9S19497C18[4]),  4,5},
  {&(_tg__ZTV9S19497C139S19497C12__9S19497C18[4]),  4,5},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C18[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C12__9S19497C18[3]),  3,4},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C18[5]),  5,8},
  {&(_tg__ZTV8S19497C59S19497C149S19497C12__A1__9S19497C18[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A1__9S19497C18[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C149S19497C12__9S19497C18[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C18[6]),  6,9},
  {&(_tg__ZTV8S19497C5__9S19497C12__9S19497C18[5]),  5,8},
  {&(_tg__ZTV9S19497C14__9S19497C12__9S19497C18[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19497C18[];
extern  VTBL_ENTRY _ZTV9S19497C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C18[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19497C10D0Ev,_ZThn84_N9S19497C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19497C10D1Ev,_ZThn84_N9S19497C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C18D0Ev,_ZTv0_n28_N9S19497C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19497C18D0Ev,_ZThn140_N9S19497C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C18D1Ev,_ZTv0_n28_N9S19497C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19497C18D1Ev,_ZThn140_N9S19497C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19497C18D0Ev,_ZTv0_n32_N9S19497C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19497C18D0Ev,_ZThn56_N9S19497C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19497C18D1Ev,_ZTv0_n32_N9S19497C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19497C18D1Ev,_ZThn56_N9S19497C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19497C18 = {  "S19497C18", // class name
  bases_S19497C18, 18,
  &(vtc_S19497C18[0]), // expected_vtbl_contents
  &(vtt_S19497C18[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI9S19497C18),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19497C18),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19497C18),24, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19497C17  : S19497C18 {
  virtual  ~S19497C17(); // _ZN9S19497C17D2Ev
  virtual void  v4(); // _ZN9S19497C172v4Ev
  S19497C17(); // tgen
};
//SIG(-1 S19497C17) C1{ BC2{ VBC3{ VBC4{ v2} BC5{ BC4 VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC7 BC9{ VBC4 FC5[9]} BC10{ VBC6 VBC4 BC7 vd} BC11{ BC10 vd}} vd} BC12{ BC13{ BC6 BC4} FD}} vd v1}


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

static void Test_S19497C17()
{
  extern Class_Descriptor cd_S19497C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S19497C17, buf);
    S19497C17 *dp, &lv = *(dp=new (buf) S19497C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S19497C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19497C17)");
    /*is_ambiguous_... S19497C10::S19497C7 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C10*), ABISELECT(192,140), "S19497C17");
    check_base_class_offset(lv, (S19497C7*)(S19497C13*)(S19497C12*), ABISELECT(192,140), "S19497C17");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C12*), ABISELECT(192,140), "S19497C17");
    check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(192,140), "S19497C17");
    check_base_class_offset(lv, (S19497C7*)(S19497C11*)(S19497C10*), ABISELECT(64,56), "S19497C17");
    check_base_class_offset(lv, (S20997C6*)(S19497C11*)(S19497C10*), ABISELECT(152,100), "S19497C17");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C12*), ABISELECT(152,100), "S19497C17");
    check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(152,100), "S19497C17");
    check_base_class_offset(lv, (S4227C37*)(S19497C11*)(S19497C10*), ABISELECT(64,56), "S19497C17");
    check_base_class_offset(lv, (S19497C11*)(S19497C10*), ABISELECT(64,56), "S19497C17");
    /*is_ambiguous_... S19497C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C12*), 0, "S19497C17");
    check_base_class_offset(lv, (S19497C13*)(S19497C12*), ABISELECT(192,140), "S19497C17");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C12*), ABISELECT(1352,900), "S19497C17");
    /*is_ambiguous_... S19497C12::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C12*), ABISELECT(1352,900), "S19497C17");
    check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1360,904), "S19497C17");
    check_base_class_offset(lv, (S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1360,904), "S19497C17");
    check_base_class_offset(lv, (S19497C14*)(S19497C12*), ABISELECT(1360,904), "S19497C17");
    check_base_class_offset(lv, (S19497C12*)(S19497C10*), ABISELECT(192,140), "S19497C17");
    check_base_class_offset(lv, (S19497C10*)(S19497C18*), ABISELECT(64,56), "S19497C17");
    check_base_class_offset(lv, (S20997C6*)(S19497C20*)(S19497C19*)(S19497C18*), ABISELECT(8,4), "S19497C17");
    check_base_class_offset(lv, (S19497C7*)(S19497C20*)(S19497C19*)(S19497C18*), 0, "S19497C17");
    check_base_class_offset(lv, (S19497C20*)(S19497C19*)(S19497C18*), 0, "S19497C17");
    check_base_class_offset(lv, (S19497C19*)(S19497C18*), 0, "S19497C17");
    check_base_class_offset(lv, (S19497C18*), 0, "S19497C17");
    test_class_info(&lv, &cd_S19497C17);
    dp->~S19497C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C17(Test_S19497C17, "S19497C17", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN9S19497C17C1Ev();
extern void _ZN9S19497C17D2Ev();
Name_Map name_map_S19497C17[] = {
  NSPAIR(_ZN9S19497C17C1Ev),
  NSPAIR(_ZN9S19497C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C11;
extern VTBL_ENTRY _ZTI9S19497C11[];
extern  VTBL_ENTRY _ZTV9S19497C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C13;
extern VTBL_ENTRY _ZTI9S19497C13[];
extern  VTBL_ENTRY _ZTV9S19497C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C14;
extern VTBL_ENTRY _ZTI9S19497C14[];
extern  VTBL_ENTRY _ZTV9S19497C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C14[];
extern Class_Descriptor cd_S19497C12;
extern VTBL_ENTRY _ZTI9S19497C12[];
extern  VTBL_ENTRY _ZTV9S19497C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C12[];
extern Class_Descriptor cd_S19497C10;
extern VTBL_ENTRY _ZTI9S19497C10[];
extern  VTBL_ENTRY _ZTV9S19497C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S19497C20;
extern VTBL_ENTRY _ZTI9S19497C20[];
extern  VTBL_ENTRY _ZTV9S19497C20[];
extern Class_Descriptor cd_S19497C19;
extern VTBL_ENTRY _ZTI9S19497C19[];
extern  VTBL_ENTRY _ZTV9S19497C19[];
extern Class_Descriptor cd_S19497C18;
extern VTBL_ENTRY _ZTI9S19497C18[];
extern  VTBL_ENTRY _ZTV9S19497C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C18[];
static Base_Class bases_S19497C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19497C7,    ABISELECT(192,140), //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
    6, //immediately_derived
  0, 1},
  {&cd_S19497C7,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S19497C11,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C13,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19497C5,    ABISELECT(1352,900), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19497C14,    ABISELECT(1360,904), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19497C12,    ABISELECT(192,140), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19497C10,    ABISELECT(64,56), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19497C20,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19497C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19497C18,    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
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19497C17[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C17D1Ev();
extern void _ZN9S19497C17D0Ev();
extern void _ZN9S19497C172v4Ev();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19497C17D1Ev,_ZTv0_n32_N9S19497C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S19497C17D1Ev,_ZThn56_N9S19497C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19497C17D0Ev,_ZTv0_n32_N9S19497C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S19497C17D0Ev,_ZThn56_N9S19497C17D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C17D1Ev,_ZTv0_n28_N9S19497C17D1Ev)();
extern void ABISELECT(_ZThn192_N9S19497C17D1Ev,_ZThn140_N9S19497C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C17D0Ev,_ZTv0_n28_N9S19497C17D0Ev)();
extern void ABISELECT(_ZThn192_N9S19497C17D0Ev,_ZThn140_N9S19497C17D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C17D1Ev,_ZTvn760_n28_N9S19497C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C17D0Ev,_ZTvn760_n28_N9S19497C17D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C17D1Ev,_ZTvn764_n28_N9S19497C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C17D0Ev,_ZTvn764_n28_N9S19497C17D0Ev)();
static  VTBL_ENTRY vtc_S19497C17[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19497C172v4Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C17D1Ev,_ZTv0_n32_N9S19497C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C17D0Ev,_ZTv0_n32_N9S19497C17D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C17D1Ev,_ZTv0_n28_N9S19497C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C17D0Ev,_ZTv0_n28_N9S19497C17D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C17D1Ev,_ZTvn760_n28_N9S19497C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C17D0Ev,_ZTvn760_n28_N9S19497C17D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C17D1Ev,_ZTvn764_n28_N9S19497C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C17D0Ev,_ZTvn764_n28_N9S19497C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S19497C17[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C18D1Ev();
extern void _ZN9S19497C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C18__9S19497C17[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C18D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19497C18D1Ev,_ZTv0_n32_N9S19497C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S19497C18D1Ev,_ZThn56_N9S19497C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19497C18D0Ev,_ZTv0_n32_N9S19497C18D0Ev)();
extern void ABISELECT(_ZThn64_N9S19497C18D0Ev,_ZThn56_N9S19497C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C10__9S19497C18__9S19497C17[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C18D1Ev,_ZTv0_n32_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C18D0Ev,_ZTv0_n32_N9S19497C18D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C18D1Ev,_ZTv0_n28_N9S19497C18D1Ev)();
extern void ABISELECT(_ZThn192_N9S19497C18D1Ev,_ZThn140_N9S19497C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C18D0Ev,_ZTv0_n28_N9S19497C18D0Ev)();
extern void ABISELECT(_ZThn192_N9S19497C18D0Ev,_ZThn140_N9S19497C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C18__9S19497C17[] = {
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C18D1Ev,_ZTv0_n28_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C18D0Ev,_ZTv0_n28_N9S19497C18D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C18D1Ev,_ZTvn760_n28_N9S19497C18D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C18D0Ev,_ZTvn760_n28_N9S19497C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C18__9S19497C17[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C18D1Ev,_ZTvn760_n28_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C18D0Ev,_ZTvn760_n28_N9S19497C18D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C18D1Ev,_ZTvn764_n28_N9S19497C18D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C18D0Ev,_ZTvn764_n28_N9S19497C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C18__9S19497C17[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C18D1Ev,_ZTvn764_n28_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C18D0Ev,_ZTvn764_n28_N9S19497C18D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C10D1Ev();
extern void _ZN9S19497C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C10__9S19497C17[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C119S19497C10__9S19497C17[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C11[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZThn128_N9S19497C10D1Ev,_ZThn84_N9S19497C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev)();
extern void ABISELECT(_ZThn128_N9S19497C10D0Ev,_ZThn84_N9S19497C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C10__9S19497C17[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C10__9S19497C17[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C10__9S19497C17[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C12D1Ev();
extern void _ZN9S19497C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C17[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C139S19497C12__9S19497C17[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C17[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C12__9S19497C17[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C14D1Ev();
extern void _ZN9S19497C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C17[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C149S19497C12__A1__9S19497C17[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A1__9S19497C17[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C149S19497C12__9S19497C17[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C5__9S19497C12__9S19497C17[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C14__9S19497C12__9S19497C17[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev),
};
static  VTT_ENTRY vtt_S19497C17[] = {
  {&(_ZTV9S19497C17[7]),  7,48},
  {&(_tg__ZTV9S19497C18__9S19497C17[7]),  7,10},
  {&(_tg__ZTV9S19497C10__9S19497C18__9S19497C17[8]),  8,11},
  {&(_tg__ZTV9S19497C12__9S19497C18__9S19497C17[7]),  7,10},
  {&(_tg__ZTV9S19497C12__9S19497C18__9S19497C17[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C18__9S19497C17[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C18__9S19497C17[5]),  5,8},
  {&(_ZTV9S19497C17[19]),  19,48},
  {&(_ZTV9S19497C17[29]),  29,48},
  {&(_ZTV9S19497C17[29]),  29,48},
  {&(_ZTV9S19497C17[37]),  37,48},
  {&(_ZTV9S19497C17[45]),  45,48},
  {&(_tg__ZTV9S19497C10__9S19497C17[6]),  6,9},
  {&(_tg__ZTV9S19497C119S19497C10__9S19497C17[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C10__9S19497C17[7]),  7,10},
  {&(_tg__ZTV9S19497C12__9S19497C10__9S19497C17[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C10__9S19497C17[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C10__9S19497C17[5]),  5,8},
  {&(_tg__ZTV9S19497C12__9S19497C17[6]),  6,9},
  {&(_tg__ZTV9S19497C139S19497C12__9S19497C17[4]),  4,5},
  {&(_tg__ZTV9S19497C139S19497C12__9S19497C17[4]),  4,5},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C17[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C12__9S19497C17[3]),  3,4},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C17[5]),  5,8},
  {&(_tg__ZTV8S19497C59S19497C149S19497C12__A1__9S19497C17[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A1__9S19497C17[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C149S19497C12__9S19497C17[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C17[6]),  6,9},
  {&(_tg__ZTV8S19497C5__9S19497C12__9S19497C17[5]),  5,8},
  {&(_tg__ZTV9S19497C14__9S19497C12__9S19497C17[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19497C17[];
extern  VTBL_ENTRY _ZTV9S19497C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C17[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19497C10D0Ev,_ZThn84_N9S19497C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19497C10D1Ev,_ZThn84_N9S19497C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C18D0Ev,_ZTv0_n28_N9S19497C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19497C18D0Ev,_ZThn140_N9S19497C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C18D1Ev,_ZTv0_n28_N9S19497C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19497C18D1Ev,_ZThn140_N9S19497C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19497C18D0Ev,_ZTv0_n32_N9S19497C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19497C18D0Ev,_ZThn56_N9S19497C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19497C18D1Ev,_ZTv0_n32_N9S19497C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19497C18D1Ev,_ZThn56_N9S19497C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C17D0Ev,_ZTv0_n28_N9S19497C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19497C17D0Ev,_ZThn140_N9S19497C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C17D1Ev,_ZTv0_n28_N9S19497C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19497C17D1Ev,_ZThn140_N9S19497C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19497C17D0Ev,_ZTv0_n32_N9S19497C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19497C17D0Ev,_ZThn56_N9S19497C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19497C17D1Ev,_ZTv0_n32_N9S19497C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19497C17D1Ev,_ZThn56_N9S19497C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19497C17 = {  "S19497C17", // class name
  bases_S19497C17, 19,
  &(vtc_S19497C17[0]), // expected_vtbl_contents
  &(vtt_S19497C17[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI9S19497C17),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S19497C17),48, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19497C17),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19497C21  : virtual S19497C11 {
  ~S19497C21(); // tgen
  S19497C21(); // tgen
};
//SIG(-1 S19497C21) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]}}


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

static void Test_S19497C21()
{
  extern Class_Descriptor cd_S19497C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S19497C21, buf);
    S19497C21 *dp, &lv = *(dp=new (buf) S19497C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S19497C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19497C21)");
    check_base_class_offset(lv, (S19497C7*)(S19497C11*), ABISELECT(8,4), "S19497C21");
    check_base_class_offset(lv, (S20997C6*)(S19497C11*), ABISELECT(96,48), "S19497C21");
    check_base_class_offset(lv, (S4227C37*)(S19497C11*), ABISELECT(8,4), "S19497C21");
    check_base_class_offset(lv, (S19497C11*), ABISELECT(8,4), "S19497C21");
    test_class_info(&lv, &cd_S19497C21);
    dp->~S19497C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C21(Test_S19497C21, "S19497C21", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN9S19497C21C1Ev();
extern void _ZN9S19497C21D1Ev();
Name_Map name_map_S19497C21[] = {
  NSPAIR(_ZN9S19497C21C1Ev),
  NSPAIR(_ZN9S19497C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C11;
extern VTBL_ENTRY _ZTI9S19497C11[];
extern  VTBL_ENTRY _ZTV9S19497C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C11[];
static Base_Class bases_S19497C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19497C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C11,    ABISELECT(8,4), //bcp->offset
    4, //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 _ZTI9S19497C21[];
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY vtc_S19497C21[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C21[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19497C21[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S19497C21[];
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C11__9S19497C21[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C11[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
static  VTT_ENTRY vtt_S19497C21[] = {
  {&(_ZTV9S19497C21[4]),  4,9},
  {&(_ZTV9S19497C21[8]),  8,9},
  {&(_tg__ZTV9S19497C11__9S19497C21[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19497C21[];
extern  VTBL_ENTRY _ZTV9S19497C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C21[];
Class_Descriptor cd_S19497C21 = {  "S19497C21", // class name
  bases_S19497C21, 4,
  &(vtc_S19497C21[0]), // expected_vtbl_contents
  &(vtt_S19497C21[0]), // expected_vtt_contents
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI9S19497C21),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19497C21),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19497C21),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19497C16  : S19497C12 , S19497C3 , virtual S19497C17 , S19497C21 , S4227C27 {
  short s19497c16f0;
  ~S19497C16(); // tgen
  S19497C16(); // tgen
};
//SIG(-1 S19497C16) C1{ BC2{ VBC3{ m} BC4{ VBC5{ v1} FC6{ BC5 VBC7{ m FL[5]} BC3 Fp[10]}[9]} BC8{ VBC7 VBC5 BC3 vd} BC9{ BC8 vd}} BC10{ VBC3 VBC8 v2} VBC11{ BC12{ VBC13{ VBC5 BC6 VBC2 vd} BC14{ BC15{ BC7 BC5} FD}} vd v3} BC16{ VBC6} BC17{ m} Fs}


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

static void Test_S19497C16()
{
  extern Class_Descriptor cd_S19497C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(168,434)];
    init_test(&cd_S19497C16, buf);
    S19497C16 *dp, &lv = *(dp=new (buf) S19497C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2672,1732), "sizeof(S19497C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19497C16)");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C12*), 0, "S19497C16");
    /*is_ambiguous_... S19497C3::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C3*), 0, "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C12*), 0, "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C13*)(S19497C12*), 0, "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C12*), 0, "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C14*)(S19497C12*), 0, "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*), 0, "S19497C16");
    /*is_ambiguous_... S19497C10::S19497C7 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C10*), 0, "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C13*)(S19497C12*), 0, "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C12*), 0, "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C14*)(S19497C12*), 0, "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C13*)(S19497C12*), 0, "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C12*), ABISELECT(1200,780), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1200,780), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*), ABISELECT(1200,780), "S19497C16");
    check_base_class_offset(lv, (S20997C6*)(S19497C11*)(S19497C10*), ABISELECT(1200,780), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C12*), ABISELECT(1200,780), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1200,780), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C11*), ABISELECT(1200,780), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C12*), ABISELECT(1160,760), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C12*), ABISELECT(1160,760), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1168,764), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1168,764), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C14*)(S19497C12*), ABISELECT(1168,764), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C12*), 0, "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*), ABISELECT(1176,768), "S19497C16");
    check_base_class_offset(lv, (S19497C5*)(S19497C3*), ABISELECT(1176,768), "S19497C16");
    check_base_class_offset(lv, (S19497C3*), ABISELECT(1176,768), "S19497C16");
    check_base_class_offset(lv, (S19497C7*)(S19497C11*)(S19497C10*), ABISELECT(1312,876), "S19497C16");
    check_base_class_offset(lv, (S4227C37*)(S19497C11*)(S19497C10*), ABISELECT(1312,876), "S19497C16");
    check_base_class_offset(lv, (S19497C11*)(S19497C10*), ABISELECT(1312,876), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C13*)(S19497C12*), ABISELECT(1400,920), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C12*), ABISELECT(2560,1680), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C12*), ABISELECT(2560,1680), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(2568,1684), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(2568,1684), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C14*)(S19497C12*), ABISELECT(2568,1684), "S19497C16");
    check_base_class_offset(lv, (S19497C12*)(S19497C10*), ABISELECT(1400,920), "S19497C16");
    check_base_class_offset(lv, (S19497C10*)(S19497C18*)(S19497C17*), ABISELECT(1312,876), "S19497C16");
    check_base_class_offset(lv, (S20997C6*)(S19497C20*)(S19497C19*)(S19497C18*)(S19497C17*), ABISELECT(1256,824), "S19497C16");
    check_base_class_offset(lv, (S19497C7*)(S19497C20*)(S19497C19*)(S19497C18*)(S19497C17*), ABISELECT(1248,820), "S19497C16");
    check_base_class_offset(lv, (S19497C20*)(S19497C19*)(S19497C18*)(S19497C17*), ABISELECT(1248,820), "S19497C16");
    check_base_class_offset(lv, (S19497C19*)(S19497C18*)(S19497C17*), ABISELECT(1248,820), "S19497C16");
    check_base_class_offset(lv, (S19497C18*)(S19497C17*), ABISELECT(1248,820), "S19497C16");
    check_base_class_offset(lv, (S19497C17*), ABISELECT(1248,820), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C11 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C11*), ABISELECT(2576,1688), "S19497C16");
    /*is_ambiguous_... S19497C16::S19497C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C11*), ABISELECT(2576,1688), "S19497C16");
    check_base_class_offset(lv, (S19497C11*)(S19497C21*), ABISELECT(2576,1688), "S19497C16");
    check_base_class_offset(lv, (S19497C21*), ABISELECT(1184,772), "S19497C16");
    check_base_class_offset(lv, (S4227C27*), 0, "S19497C16");
    check_field_offset(lv, s19497c16f0, ABISELECT(1192,776), "S19497C16.s19497c16f0");
    test_class_info(&lv, &cd_S19497C16);
    dp->~S19497C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C16(Test_S19497C16, "S19497C16", ABISELECT(2672,1732));

#else // __cplusplus

extern void _ZN9S19497C16C1Ev();
extern void _ZN9S19497C16D1Ev();
Name_Map name_map_S19497C16[] = {
  NSPAIR(_ZN9S19497C16C1Ev),
  NSPAIR(_ZN9S19497C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S19497C13;
extern VTBL_ENTRY _ZTI9S19497C13[];
extern  VTBL_ENTRY _ZTV9S19497C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C13[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C14;
extern VTBL_ENTRY _ZTI9S19497C14[];
extern  VTBL_ENTRY _ZTV9S19497C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C14[];
extern Class_Descriptor cd_S19497C12;
extern VTBL_ENTRY _ZTI9S19497C12[];
extern  VTBL_ENTRY _ZTV9S19497C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C12[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C3;
extern VTBL_ENTRY _ZTI8S19497C3[];
extern  VTBL_ENTRY _ZTV8S19497C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C3[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C11;
extern VTBL_ENTRY _ZTI9S19497C11[];
extern  VTBL_ENTRY _ZTV9S19497C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C11[];
extern Class_Descriptor cd_S19497C13;
extern VTBL_ENTRY _ZTI9S19497C13[];
extern  VTBL_ENTRY _ZTV9S19497C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C14;
extern VTBL_ENTRY _ZTI9S19497C14[];
extern  VTBL_ENTRY _ZTV9S19497C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C14[];
extern Class_Descriptor cd_S19497C12;
extern VTBL_ENTRY _ZTI9S19497C12[];
extern  VTBL_ENTRY _ZTV9S19497C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C12[];
extern Class_Descriptor cd_S19497C10;
extern VTBL_ENTRY _ZTI9S19497C10[];
extern  VTBL_ENTRY _ZTV9S19497C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S19497C20;
extern VTBL_ENTRY _ZTI9S19497C20[];
extern  VTBL_ENTRY _ZTV9S19497C20[];
extern Class_Descriptor cd_S19497C19;
extern VTBL_ENTRY _ZTI9S19497C19[];
extern  VTBL_ENTRY _ZTV9S19497C19[];
extern Class_Descriptor cd_S19497C18;
extern VTBL_ENTRY _ZTI9S19497C18[];
extern  VTBL_ENTRY _ZTV9S19497C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C18[];
extern Class_Descriptor cd_S19497C17;
extern VTBL_ENTRY _ZTI9S19497C17[];
extern  VTBL_ENTRY _ZTV9S19497C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C17[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C11;
extern VTBL_ENTRY _ZTI9S19497C11[];
extern  VTBL_ENTRY _ZTV9S19497C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C11[];
extern Class_Descriptor cd_S19497C21;
extern VTBL_ENTRY _ZTI9S19497C21[];
extern  VTBL_ENTRY _ZTV9S19497C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C21[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
static Base_Class bases_S19497C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19497C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19497C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(1200,780), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(1160,760), //bcp->offset
    14, //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
    19, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19497C14,    ABISELECT(1168,764), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19497C12,    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
    22, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19497C3,    ABISELECT(1176,768), //bcp->offset
    30, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19497C7,    ABISELECT(1312,876), //bcp->offset
    -1, //bcp->virtual_function_table_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
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C11,    ABISELECT(1312,876), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19497C13,    ABISELECT(1400,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2560,1680), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(2560,1680), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2568,1684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(2568,1684), //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
    5, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19497C14,    ABISELECT(2568,1684), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19497C12,    ABISELECT(1400,920), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S19497C10,    ABISELECT(1312,876), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1256,824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19497C7,    ABISELECT(1248,820), //bcp->offset
    -1, //bcp->virtual_function_table_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
    26, //immediately_derived
  0, 0},
  {&cd_S19497C20,    ABISELECT(1248,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19497C19,    ABISELECT(1248,820), //bcp->offset
    -1, //bcp->virtual_function_table_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
    28, //immediately_derived
  0, 0},
  {&cd_S19497C18,    ABISELECT(1248,820), //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
    14, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19497C17,    ABISELECT(1248,820), //bcp->offset
    46, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19497C7,    ABISELECT(2576,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2576,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19497C11,    ABISELECT(2576,1688), //bcp->offset
    97, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    33, //immediately_derived
  0, 1},
  {&cd_S19497C21,    ABISELECT(1184,772), //bcp->offset
    42, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19497C16[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C16D1Ev();
extern void _ZN9S19497C16D0Ev();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S19497C16D1Ev,_ZThn760_N9S19497C16D1Ev)();
extern void ABISELECT(_ZThn1160_N9S19497C16D0Ev,_ZThn760_N9S19497C16D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S19497C16D1Ev,_ZThn764_N9S19497C16D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19497C16D0Ev,_ZThn764_N9S19497C16D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S19497C16D1Ev,_ZTv0_n24_N9S19497C16D1Ev)();
extern void ABISELECT(_ZThn1176_N9S19497C16D1Ev,_ZThn768_N9S19497C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19497C16D0Ev,_ZTv0_n24_N9S19497C16D0Ev)();
extern void ABISELECT(_ZThn1176_N9S19497C16D0Ev,_ZThn768_N9S19497C16D0Ev)() __attribute__((weak));
extern void _ZN8S19497C32v3Ev();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19497C16D1Ev,_ZTv0_n36_N9S19497C16D1Ev)();
extern void ABISELECT(_ZThn1248_N9S19497C16D1Ev,_ZThn820_N9S19497C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19497C16D0Ev,_ZTv0_n36_N9S19497C16D0Ev)();
extern void ABISELECT(_ZThn1248_N9S19497C16D0Ev,_ZThn820_N9S19497C16D0Ev)() __attribute__((weak));
extern void _ZN9S19497C172v4Ev();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19497C16D1Ev,_ZTv0_n32_N9S19497C16D1Ev)();
extern void ABISELECT(_ZThn1312_N9S19497C16D1Ev,_ZThn876_N9S19497C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19497C16D0Ev,_ZTv0_n32_N9S19497C16D0Ev)();
extern void ABISELECT(_ZThn1312_N9S19497C16D0Ev,_ZThn876_N9S19497C16D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C16D1Ev,_ZTv0_n28_N9S19497C16D1Ev)();
extern void ABISELECT(_ZThn1400_N9S19497C16D1Ev,_ZThn920_N9S19497C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C16D0Ev,_ZTv0_n28_N9S19497C16D0Ev)();
extern void ABISELECT(_ZThn1400_N9S19497C16D0Ev,_ZThn920_N9S19497C16D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C16D1Ev,_ZTvn760_n28_N9S19497C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C16D0Ev,_ZTvn760_n28_N9S19497C16D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C16D1Ev,_ZTvn764_n28_N9S19497C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C16D0Ev,_ZTvn764_n28_N9S19497C16D0Ev)();
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY vtc_S19497C16[] = {
  ABISELECT(2576,1688),
  ABISELECT(1400,920),
  ABISELECT(1312,876),
  ABISELECT(1248,820),
  ABISELECT(1176,768),
  ABISELECT(1200,780),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C16D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(40,20),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C16D1Ev,_ZThn760_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C16D0Ev,_ZThn760_N9S19497C16D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(32,16),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C16D1Ev,_ZThn764_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C16D0Ev,_ZThn764_N9S19497C16D0Ev),
  0,
  ABISELECT(-1176,-768),
  ABISELECT(-1176,-768),
  ABISELECT(-1176,-768),
  ABISELECT(24,12),
  ABISELECT(-1176,-768),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19497C16D1Ev,_ZTv0_n24_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19497C16D0Ev,_ZTv0_n24_N9S19497C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19497C32v3Ev,
  ABISELECT(16,8),
  ABISELECT(1392,916),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  0,
  ABISELECT(-1248,-820),
  0,
  ABISELECT(-1248,-820),
  ABISELECT(152,100),
  ABISELECT(-48,-40),
  ABISELECT(-1248,-820),
  ABISELECT(64,56),
  ABISELECT(-1248,-820),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19497C16D1Ev,_ZTv0_n36_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19497C16D0Ev,_ZTv0_n36_N9S19497C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19497C172v4Ev,
  ABISELECT(-1312,-876),
  0,
  ABISELECT(-1312,-876),
  ABISELECT(88,44),
  ABISELECT(-1312,-876),
  ABISELECT(-112,-96),
  ABISELECT(-1312,-876),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C16D1Ev,_ZTv0_n32_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C16D0Ev,_ZTv0_n32_N9S19497C16D0Ev),
  ABISELECT(-1400,-920),
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C16D1Ev,_ZTv0_n28_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C16D0Ev,_ZTv0_n28_N9S19497C16D0Ev),
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-2560,-1680),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C16D1Ev,_ZTvn760_n28_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C16D0Ev,_ZTvn760_n28_N9S19497C16D0Ev),
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-2568,-1684),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C16D1Ev,_ZTvn764_n28_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C16D0Ev,_ZTvn764_n28_N9S19497C16D0Ev),
  0,
  ABISELECT(-1376,-908),
  ABISELECT(-2576,-1688),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern VTBL_ENTRY _ZTV9S19497C16[];
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C12D1Ev();
extern void _ZN9S19497C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C12__A__9S19497C16[] = {
  ABISELECT(1200,780),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C139S19497C12__9S19497C16[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C16[] = {
  ABISELECT(-1160,-760),
  ABISELECT(40,20),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C12__9S19497C16[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C14D1Ev();
extern void _ZN9S19497C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(32,16),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C149S19497C12__A1__9S19497C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(32,16),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A1__9S19497C16[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C149S19497C12__9S19497C16[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C5__9S19497C12__A__9S19497C16[] = {
  ABISELECT(-1160,-760),
  ABISELECT(40,20),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C14__9S19497C12__A__9S19497C16[] = {
  ABISELECT(-1168,-764),
  ABISELECT(32,16),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S19497C3D1Ev,_ZTv0_n24_N8S19497C3D1Ev)();
extern void _ZN8S19497C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19497C3D0Ev,_ZTv0_n24_N8S19497C3D0Ev)();
extern void _ZN8S19497C3D0Ev() __attribute__((weak));
extern void _ZN8S19497C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C3__9S19497C16[] = {
  0,
  ABISELECT(-1176,-768),
  0,
  ABISELECT(-1176,-768),
  ABISELECT(24,12),
  ABISELECT(-1176,-768),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C3[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C3D1Ev,_ZTv0_n24_N8S19497C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C3D0Ev,_ZTv0_n24_N8S19497C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19497C32v3Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C3__9S19497C16[] = {
  0,
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S19497C3[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19497C21__9S19497C16[] = {
  ABISELECT(16,8),
  ABISELECT(1392,916),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C21[0]),
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C11__9S19497C21__9S19497C16[] = {
  0,
  ABISELECT(-1376,-908),
  ABISELECT(-1392,-916),
  (VTBL_ENTRY)&(_ZTI9S19497C21[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C5__A2__9S19497C16[] = {
  ABISELECT(-1176,-768),
  ABISELECT(24,12),
  ABISELECT(-1176,-768),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C5__A2__9S19497C16[] = {
  0,
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C17D1Ev();
extern void _ZN9S19497C17D0Ev();
extern void _ZN9S19497C172v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C17__9S19497C16[] = {
  ABISELECT(-1248,-820),
  ABISELECT(152,100),
  ABISELECT(-48,-40),
  ABISELECT(-1248,-820),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19497C172v4Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C18D1Ev();
extern void _ZN9S19497C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C189S19497C17__9S19497C16[] = {
  ABISELECT(-1248,-820),
  ABISELECT(152,100),
  ABISELECT(-48,-40),
  ABISELECT(-1248,-820),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C18D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19497C18D1Ev,_ZTv0_n32_N9S19497C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S19497C18D1Ev,_ZThn56_N9S19497C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19497C18D0Ev,_ZTv0_n32_N9S19497C18D0Ev)();
extern void ABISELECT(_ZThn64_N9S19497C18D0Ev,_ZThn56_N9S19497C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C10__9S19497C189S19497C17__9S19497C16[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1312,-876),
  ABISELECT(88,44),
  ABISELECT(-1312,-876),
  ABISELECT(-112,-96),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C18D1Ev,_ZTv0_n32_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C18D0Ev,_ZTv0_n32_N9S19497C18D0Ev),
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C189S19497C17__9S19497C16[] = {
  0,
  ABISELECT(1248,820),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C18D1Ev,_ZTv0_n28_N9S19497C18D1Ev)();
extern void ABISELECT(_ZThn152_N9S19497C18D1Ev,_ZThn100_N9S19497C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C18D0Ev,_ZTv0_n28_N9S19497C18D0Ev)();
extern void ABISELECT(_ZThn152_N9S19497C18D0Ev,_ZThn100_N9S19497C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C189S19497C17__9S19497C16[] = {
  ABISELECT(-152,-100),
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C18D1Ev,_ZTv0_n28_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C18D0Ev,_ZTv0_n28_N9S19497C18D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C18D1Ev,_ZTvn760_n28_N9S19497C18D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C18D0Ev,_ZTvn760_n28_N9S19497C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C189S19497C17__9S19497C16[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C18D1Ev,_ZTvn760_n28_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C18D0Ev,_ZTvn760_n28_N9S19497C18D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C18D1Ev,_ZTvn764_n28_N9S19497C18D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C18D0Ev,_ZTvn764_n28_N9S19497C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C189S19497C17__9S19497C16[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C18D1Ev,_ZTvn764_n28_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C18D0Ev,_ZTvn764_n28_N9S19497C18D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19497C17D1Ev,_ZTv0_n32_N9S19497C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S19497C17D1Ev,_ZThn56_N9S19497C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S19497C17D0Ev,_ZTv0_n32_N9S19497C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S19497C17D0Ev,_ZThn56_N9S19497C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C10__9S19497C17__9S19497C16[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1312,-876),
  ABISELECT(88,44),
  ABISELECT(-1312,-876),
  ABISELECT(-112,-96),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C17D1Ev,_ZTv0_n32_N9S19497C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C17D0Ev,_ZTv0_n32_N9S19497C17D0Ev),
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C17__9S19497C16[] = {
  0,
  ABISELECT(1248,820),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C17D1Ev,_ZTv0_n28_N9S19497C17D1Ev)();
extern void ABISELECT(_ZThn152_N9S19497C17D1Ev,_ZThn100_N9S19497C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C17D0Ev,_ZTv0_n28_N9S19497C17D0Ev)();
extern void ABISELECT(_ZThn152_N9S19497C17D0Ev,_ZThn100_N9S19497C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C17__9S19497C16[] = {
  ABISELECT(-152,-100),
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C17D1Ev,_ZTv0_n28_N9S19497C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C17D0Ev,_ZTv0_n28_N9S19497C17D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C17D1Ev,_ZTvn760_n28_N9S19497C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C17D0Ev,_ZTvn760_n28_N9S19497C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C17__9S19497C16[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-1312,-860),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C17D1Ev,_ZTvn760_n28_N9S19497C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C17D0Ev,_ZTvn760_n28_N9S19497C17D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C17D1Ev,_ZTvn764_n28_N9S19497C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C17D0Ev,_ZTvn764_n28_N9S19497C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C17__9S19497C16[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-1320,-864),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C17D1Ev,_ZTvn764_n28_N9S19497C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C17D0Ev,_ZTvn764_n28_N9S19497C17D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C10D1Ev();
extern void _ZN9S19497C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C10__9S19497C16[] = {
  ABISELECT(-1312,-876),
  ABISELECT(88,44),
  ABISELECT(-1312,-876),
  ABISELECT(-112,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C119S19497C10__9S19497C16[] = {
  ABISELECT(-112,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C11[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C10__9S19497C16[] = {
  0,
  ABISELECT(1312,876),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZThn88_N9S19497C10D1Ev,_ZThn44_N9S19497C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev)();
extern void ABISELECT(_ZThn88_N9S19497C10D0Ev,_ZThn44_N9S19497C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C10__9S19497C16[] = {
  ABISELECT(-88,-44),
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C10__9S19497C16[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C10__9S19497C16[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-1256,-808),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C12D1Ev();
extern void _ZN9S19497C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C12__A1__9S19497C16[] = {
  ABISELECT(-200,-140),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C139S19497C12__A1__9S19497C16[] = {
  ABISELECT(-1400,-920),
  ABISELECT(-1400,-920),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C139S19497C12__A1__9S19497C16[] = {
  0,
  ABISELECT(1400,920),
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__A3__9S19497C16[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C12__A3__9S19497C16[] = {
  0,
  ABISELECT(2560,1680),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C14D1Ev();
extern void _ZN9S19497C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__A1__9S19497C16[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C149S19497C12__A4__9S19497C16[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A4__9S19497C16[] = {
  0,
  ABISELECT(2568,1684),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C149S19497C12__A1__9S19497C16[] = {
  0,
  ABISELECT(2568,1684),
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C12__A1__9S19497C16[] = {
  0,
  ABISELECT(1400,920),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C5__9S19497C12__A1__9S19497C16[] = {
  ABISELECT(-2560,-1680),
  ABISELECT(-1360,-900),
  ABISELECT(-2560,-1680),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C14__9S19497C12__A1__9S19497C16[] = {
  ABISELECT(-2568,-1684),
  ABISELECT(-1368,-904),
  ABISELECT(-2568,-1684),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev),
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C11__A1__9S19497C16[] = {
  ABISELECT(-1376,-908),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C11[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
static  VTT_ENTRY vtt_S19497C16[] = {
  {&(_ZTV9S19497C16[11]),  11,102},
  {&(_tg__ZTV9S19497C12__A__9S19497C16[6]),  6,9},
  {&(_tg__ZTV9S19497C139S19497C12__9S19497C16[4]),  4,5},
  {&(_tg__ZTV9S19497C139S19497C12__9S19497C16[4]),  4,5},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C16[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C12__9S19497C16[3]),  3,4},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C16[5]),  5,8},
  {&(_tg__ZTV8S19497C59S19497C149S19497C12__A1__9S19497C16[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A1__9S19497C16[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C149S19497C12__9S19497C16[3]),  3,4},
  {&(_tg__ZTV9S19497C12__A__9S19497C16[6]),  6,9},
  {&(_tg__ZTV8S19497C5__9S19497C12__A__9S19497C16[5]),  5,8},
  {&(_tg__ZTV9S19497C14__9S19497C12__A__9S19497C16[5]),  5,8},
  {&(_tg__ZTV8S19497C3__9S19497C16[8]),  8,12},
  {&(_tg__ZTV8S19497C3__9S19497C16[8]),  8,12},
  {&(_tg__ZTV8S19497C7__8S19497C3__9S19497C16[3]),  3,4},
  {&(_tg__ZTV9S19497C21__9S19497C16[4]),  4,4},
  {&(_tg__ZTV9S19497C11__9S19497C21__9S19497C16[4]),  4,5},
  {&(_ZTV9S19497C16[11]),  11,102},
  {&(_ZTV9S19497C16[19]),  19,102},
  {&(_ZTV9S19497C16[27]),  27,102},
  {&(_ZTV9S19497C16[38]),  38,102},
  {&(_ZTV9S19497C16[38]),  38,102},
  {&(_ZTV9S19497C16[56]),  56,102},
  {&(_ZTV9S19497C16[68]),  68,102},
  {&(_ZTV9S19497C16[78]),  78,102},
  {&(_ZTV9S19497C16[86]),  86,102},
  {&(_ZTV9S19497C16[94]),  94,102},
  {&(_ZTV9S19497C16[46]),  46,102},
  {&(_ZTV9S19497C16[101]),  101,102},
  {&(_tg__ZTV8S19497C5__A2__9S19497C16[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C5__A2__9S19497C16[3]),  3,4},
  {&(_tg__ZTV9S19497C17__9S19497C16[7]),  7,11},
  {&(_tg__ZTV9S19497C189S19497C17__9S19497C16[7]),  7,10},
  {&(_tg__ZTV9S19497C10__9S19497C189S19497C17__9S19497C16[8]),  8,11},
  {&(_tg__ZTV8S19497C7__9S19497C189S19497C17__9S19497C16[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C189S19497C17__9S19497C16[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C189S19497C17__9S19497C16[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C189S19497C17__9S19497C16[5]),  5,8},
  {&(_tg__ZTV9S19497C10__9S19497C17__9S19497C16[8]),  8,11},
  {&(_tg__ZTV8S19497C7__9S19497C17__9S19497C16[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C17__9S19497C16[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C17__9S19497C16[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C17__9S19497C16[5]),  5,8},
  {&(_tg__ZTV9S19497C10__9S19497C16[6]),  6,9},
  {&(_tg__ZTV9S19497C119S19497C10__9S19497C16[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C10__9S19497C16[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C10__9S19497C16[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C10__9S19497C16[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C10__9S19497C16[5]),  5,8},
  {&(_tg__ZTV9S19497C12__A1__9S19497C16[6]),  6,9},
  {&(_tg__ZTV9S19497C139S19497C12__A1__9S19497C16[4]),  4,5},
  {&(_tg__ZTV8S19497C7__9S19497C139S19497C12__A1__9S19497C16[3]),  3,4},
  {&(_tg__ZTV8S19497C59S19497C12__A3__9S19497C16[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C12__A3__9S19497C16[3]),  3,4},
  {&(_tg__ZTV9S19497C149S19497C12__A1__9S19497C16[5]),  5,8},
  {&(_tg__ZTV8S19497C59S19497C149S19497C12__A4__9S19497C16[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A4__9S19497C16[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C149S19497C12__A1__9S19497C16[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C12__A1__9S19497C16[3]),  3,4},
  {&(_tg__ZTV8S19497C5__9S19497C12__A1__9S19497C16[5]),  5,8},
  {&(_tg__ZTV9S19497C14__9S19497C12__A1__9S19497C16[5]),  5,8},
  {&(_tg__ZTV9S19497C11__A1__9S19497C16[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19497C16[];
extern  VTBL_ENTRY _ZTV9S19497C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C16[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19497C10D0Ev,_ZThn44_N9S19497C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19497C10D1Ev,_ZThn44_N9S19497C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C17D0Ev,_ZTv0_n28_N9S19497C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19497C17D0Ev,_ZThn100_N9S19497C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C17D1Ev,_ZTv0_n28_N9S19497C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19497C17D1Ev,_ZThn100_N9S19497C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19497C17D0Ev,_ZTv0_n32_N9S19497C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19497C17D0Ev,_ZThn56_N9S19497C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19497C17D1Ev,_ZTv0_n32_N9S19497C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19497C17D1Ev,_ZThn56_N9S19497C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C18D0Ev,_ZTv0_n28_N9S19497C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19497C18D0Ev,_ZThn100_N9S19497C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C18D1Ev,_ZTv0_n28_N9S19497C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S19497C18D1Ev,_ZThn100_N9S19497C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19497C18D0Ev,_ZTv0_n32_N9S19497C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19497C18D0Ev,_ZThn56_N9S19497C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19497C18D1Ev,_ZTv0_n32_N9S19497C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S19497C18D1Ev,_ZThn56_N9S19497C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19497C3D0Ev,_ZTv0_n24_N8S19497C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19497C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19497C3D1Ev,_ZTv0_n24_N8S19497C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19497C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C16D0Ev,_ZTv0_n28_N9S19497C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N9S19497C16D0Ev,_ZThn920_N9S19497C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C16D1Ev,_ZTv0_n28_N9S19497C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N9S19497C16D1Ev,_ZThn920_N9S19497C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19497C16D0Ev,_ZTv0_n32_N9S19497C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N9S19497C16D0Ev,_ZThn876_N9S19497C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S19497C16D1Ev,_ZTv0_n32_N9S19497C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1312_N9S19497C16D1Ev,_ZThn876_N9S19497C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19497C16D0Ev,_ZTv0_n36_N9S19497C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1248_N9S19497C16D0Ev,_ZThn820_N9S19497C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19497C16D1Ev,_ZTv0_n36_N9S19497C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1248_N9S19497C16D1Ev,_ZThn820_N9S19497C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19497C16D0Ev,_ZTv0_n24_N9S19497C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S19497C16D0Ev,_ZThn768_N9S19497C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19497C16D1Ev,_ZTv0_n24_N9S19497C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S19497C16D1Ev,_ZThn768_N9S19497C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19497C16 = {  "S19497C16", // class name
  bases_S19497C16, 35,
  &(vtc_S19497C16[0]), // expected_vtbl_contents
  &(vtt_S19497C16[0]), // expected_vtt_contents
  ABISELECT(2672,1732), // object size
  NSPAIRA(_ZTI9S19497C16),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19497C16),102, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19497C16),63, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19497C1  : virtual S19497C2 , virtual S19497C8 , virtual S19497C15 , virtual S19497C16 {
  virtual  ~S19497C1(); // _ZN8S19497C1D2Ev
  virtual void  v1(); // _ZN8S19497C12v1Ev
  S19497C1(); // tgen
};
//SIG(1 S19497C1) C1{ VBC2{ BC3{ VBC4{ m} VBC5{ VBC6{ m FL[5]} VBC7{ v2} BC4 vd} v3} vd} VBC8{ VBC9{ VBC10{ VBC7 BC11{ BC7 VBC6 BC4 Fp[10]} VBC12{ VBC4 BC13{ VBC7 FC11[9]} BC5 BC14{ BC5 vd}} vd} Fi} Fc} VBC15{ VBC6 Fi} VBC16{ BC12 BC3 VBC17{ BC18{ VBC10 BC19{ BC20{ BC6 BC7} FD}} vd v4} BC21{ VBC11} BC22{ m} Fs} vd v1}


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

static void Test_S19497C1()
{
  extern Class_Descriptor cd_S19497C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(171,441)];
    init_test(&cd_S19497C1, buf);
    S19497C1 *dp, &lv = *(dp=new (buf) S19497C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2720,1760), "sizeof(S19497C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19497C1)");
    /*is_ambiguous_... S19497C3::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C3*)(S19497C2*), ABISELECT(8,4), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C12 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C12*), ABISELECT(8,4), "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C12*)(S19497C16*), ABISELECT(8,4), "S19497C1");
    /*is_ambiguous_... S19497C3::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C3*)(S19497C16*), ABISELECT(8,4), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C5 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*), ABISELECT(8,4), "S19497C1");
    check_base_class_offset(lv, (S20997C6*)(S19497C11*)(S19497C10*), ABISELECT(8,4), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C12 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C12*), ABISELECT(8,4), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C12 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(8,4), "S19497C1");
    check_base_class_offset(lv, (S20997C6*)(S19497C15*), ABISELECT(8,4), "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C12*)(S19497C16*), ABISELECT(8,4), "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C5*)(S19497C14*)(S19497C12*)(S19497C16*), ABISELECT(8,4), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19497C11*), ABISELECT(8,4), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C5 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*), 0, "S19497C1");
    /*is_ambiguous_... S19497C10::S19497C7 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C10*), 0, "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C13*)(S19497C12*), 0, "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C12*), 0, "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C14*)(S19497C12*), 0, "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C13*)(S19497C12*)(S19497C16*), 0, "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C12*)(S19497C16*), 0, "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C5*)(S19497C14*)(S19497C12*)(S19497C16*), 0, "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*), 0, "S19497C1");
    check_base_class_offset(lv, (S19497C5*)(S19497C3*)(S19497C2*), 0, "S19497C1");
    check_base_class_offset(lv, (S19497C5*)(S19497C3*)(S19497C16*), 0, "S19497C1");
    check_base_class_offset(lv, (S19497C3*)(S19497C2*), 0, "S19497C1");
    check_base_class_offset(lv, (S19497C2*), 0, "S19497C1");
    check_base_class_offset(lv, (S19497C7*)(S19497C11*)(S19497C10*), ABISELECT(80,60), "S19497C1");
    check_base_class_offset(lv, (S4227C37*)(S19497C11*)(S19497C10*), ABISELECT(80,60), "S19497C1");
    check_base_class_offset(lv, (S19497C11*)(S19497C10*), ABISELECT(80,60), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C13*)(S19497C12*), ABISELECT(168,104), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C12 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C12*), ABISELECT(1328,864), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C12*), ABISELECT(1328,864), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C12 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1336,868), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C14*)(S19497C12*), ABISELECT(1336,868), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C14*)(S19497C12*), ABISELECT(1336,868), "S19497C1");
    check_base_class_offset(lv, (S19497C12*)(S19497C10*), ABISELECT(168,104), "S19497C1");
    check_base_class_offset(lv, (S19497C10*)(S19497C9*), ABISELECT(80,60), "S19497C1");
    check_base_class_offset(lv, (S19497C10*)(S19497C18*)(S19497C17*), ABISELECT(80,60), "S19497C1");
    check_base_class_offset(lv, (S19497C9*)(S19497C8*), ABISELECT(64,52), "S19497C1");
    check_base_class_offset(lv, (S19497C8*), ABISELECT(48,44), "S19497C1");
    check_base_class_offset(lv, (S19497C15*), ABISELECT(1344,872), "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C13*)(S19497C12*)(S19497C16*), ABISELECT(1360,880), "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C12*)(S19497C16*), ABISELECT(2520,1640), "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C12*)(S19497C16*), ABISELECT(2520,1640), "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C5*)(S19497C14*)(S19497C12*)(S19497C16*), ABISELECT(2528,1644), "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C5*)(S19497C14*)(S19497C12*)(S19497C16*), ABISELECT(2528,1644), "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C14*)(S19497C12*)(S19497C16*), ABISELECT(2528,1644), "S19497C1");
    /*is_ambiguous_... S19497C16::S19497C12 */ AMB_check_base_class_offset(lv, (S19497C12*)(S19497C16*), ABISELECT(1360,880), "S19497C1");
    check_base_class_offset(lv, (S19497C3*)(S19497C16*), ABISELECT(2536,1648), "S19497C1");
    check_base_class_offset(lv, (S20997C6*)(S19497C20*)(S19497C19*)(S19497C18*)(S19497C17*), ABISELECT(2568,1664), "S19497C1");
    check_base_class_offset(lv, (S19497C7*)(S19497C20*)(S19497C19*)(S19497C18*)(S19497C17*), ABISELECT(2560,1660), "S19497C1");
    check_base_class_offset(lv, (S19497C20*)(S19497C19*)(S19497C18*)(S19497C17*), ABISELECT(2560,1660), "S19497C1");
    check_base_class_offset(lv, (S19497C19*)(S19497C18*)(S19497C17*), ABISELECT(2560,1660), "S19497C1");
    check_base_class_offset(lv, (S19497C18*)(S19497C17*), ABISELECT(2560,1660), "S19497C1");
    check_base_class_offset(lv, (S19497C17*)(S19497C16*), ABISELECT(2560,1660), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C11 */ AMB_check_base_class_offset(lv, (S19497C7*)(S19497C11*), ABISELECT(2624,1716), "S19497C1");
    /*is_ambiguous_... S19497C1::S19497C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19497C11*), ABISELECT(2624,1716), "S19497C1");
    check_base_class_offset(lv, (S19497C11*)(S19497C21*)(S19497C16*), ABISELECT(2624,1716), "S19497C1");
    check_base_class_offset(lv, (S19497C21*)(S19497C16*), ABISELECT(2544,1652), "S19497C1");
    check_base_class_offset(lv, (S4227C27*)(S19497C16*), ABISELECT(1360,880), "S19497C1");
    check_base_class_offset(lv, (S19497C16*), ABISELECT(1360,880), "S19497C1");
    test_class_info(&lv, &cd_S19497C1);
    dp->~S19497C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19497C1(Test_S19497C1, "S19497C1", ABISELECT(2720,1760));

#else // __cplusplus

extern void _ZN8S19497C1C1Ev();
extern void _ZN8S19497C1D2Ev();
Name_Map name_map_S19497C1[] = {
  NSPAIR(_ZN8S19497C1C1Ev),
  NSPAIR(_ZN8S19497C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C3;
extern VTBL_ENTRY _ZTI8S19497C3[];
extern  VTBL_ENTRY _ZTV8S19497C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C3[];
extern Class_Descriptor cd_S19497C2;
extern VTBL_ENTRY _ZTI8S19497C2[];
extern  VTBL_ENTRY _ZTV8S19497C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C2[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C11;
extern VTBL_ENTRY _ZTI9S19497C11[];
extern  VTBL_ENTRY _ZTV9S19497C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C11[];
extern Class_Descriptor cd_S19497C13;
extern VTBL_ENTRY _ZTI9S19497C13[];
extern  VTBL_ENTRY _ZTV9S19497C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C14;
extern VTBL_ENTRY _ZTI9S19497C14[];
extern  VTBL_ENTRY _ZTV9S19497C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C14[];
extern Class_Descriptor cd_S19497C12;
extern VTBL_ENTRY _ZTI9S19497C12[];
extern  VTBL_ENTRY _ZTV9S19497C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C12[];
extern Class_Descriptor cd_S19497C10;
extern VTBL_ENTRY _ZTI9S19497C10[];
extern  VTBL_ENTRY _ZTV9S19497C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C10[];
extern Class_Descriptor cd_S19497C9;
extern VTBL_ENTRY _ZTI8S19497C9[];
extern  VTBL_ENTRY _ZTV8S19497C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C9[];
extern Class_Descriptor cd_S19497C8;
extern VTBL_ENTRY _ZTI8S19497C8[];
extern  VTBL_ENTRY _ZTV8S19497C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C8[];
extern Class_Descriptor cd_S19497C15;
extern VTBL_ENTRY _ZTI9S19497C15[];
extern  VTBL_ENTRY _ZTV9S19497C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C15[];
extern Class_Descriptor cd_S19497C13;
extern VTBL_ENTRY _ZTI9S19497C13[];
extern  VTBL_ENTRY _ZTV9S19497C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C5;
extern VTBL_ENTRY _ZTI8S19497C5[];
extern  VTBL_ENTRY _ZTV8S19497C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C5[];
extern Class_Descriptor cd_S19497C14;
extern VTBL_ENTRY _ZTI9S19497C14[];
extern  VTBL_ENTRY _ZTV9S19497C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C14[];
extern Class_Descriptor cd_S19497C12;
extern VTBL_ENTRY _ZTI9S19497C12[];
extern  VTBL_ENTRY _ZTV9S19497C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C12[];
extern Class_Descriptor cd_S19497C3;
extern VTBL_ENTRY _ZTI8S19497C3[];
extern  VTBL_ENTRY _ZTV8S19497C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C3[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S19497C20;
extern VTBL_ENTRY _ZTI9S19497C20[];
extern  VTBL_ENTRY _ZTV9S19497C20[];
extern Class_Descriptor cd_S19497C19;
extern VTBL_ENTRY _ZTI9S19497C19[];
extern  VTBL_ENTRY _ZTV9S19497C19[];
extern Class_Descriptor cd_S19497C18;
extern VTBL_ENTRY _ZTI9S19497C18[];
extern  VTBL_ENTRY _ZTV9S19497C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C18[];
extern Class_Descriptor cd_S19497C17;
extern VTBL_ENTRY _ZTI9S19497C17[];
extern  VTBL_ENTRY _ZTV9S19497C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C17[];
extern Class_Descriptor cd_S19497C7;
extern VTBL_ENTRY _ZTI8S19497C7[];
extern  VTBL_ENTRY _ZTV8S19497C7[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19497C11;
extern VTBL_ENTRY _ZTI9S19497C11[];
extern  VTBL_ENTRY _ZTV9S19497C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C11[];
extern Class_Descriptor cd_S19497C21;
extern VTBL_ENTRY _ZTI9S19497C21[];
extern  VTBL_ENTRY _ZTV9S19497C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C21[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
extern Class_Descriptor cd_S19497C16;
extern VTBL_ENTRY _ZTI9S19497C16[];
extern  VTBL_ENTRY _ZTV9S19497C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19497C16[];
static Base_Class bases_S19497C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19497C7,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19497C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19497C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //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
    6, //immediately_derived
  0, 0},
  {&cd_S19497C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19497C7,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19497C11,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19497C13,    ABISELECT(168,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19497C5,    ABISELECT(1328,864), //bcp->offset
    69, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19497C5,    ABISELECT(1336,868), //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
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S19497C14,    ABISELECT(1336,868), //bcp->offset
    77, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19497C12,    ABISELECT(168,104), //bcp->offset
    59, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19497C10,    ABISELECT(80,60), //bcp->offset
    48, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S19497C9,    ABISELECT(64,52), //bcp->offset
    36, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19497C8,    ABISELECT(48,44), //bcp->offset
    23, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19497C15,    ABISELECT(1344,872), //bcp->offset
    85, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19497C13,    ABISELECT(1360,880), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2520,1640), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(2520,1640), //bcp->offset
    104, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2528,1644), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C5,    ABISELECT(2528,1644), //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
    25, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S19497C14,    ABISELECT(2528,1644), //bcp->offset
    112, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19497C12,    ABISELECT(1360,880), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S19497C3,    ABISELECT(2536,1648), //bcp->offset
    120, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(2568,1664), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C7,    ABISELECT(2560,1660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19497C20,    ABISELECT(2560,1660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S19497C19,    ABISELECT(2560,1660), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19497C18,    ABISELECT(2560,1660), //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
    19, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19497C17,    ABISELECT(2560,1660), //bcp->offset
    136, //bcp->virtual_function_table_offset
    10, //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
    40, //immediately_derived
  0, 1},
  {&cd_S19497C7,    ABISELECT(2624,1716), //bcp->offset
    -1, //bcp->virtual_function_table_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
    37, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2624,1716), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C11,    ABISELECT(2624,1716), //bcp->offset
    150, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S19497C21,    ABISELECT(2544,1652), //bcp->offset
    132, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S4227C27,    ABISELECT(1360,880), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19497C16,    ABISELECT(1360,880), //bcp->offset
    88, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19497C1[];
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S19497C1D1Ev,_ZTv0_n24_N8S19497C1D1Ev)();
extern void _ZN8S19497C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19497C1D0Ev,_ZTv0_n24_N8S19497C1D0Ev)();
extern void _ZN8S19497C1D0Ev() __attribute__((weak));
extern void _ZN8S19497C32v3Ev();
extern void _ZN8S19497C12v1Ev();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n80_N8S19497C1D1Ev,_ZTv0_n40_N8S19497C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19497C1D1Ev,_ZThn44_N8S19497C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19497C1D0Ev,_ZTv0_n40_N8S19497C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19497C1D0Ev,_ZThn44_N8S19497C1D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S19497C1D1Ev,_ZTv0_n36_N8S19497C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19497C1D1Ev,_ZThn52_N8S19497C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19497C1D0Ev,_ZTv0_n36_N8S19497C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19497C1D0Ev,_ZThn52_N8S19497C1D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S19497C1D1Ev,_ZTv0_n32_N8S19497C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19497C1D1Ev,_ZThn60_N8S19497C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19497C1D0Ev,_ZTv0_n32_N8S19497C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19497C1D0Ev,_ZThn60_N8S19497C1D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S19497C1D1Ev,_ZTv0_n28_N8S19497C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S19497C1D1Ev,_ZThn104_N8S19497C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19497C1D0Ev,_ZTv0_n28_N8S19497C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S19497C1D0Ev,_ZThn104_N8S19497C1D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19497C1D1Ev,_ZTvn760_n28_N8S19497C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19497C1D0Ev,_ZTvn760_n28_N8S19497C1D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19497C1D1Ev,_ZTvn764_n28_N8S19497C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19497C1D0Ev,_ZTvn764_n28_N8S19497C1D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n96_N8S19497C1D1Ev,_ZTv0_n48_N8S19497C1D1Ev)();
extern void ABISELECT(_ZThn1360_N8S19497C1D1Ev,_ZThn880_N8S19497C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S19497C1D0Ev,_ZTv0_n48_N8S19497C1D0Ev)();
extern void ABISELECT(_ZThn1360_N8S19497C1D0Ev,_ZThn880_N8S19497C1D0Ev)() __attribute__((weak));
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n96_N8S19497C1D1Ev,_ZTvn760_n48_N8S19497C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n96_N8S19497C1D0Ev,_ZTvn760_n48_N8S19497C1D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n96_N8S19497C1D1Ev,_ZTvn764_n48_N8S19497C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n96_N8S19497C1D0Ev,_ZTvn764_n48_N8S19497C1D0Ev)();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S19497C1D1Ev,_ZTv0_n24_N8S19497C1D1Ev)();
extern void ABISELECT(_ZThn2536_N8S19497C1D1Ev,_ZThn1648_N8S19497C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19497C1D0Ev,_ZTv0_n24_N8S19497C1D0Ev)();
extern void ABISELECT(_ZThn2536_N8S19497C1D0Ev,_ZThn1648_N8S19497C1D0Ev)() __attribute__((weak));
extern void _ZN8S19497C32v3Ev();
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S19497C1D1Ev,_ZTv0_n36_N8S19497C1D1Ev)();
extern void ABISELECT(_ZThn2560_N8S19497C1D1Ev,_ZThn1660_N8S19497C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19497C1D0Ev,_ZTv0_n36_N8S19497C1D0Ev)();
extern void ABISELECT(_ZThn2560_N8S19497C1D0Ev,_ZThn1660_N8S19497C1D0Ev)() __attribute__((weak));
extern void _ZN9S19497C172v4Ev();
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY vtc_S19497C1[] = {
  ABISELECT(2624,1716),
  ABISELECT(2560,1660),
  ABISELECT(1360,880),
  ABISELECT(1344,872),
  ABISELECT(168,104),
  ABISELECT(80,60),
  ABISELECT(64,52),
  ABISELECT(48,44),
  0,
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C1D1Ev,_ZTv0_n24_N8S19497C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C1D0Ev,_ZTv0_n24_N8S19497C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19497C32v3Ev,
  (VTBL_ENTRY)&_ZN8S19497C12v1Ev,
  ABISELECT(-48,-44),
  ABISELECT(-40,-40),
  ABISELECT(120,60),
  -40,
  ABISELECT(-48,-44),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-48,-44),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19497C1D1Ev,_ZTv0_n40_N8S19497C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19497C1D0Ev,_ZTv0_n40_N8S19497C1D0Ev),
  ABISELECT(-64,-52),
  ABISELECT(-56,-48),
  ABISELECT(104,52),
  ABISELECT(-56,-48),
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19497C1D1Ev,_ZTv0_n36_N8S19497C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19497C1D0Ev,_ZTv0_n36_N8S19497C1D0Ev),
  ABISELECT(-80,-60),
  0,
  ABISELECT(-72,-56),
  ABISELECT(88,44),
  ABISELECT(-80,-60),
  ABISELECT(-72,-56),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19497C1D1Ev,_ZTv0_n32_N8S19497C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19497C1D0Ev,_ZTv0_n32_N8S19497C1D0Ev),
  ABISELECT(-168,-104),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19497C1D1Ev,_ZTv0_n28_N8S19497C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19497C1D0Ev,_ZTv0_n28_N8S19497C1D0Ev),
  ABISELECT(-1328,-864),
  ABISELECT(-1320,-860),
  ABISELECT(-1328,-864),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19497C1D1Ev,_ZTvn760_n28_N8S19497C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19497C1D0Ev,_ZTvn760_n28_N8S19497C1D0Ev),
  ABISELECT(-1336,-868),
  ABISELECT(-1328,-864),
  ABISELECT(-1336,-868),
  ABISELECT(-1336,-868),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19497C1D1Ev,_ZTvn764_n28_N8S19497C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19497C1D0Ev,_ZTvn764_n28_N8S19497C1D0Ev),
  ABISELECT(-1336,-868),
  ABISELECT(-1344,-872),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  ABISELECT(1176,768),
  ABISELECT(-1360,-880),
  ABISELECT(1264,836),
  ABISELECT(-1192,-776),
  ABISELECT(-1280,-820),
  ABISELECT(1200,780),
  ABISELECT(-1360,-880),
  ABISELECT(-1352,-876),
  ABISELECT(-1352,-876),
  ABISELECT(-1360,-880),
  ABISELECT(-1360,-880),
  ABISELECT(-1360,-880),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19497C1D1Ev,_ZTv0_n48_N8S19497C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S19497C1D0Ev,_ZTv0_n48_N8S19497C1D0Ev),
  ABISELECT(-2520,-1640),
  ABISELECT(-2512,-1636),
  ABISELECT(-2520,-1640),
  ABISELECT(-2520,-1640),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N8S19497C1D1Ev,_ZTvn760_n48_N8S19497C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n96_N8S19497C1D0Ev,_ZTvn760_n48_N8S19497C1D0Ev),
  ABISELECT(-2528,-1644),
  ABISELECT(-2520,-1640),
  ABISELECT(-2528,-1644),
  ABISELECT(-2528,-1644),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N8S19497C1D1Ev,_ZTvn764_n48_N8S19497C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n96_N8S19497C1D0Ev,_ZTvn764_n48_N8S19497C1D0Ev),
  ABISELECT(-2536,-1648),
  ABISELECT(-2528,-1644),
  ABISELECT(-2536,-1648),
  ABISELECT(-2536,-1648),
  ABISELECT(-2528,-1644),
  ABISELECT(-2536,-1648),
  ABISELECT(-2536,-1648),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C1D1Ev,_ZTv0_n24_N8S19497C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C1D0Ev,_ZTv0_n24_N8S19497C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19497C32v3Ev,
  ABISELECT(-2536,-1648),
  ABISELECT(80,64),
  ABISELECT(-2544,-1652),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  0,
  ABISELECT(-2560,-1660),
  0,
  ABISELECT(-2552,-1656),
  ABISELECT(-2392,-1556),
  ABISELECT(-2552,-1656),
  ABISELECT(-2560,-1660),
  ABISELECT(-2480,-1600),
  ABISELECT(-2560,-1660),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19497C1D1Ev,_ZTv0_n36_N8S19497C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19497C1D0Ev,_ZTv0_n36_N8S19497C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19497C172v4Ev,
  0,
  ABISELECT(-2616,-1712),
  ABISELECT(-2624,-1716),
  (VTBL_ENTRY)&(_ZTI8S19497C1[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern VTBL_ENTRY _ZTV8S19497C1[];
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S19497C2D1Ev,_ZTv0_n24_N8S19497C2D1Ev)();
extern void _ZN8S19497C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19497C2D0Ev,_ZTv0_n24_N8S19497C2D0Ev)();
extern void _ZN8S19497C2D0Ev() __attribute__((weak));
extern void _ZN8S19497C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C2__8S19497C1[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C2[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C2D1Ev,_ZTv0_n24_N8S19497C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C2D0Ev,_ZTv0_n24_N8S19497C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19497C32v3Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S19497C3D1Ev,_ZTv0_n24_N8S19497C3D1Ev)();
extern void _ZN8S19497C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19497C3D0Ev,_ZTv0_n24_N8S19497C3D0Ev)();
extern void _ZN8S19497C3D0Ev() __attribute__((weak));
extern void _ZN8S19497C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C38S19497C2__8S19497C1[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C3[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C3D1Ev,_ZTv0_n24_N8S19497C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C3D0Ev,_ZTv0_n24_N8S19497C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19497C32v3Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C5__8S19497C1[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C8D1Ev();
extern void _ZN8S19497C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C8__8S19497C1[] = {
  ABISELECT(-40,-40),
  ABISELECT(120,60),
  -40,
  ABISELECT(-48,-44),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-48,-44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C8D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N8S19497C8D1Ev,_ZTv0_n36_N8S19497C8D1Ev)();
extern void ABISELECT(_ZThn16_N8S19497C8D1Ev,_ZThn8_N8S19497C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19497C8D0Ev,_ZTv0_n36_N8S19497C8D0Ev)();
extern void ABISELECT(_ZThn16_N8S19497C8D0Ev,_ZThn8_N8S19497C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19497C9__8S19497C8__8S19497C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(104,52),
  ABISELECT(-56,-48),
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19497C8D1Ev,_ZTv0_n36_N8S19497C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19497C8D0Ev,_ZTv0_n36_N8S19497C8D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S19497C8D1Ev,_ZTv0_n32_N8S19497C8D1Ev)();
extern void ABISELECT(_ZThn32_N8S19497C8D1Ev,_ZThn16_N8S19497C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19497C8D0Ev,_ZTv0_n32_N8S19497C8D0Ev)();
extern void ABISELECT(_ZThn32_N8S19497C8D0Ev,_ZThn16_N8S19497C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C10__8S19497C8__8S19497C1[] = {
  ABISELECT(-32,-16),
  0,
  ABISELECT(-72,-56),
  ABISELECT(88,44),
  ABISELECT(-80,-60),
  ABISELECT(-72,-56),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19497C8D1Ev,_ZTv0_n32_N8S19497C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19497C8D0Ev,_ZTv0_n32_N8S19497C8D0Ev),
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C8__8S19497C1[] = {
  0,
  ABISELECT(48,44),
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S19497C8D1Ev,_ZTv0_n28_N8S19497C8D1Ev)();
extern void ABISELECT(_ZThn120_N8S19497C8D1Ev,_ZThn60_N8S19497C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19497C8D0Ev,_ZTv0_n28_N8S19497C8D0Ev)();
extern void ABISELECT(_ZThn120_N8S19497C8D0Ev,_ZThn60_N8S19497C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C12__8S19497C8__8S19497C1[] = {
  ABISELECT(-120,-60),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-120,-60),
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19497C8D1Ev,_ZTv0_n28_N8S19497C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19497C8D0Ev,_ZTv0_n28_N8S19497C8D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19497C8D1Ev,_ZTvn760_n28_N8S19497C8D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19497C8D0Ev,_ZTvn760_n28_N8S19497C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__8S19497C8__8S19497C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1320,-860),
  ABISELECT(-1328,-864),
  ABISELECT(-1280,-820),
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19497C8D1Ev,_ZTvn760_n28_N8S19497C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19497C8D0Ev,_ZTvn760_n28_N8S19497C8D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19497C8D1Ev,_ZTvn764_n28_N8S19497C8D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19497C8D0Ev,_ZTvn764_n28_N8S19497C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__8S19497C8__8S19497C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1328,-864),
  ABISELECT(-1336,-868),
  ABISELECT(-1288,-824),
  (VTBL_ENTRY)&(_ZTI8S19497C8[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19497C8D1Ev,_ZTvn764_n28_N8S19497C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19497C8D0Ev,_ZTvn764_n28_N8S19497C8D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C9D1Ev();
extern void _ZN8S19497C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C9__8S19497C1[] = {
  ABISELECT(-56,-48),
  ABISELECT(104,52),
  ABISELECT(-56,-48),
  ABISELECT(-64,-52),
  ABISELECT(16,8),
  ABISELECT(-64,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C9D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N8S19497C9D1Ev,_ZTv0_n32_N8S19497C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19497C9D1Ev,_ZThn8_N8S19497C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19497C9D0Ev,_ZTv0_n32_N8S19497C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19497C9D0Ev,_ZThn8_N8S19497C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C10__8S19497C9__8S19497C1[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-72,-56),
  ABISELECT(88,44),
  ABISELECT(-80,-60),
  ABISELECT(-72,-56),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19497C9D1Ev,_ZTv0_n32_N8S19497C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19497C9D0Ev,_ZTv0_n32_N8S19497C9D0Ev),
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C9__8S19497C1[] = {
  0,
  ABISELECT(64,52),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N8S19497C9D1Ev,_ZTv0_n28_N8S19497C9D1Ev)();
extern void ABISELECT(_ZThn104_N8S19497C9D1Ev,_ZThn52_N8S19497C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19497C9D0Ev,_ZTv0_n28_N8S19497C9D0Ev)();
extern void ABISELECT(_ZThn104_N8S19497C9D0Ev,_ZThn52_N8S19497C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C12__8S19497C9__8S19497C1[] = {
  ABISELECT(-104,-52),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-104,-52),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19497C9D1Ev,_ZTv0_n28_N8S19497C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19497C9D0Ev,_ZTv0_n28_N8S19497C9D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19497C9D1Ev,_ZTvn760_n28_N8S19497C9D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19497C9D0Ev,_ZTvn760_n28_N8S19497C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__8S19497C9__8S19497C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1320,-860),
  ABISELECT(-1328,-864),
  ABISELECT(-1264,-812),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19497C9D1Ev,_ZTvn760_n28_N8S19497C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19497C9D0Ev,_ZTvn760_n28_N8S19497C9D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19497C9D1Ev,_ZTvn764_n28_N8S19497C9D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19497C9D0Ev,_ZTvn764_n28_N8S19497C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__8S19497C9__8S19497C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1328,-864),
  ABISELECT(-1336,-868),
  ABISELECT(-1272,-816),
  (VTBL_ENTRY)&(_ZTI8S19497C9[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19497C9D1Ev,_ZTvn764_n28_N8S19497C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19497C9D0Ev,_ZTvn764_n28_N8S19497C9D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C10D1Ev();
extern void _ZN9S19497C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C10__8S19497C1[] = {
  ABISELECT(-72,-56),
  ABISELECT(88,44),
  ABISELECT(-80,-60),
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C10D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C119S19497C10__8S19497C1[] = {
  ABISELECT(-72,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C11[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C10__8S19497C1[] = {
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZThn88_N9S19497C10D1Ev,_ZThn44_N9S19497C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev)();
extern void ABISELECT(_ZThn88_N9S19497C10D0Ev,_ZThn44_N9S19497C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C10__8S19497C1[] = {
  ABISELECT(-88,-44),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C10__8S19497C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1320,-860),
  ABISELECT(-1328,-864),
  ABISELECT(-1248,-804),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D1Ev,_ZTvn760_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C10D0Ev,_ZTvn760_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C10__8S19497C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1328,-864),
  ABISELECT(-1336,-868),
  ABISELECT(-1256,-808),
  (VTBL_ENTRY)&(_ZTI9S19497C10[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D1Ev,_ZTvn764_n28_N9S19497C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C10D0Ev,_ZTvn764_n28_N9S19497C10D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C12D1Ev();
extern void _ZN9S19497C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C12__8S19497C1[] = {
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C139S19497C12__8S19497C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C139S19497C12__8S19497C1[] = {
  0,
  ABISELECT(168,104),
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__A1__8S19497C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1320,-860),
  ABISELECT(-1328,-864),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C12__A1__8S19497C1[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C14D1Ev();
extern void _ZN9S19497C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__8S19497C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1328,-864),
  ABISELECT(-1336,-868),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C149S19497C12__A2__8S19497C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1328,-864),
  ABISELECT(-1336,-868),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A2__8S19497C1[] = {
  0,
  ABISELECT(1336,868),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C149S19497C12__8S19497C1[] = {
  0,
  ABISELECT(1336,868),
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C12__8S19497C1[] = {
  0,
  ABISELECT(168,104),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C5__9S19497C12__8S19497C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1320,-860),
  ABISELECT(-1328,-864),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C14__9S19497C12__8S19497C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1328,-864),
  ABISELECT(-1336,-868),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19497C15__8S19497C1[] = {
  ABISELECT(-1336,-868),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C15[0]),
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C16D1Ev();
extern void _ZN9S19497C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C16__8S19497C1[] = {
  ABISELECT(1264,836),
  ABISELECT(-1192,-776),
  ABISELECT(-1280,-820),
  ABISELECT(1200,780),
  ABISELECT(-1360,-880),
  ABISELECT(-1352,-876),
  ABISELECT(-1352,-876),
  ABISELECT(-1360,-880),
  ABISELECT(-1360,-880),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C16D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C12D1Ev();
extern void _ZN9S19497C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C129S19497C16__A1__8S19497C1[] = {
  ABISELECT(-1352,-876),
  ABISELECT(-1352,-876),
  ABISELECT(-1360,-880),
  ABISELECT(-1360,-880),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C12D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C139S19497C129S19497C16__A1__8S19497C1[] = {
  ABISELECT(-1360,-880),
  ABISELECT(-1360,-880),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C139S19497C129S19497C16__A1__8S19497C1[] = {
  0,
  ABISELECT(1360,880),
  (VTBL_ENTRY)&(_ZTI9S19497C13[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C129S19497C16__A3__8S19497C1[] = {
  ABISELECT(-2520,-1640),
  ABISELECT(-2512,-1636),
  ABISELECT(-2520,-1640),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C129S19497C16__A3__8S19497C1[] = {
  0,
  ABISELECT(2520,1640),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C14D1Ev();
extern void _ZN9S19497C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C129S19497C16__A1__8S19497C1[] = {
  ABISELECT(-2528,-1644),
  ABISELECT(-2520,-1640),
  ABISELECT(-2528,-1644),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C14D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN8S19497C5D1Ev();
extern void _ZN8S19497C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C149S19497C129S19497C16__A4__8S19497C1[] = {
  ABISELECT(-2528,-1644),
  ABISELECT(-2520,-1640),
  ABISELECT(-2528,-1644),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19497C5D0Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__8S19497C59S19497C149S19497C129S19497C16__A4__8S19497C1[] = {
  0,
  ABISELECT(2528,1644),
  (VTBL_ENTRY)&(_ZTI8S19497C5[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C149S19497C129S19497C16__A1__8S19497C1[] = {
  0,
  ABISELECT(2528,1644),
  (VTBL_ENTRY)&(_ZTI9S19497C14[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C129S19497C16__A1__8S19497C1[] = {
  0,
  ABISELECT(1360,880),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C5__9S19497C129S19497C16__A1__8S19497C1[] = {
  ABISELECT(-2520,-1640),
  ABISELECT(-2512,-1636),
  ABISELECT(-2520,-1640),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D1Ev,_ZThn760_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C12D0Ev,_ZThn760_N9S19497C12D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C14__9S19497C129S19497C16__A1__8S19497C1[] = {
  ABISELECT(-2528,-1644),
  ABISELECT(-2520,-1640),
  ABISELECT(-2528,-1644),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S19497C12[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D1Ev,_ZThn764_N9S19497C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C12D0Ev,_ZThn764_N9S19497C12D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S19497C3D1Ev,_ZTv0_n24_N8S19497C3D1Ev)();
extern void _ZN8S19497C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19497C3D0Ev,_ZTv0_n24_N8S19497C3D0Ev)();
extern void _ZN8S19497C3D0Ev() __attribute__((weak));
extern void _ZN8S19497C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C39S19497C16__A1__8S19497C1[] = {
  ABISELECT(-2536,-1648),
  ABISELECT(-2528,-1644),
  0,
  ABISELECT(-2536,-1648),
  ABISELECT(-2528,-1644),
  ABISELECT(-2536,-1648),
  0,
  (VTBL_ENTRY)&(_ZTI8S19497C3[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C3D1Ev,_ZTv0_n24_N8S19497C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C3D0Ev,_ZTv0_n24_N8S19497C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19497C32v3Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N8S19497C3D1Ev,_ZTv0_n24_N8S19497C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N8S19497C3D0Ev,_ZTv0_n24_N8S19497C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C5__8S19497C39S19497C16__A1__8S19497C1[] = {
  ABISELECT(2536,1648),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(2536,1648),
  (VTBL_ENTRY)&(_ZTI8S19497C3[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C3D1Ev,_ZTv0_n24_N8S19497C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19497C3D0Ev,_ZTv0_n24_N8S19497C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19497C219S19497C16__8S19497C1[] = {
  ABISELECT(-2536,-1648),
  ABISELECT(80,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C21[0]),
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C11__9S19497C219S19497C16__8S19497C1[] = {
  0,
  ABISELECT(-2616,-1712),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI9S19497C21[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S19497C16D1Ev,_ZTv0_n24_N9S19497C16D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S19497C16D0Ev,_ZTv0_n24_N9S19497C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C5__A2__9S19497C16__8S19497C1[] = {
  ABISELECT(1360,880),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(1360,880),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19497C16D1Ev,_ZTv0_n24_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19497C16D0Ev,_ZTv0_n24_N9S19497C16D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1160_N9S19497C16D1Ev,_ZThn760_N9S19497C16D1Ev)();
extern void ABISELECT(_ZThn1160_N9S19497C16D0Ev,_ZThn760_N9S19497C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C16__8S19497C1[] = {
  ABISELECT(-2520,-1640),
  ABISELECT(-2512,-1636),
  ABISELECT(-2520,-1640),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C16D1Ev,_ZThn760_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N9S19497C16D0Ev,_ZThn760_N9S19497C16D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZThn1168_N9S19497C16D1Ev,_ZThn764_N9S19497C16D1Ev)();
extern void ABISELECT(_ZThn1168_N9S19497C16D0Ev,_ZThn764_N9S19497C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C16__8S19497C1[] = {
  ABISELECT(-2528,-1644),
  ABISELECT(-2520,-1640),
  ABISELECT(-2528,-1644),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C16D1Ev,_ZThn764_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N9S19497C16D0Ev,_ZThn764_N9S19497C16D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N9S19497C16D1Ev,_ZTv0_n24_N9S19497C16D1Ev)();
extern void ABISELECT(_ZThn1176_N9S19497C16D1Ev,_ZThn768_N9S19497C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19497C16D0Ev,_ZTv0_n24_N9S19497C16D0Ev)();
extern void ABISELECT(_ZThn1176_N9S19497C16D0Ev,_ZThn768_N9S19497C16D0Ev)() __attribute__((weak));
extern void _ZN8S19497C32v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C3__9S19497C16__8S19497C1[] = {
  ABISELECT(-2536,-1648),
  ABISELECT(-2528,-1644),
  ABISELECT(-1176,-768),
  ABISELECT(-2536,-1648),
  ABISELECT(-2528,-1644),
  ABISELECT(-2536,-1648),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19497C16D1Ev,_ZTv0_n24_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19497C16D0Ev,_ZTv0_n24_N9S19497C16D0Ev),
  (VTBL_ENTRY)&_ZN8S19497C32v3Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n72_N9S19497C16D1Ev,_ZTv0_n36_N9S19497C16D1Ev)();
extern void ABISELECT(_ZThn1200_N9S19497C16D1Ev,_ZThn780_N9S19497C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S19497C16D0Ev,_ZTv0_n36_N9S19497C16D0Ev)();
extern void ABISELECT(_ZThn1200_N9S19497C16D0Ev,_ZThn780_N9S19497C16D0Ev)() __attribute__((weak));
extern void _ZN9S19497C172v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C17__9S19497C16__8S19497C1[] = {
  0,
  ABISELECT(-1200,-780),
  0,
  ABISELECT(-2552,-1656),
  ABISELECT(-2392,-1556),
  ABISELECT(-2552,-1656),
  ABISELECT(-2560,-1660),
  ABISELECT(-2480,-1600),
  ABISELECT(-1200,-780),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19497C16D1Ev,_ZTv0_n36_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S19497C16D0Ev,_ZTv0_n36_N9S19497C16D0Ev),
  (VTBL_ENTRY)&_ZN9S19497C172v4Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19497C16D1Ev,_ZTv0_n32_N9S19497C16D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19497C16D0Ev,_ZTv0_n32_N9S19497C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C10__9S19497C16__8S19497C1[] = {
  ABISELECT(1280,820),
  0,
  ABISELECT(-72,-56),
  ABISELECT(88,44),
  ABISELECT(-80,-60),
  ABISELECT(-72,-56),
  ABISELECT(1280,820),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C16D1Ev,_ZTv0_n32_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C16D0Ev,_ZTv0_n32_N9S19497C16D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C16D1Ev,_ZTv0_n28_N9S19497C16D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19497C16D0Ev,_ZTv0_n28_N9S19497C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C12__A1__9S19497C16__8S19497C1[] = {
  ABISELECT(1192,776),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(1192,776),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C16D1Ev,_ZTv0_n28_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C16D0Ev,_ZTv0_n28_N9S19497C16D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C16D1Ev,_ZTvn760_n28_N9S19497C16D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C16D0Ev,_ZTvn760_n28_N9S19497C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__A3__9S19497C16__8S19497C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1320,-860),
  ABISELECT(-1328,-864),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C16D1Ev,_ZTvn760_n28_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C16D0Ev,_ZTvn760_n28_N9S19497C16D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C16D1Ev,_ZTvn764_n28_N9S19497C16D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C16D0Ev,_ZTvn764_n28_N9S19497C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__A1__9S19497C16__8S19497C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1328,-864),
  ABISELECT(-1336,-868),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C16D1Ev,_ZTvn764_n28_N9S19497C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C16D0Ev,_ZTvn764_n28_N9S19497C16D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19497C21__9S19497C16__8S19497C1[] = {
  ABISELECT(-2536,-1648),
  ABISELECT(80,64),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C11__A1__9S19497C16__8S19497C1[] = {
  0,
  ABISELECT(-2616,-1712),
  ABISELECT(-1264,-836),
  (VTBL_ENTRY)&(_ZTI9S19497C16[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C17D1Ev();
extern void _ZN9S19497C17D0Ev();
extern void _ZN9S19497C172v4Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C17__8S19497C1[] = {
  ABISELECT(-2552,-1656),
  ABISELECT(-2392,-1556),
  ABISELECT(-2552,-1656),
  ABISELECT(-2560,-1660),
  ABISELECT(-2480,-1600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C17D0Ev,
  (VTBL_ENTRY)&_ZN9S19497C172v4Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void _ZN9S19497C18D1Ev();
extern void _ZN9S19497C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C189S19497C17__8S19497C1[] = {
  ABISELECT(-2552,-1656),
  ABISELECT(-2392,-1556),
  ABISELECT(-2552,-1656),
  ABISELECT(-2560,-1660),
  ABISELECT(-2480,-1600),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&_ZN9S19497C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19497C18D0Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19497C18D1Ev,_ZTv0_n32_N9S19497C18D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19497C18D0Ev,_ZTv0_n32_N9S19497C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C10__9S19497C189S19497C17__8S19497C1[] = {
  ABISELECT(2480,1600),
  0,
  ABISELECT(-72,-56),
  ABISELECT(88,44),
  ABISELECT(-80,-60),
  ABISELECT(-72,-56),
  ABISELECT(2480,1600),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C18D1Ev,_ZTv0_n32_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C18D0Ev,_ZTv0_n32_N9S19497C18D0Ev),
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C189S19497C17__8S19497C1[] = {
  0,
  ABISELECT(2560,1660),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C18D1Ev,_ZTv0_n28_N9S19497C18D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19497C18D0Ev,_ZTv0_n28_N9S19497C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C189S19497C17__8S19497C1[] = {
  ABISELECT(2392,1556),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(2392,1556),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C18D1Ev,_ZTv0_n28_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C18D0Ev,_ZTv0_n28_N9S19497C18D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C18D1Ev,_ZTvn760_n28_N9S19497C18D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C18D0Ev,_ZTvn760_n28_N9S19497C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C189S19497C17__8S19497C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1320,-860),
  ABISELECT(-1328,-864),
  ABISELECT(1232,796),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C18D1Ev,_ZTvn760_n28_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C18D0Ev,_ZTvn760_n28_N9S19497C18D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C18D1Ev,_ZTvn764_n28_N9S19497C18D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C18D0Ev,_ZTvn764_n28_N9S19497C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C189S19497C17__8S19497C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1328,-864),
  ABISELECT(-1336,-868),
  ABISELECT(1224,792),
  (VTBL_ENTRY)&(_ZTI9S19497C18[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C18D1Ev,_ZTvn764_n28_N9S19497C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C18D0Ev,_ZTvn764_n28_N9S19497C18D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n64_N9S19497C17D1Ev,_ZTv0_n32_N9S19497C17D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S19497C17D0Ev,_ZTv0_n32_N9S19497C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C10__9S19497C17__8S19497C1[] = {
  ABISELECT(2480,1600),
  0,
  ABISELECT(-72,-56),
  ABISELECT(88,44),
  ABISELECT(-80,-60),
  ABISELECT(-72,-56),
  ABISELECT(2480,1600),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C17D1Ev,_ZTv0_n32_N9S19497C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S19497C17D0Ev,_ZTv0_n32_N9S19497C17D0Ev),
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19497C7__9S19497C17__8S19497C1[] = {
  0,
  ABISELECT(2560,1660),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTv0_n56_N9S19497C17D1Ev,_ZTv0_n28_N9S19497C17D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S19497C17D0Ev,_ZTv0_n28_N9S19497C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C12__9S19497C17__8S19497C1[] = {
  ABISELECT(2392,1556),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(2392,1556),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C17D1Ev,_ZTv0_n28_N9S19497C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19497C17D0Ev,_ZTv0_n28_N9S19497C17D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C17D1Ev,_ZTvn760_n28_N9S19497C17D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S19497C17D0Ev,_ZTvn760_n28_N9S19497C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19497C59S19497C12__9S19497C17__8S19497C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1320,-860),
  ABISELECT(-1328,-864),
  ABISELECT(1232,796),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C17D1Ev,_ZTvn760_n28_N9S19497C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S19497C17D0Ev,_ZTvn760_n28_N9S19497C17D0Ev),
};
extern void _ZN8S19497C72v2Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C17D1Ev,_ZTvn764_n28_N9S19497C17D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S19497C17D0Ev,_ZTvn764_n28_N9S19497C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19497C149S19497C12__9S19497C17__8S19497C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1328,-864),
  ABISELECT(-1336,-868),
  ABISELECT(1224,792),
  (VTBL_ENTRY)&(_ZTI9S19497C17[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C17D1Ev,_ZTvn764_n28_N9S19497C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S19497C17D0Ev,_ZTvn764_n28_N9S19497C17D0Ev),
};
extern void _ZN8S19497C72v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19497C11__A1__8S19497C1[] = {
  ABISELECT(-2616,-1712),
  0,
  (VTBL_ENTRY)&(_ZTI9S19497C11[0]),
  (VTBL_ENTRY)&_ZN8S19497C72v2Ev,
};
static  VTT_ENTRY vtt_S19497C1[] = {
  {&(_ZTV8S19497C1[18]),  18,155},
  {&(_ZTV8S19497C1[18]),  18,155},
  {&(_ZTV8S19497C1[18]),  18,155},
  {&(_ZTV8S19497C1[18]),  18,155},
  {&(_ZTV8S19497C1[33]),  33,155},
  {&(_ZTV8S19497C1[45]),  45,155},
  {&(_ZTV8S19497C1[56]),  56,155},
  {&(_ZTV8S19497C1[66]),  66,155},
  {&(_ZTV8S19497C1[74]),  74,155},
  {&(_ZTV8S19497C1[82]),  82,155},
  {&(_ZTV8S19497C1[88]),  88,155},
  {&(_ZTV8S19497C1[101]),  101,155},
  {&(_ZTV8S19497C1[109]),  109,155},
  {&(_ZTV8S19497C1[117]),  117,155},
  {&(_ZTV8S19497C1[128]),  128,155},
  {&(_ZTV8S19497C1[146]),  146,155},
  {&(_ZTV8S19497C1[136]),  136,155},
  {&(_ZTV8S19497C1[154]),  154,155},
  {&(_tg__ZTV8S19497C2__8S19497C1[8]),  8,12},
  {&(_tg__ZTV8S19497C38S19497C2__8S19497C1[8]),  8,12},
  {&(_tg__ZTV8S19497C38S19497C2__8S19497C1[8]),  8,12},
  {&(_tg__ZTV8S19497C38S19497C2__8S19497C1[8]),  8,12},
  {&(_tg__ZTV8S19497C2__8S19497C1[8]),  8,12},
  {&(_tg__ZTV8S19497C2__8S19497C1[8]),  8,12},
  {&(_tg__ZTV8S19497C5__8S19497C1[5]),  5,8},
  {&(_tg__ZTV8S19497C5__8S19497C1[5]),  5,8},
  {&(_tg__ZTV8S19497C8__8S19497C1[9]),  9,12},
  {&(_tg__ZTV8S19497C9__8S19497C8__8S19497C1[9]),  9,12},
  {&(_tg__ZTV9S19497C10__8S19497C8__8S19497C1[8]),  8,11},
  {&(_tg__ZTV8S19497C7__8S19497C8__8S19497C1[3]),  3,4},
  {&(_tg__ZTV9S19497C12__8S19497C8__8S19497C1[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__8S19497C8__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__8S19497C8__8S19497C1[5]),  5,8},
  {&(_tg__ZTV8S19497C9__8S19497C1[8]),  8,11},
  {&(_tg__ZTV9S19497C10__8S19497C9__8S19497C1[8]),  8,11},
  {&(_tg__ZTV8S19497C7__8S19497C9__8S19497C1[3]),  3,4},
  {&(_tg__ZTV9S19497C12__8S19497C9__8S19497C1[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__8S19497C9__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__8S19497C9__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C10__8S19497C1[6]),  6,9},
  {&(_tg__ZTV9S19497C119S19497C10__8S19497C1[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C10__8S19497C1[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C10__8S19497C1[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C10__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C10__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C12__8S19497C1[6]),  6,9},
  {&(_tg__ZTV9S19497C139S19497C12__8S19497C1[4]),  4,5},
  {&(_tg__ZTV8S19497C7__9S19497C139S19497C12__8S19497C1[3]),  3,4},
  {&(_tg__ZTV8S19497C59S19497C12__A1__8S19497C1[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C12__A1__8S19497C1[3]),  3,4},
  {&(_tg__ZTV9S19497C149S19497C12__8S19497C1[5]),  5,8},
  {&(_tg__ZTV8S19497C59S19497C149S19497C12__A2__8S19497C1[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C149S19497C12__A2__8S19497C1[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C149S19497C12__8S19497C1[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C12__8S19497C1[3]),  3,4},
  {&(_tg__ZTV8S19497C5__9S19497C12__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C14__9S19497C12__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C15__8S19497C1[3]),  3,3},
  {&(_tg__ZTV9S19497C16__8S19497C1[11]),  11,14},
  {&(_tg__ZTV9S19497C129S19497C16__A1__8S19497C1[6]),  6,9},
  {&(_tg__ZTV9S19497C139S19497C129S19497C16__A1__8S19497C1[4]),  4,5},
  {&(_tg__ZTV8S19497C7__9S19497C139S19497C129S19497C16__A1__8S19497C1[3]),  3,4},
  {&(_tg__ZTV8S19497C59S19497C129S19497C16__A3__8S19497C1[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C129S19497C16__A3__8S19497C1[3]),  3,4},
  {&(_tg__ZTV9S19497C149S19497C129S19497C16__A1__8S19497C1[5]),  5,8},
  {&(_tg__ZTV8S19497C59S19497C149S19497C129S19497C16__A4__8S19497C1[5]),  5,8},
  {&(_tg__ZTV8S19497C7__8S19497C59S19497C149S19497C129S19497C16__A4__8S19497C1[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C149S19497C129S19497C16__A1__8S19497C1[3]),  3,4},
  {&(_tg__ZTV8S19497C7__9S19497C129S19497C16__A1__8S19497C1[3]),  3,4},
  {&(_tg__ZTV8S19497C5__9S19497C129S19497C16__A1__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C14__9S19497C129S19497C16__A1__8S19497C1[5]),  5,8},
  {&(_tg__ZTV8S19497C39S19497C16__A1__8S19497C1[8]),  8,12},
  {&(_tg__ZTV8S19497C5__8S19497C39S19497C16__A1__8S19497C1[6]),  6,9},
  {&(_tg__ZTV8S19497C5__8S19497C39S19497C16__A1__8S19497C1[6]),  6,9},
  {&(_tg__ZTV9S19497C219S19497C16__8S19497C1[4]),  4,4},
  {&(_tg__ZTV9S19497C11__9S19497C219S19497C16__8S19497C1[4]),  4,5},
  {&(_tg__ZTV8S19497C5__A2__9S19497C16__8S19497C1[6]),  6,9},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C16__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C16__8S19497C1[5]),  5,8},
  {&(_tg__ZTV8S19497C3__9S19497C16__8S19497C1[8]),  8,12},
  {&(_tg__ZTV8S19497C5__A2__9S19497C16__8S19497C1[6]),  6,9},
  {&(_tg__ZTV9S19497C17__9S19497C16__8S19497C1[10]),  10,14},
  {&(_tg__ZTV9S19497C10__9S19497C16__8S19497C1[8]),  8,11},
  {&(_tg__ZTV9S19497C12__A1__9S19497C16__8S19497C1[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__A3__9S19497C16__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__A1__9S19497C16__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C21__9S19497C16__8S19497C1[4]),  4,4},
  {&(_tg__ZTV9S19497C11__A1__9S19497C16__8S19497C1[4]),  4,5},
  {&(_tg__ZTV9S19497C17__8S19497C1[7]),  7,11},
  {&(_tg__ZTV9S19497C189S19497C17__8S19497C1[7]),  7,10},
  {&(_tg__ZTV9S19497C10__9S19497C189S19497C17__8S19497C1[8]),  8,11},
  {&(_tg__ZTV8S19497C7__9S19497C189S19497C17__8S19497C1[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C189S19497C17__8S19497C1[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C189S19497C17__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C189S19497C17__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C10__9S19497C17__8S19497C1[8]),  8,11},
  {&(_tg__ZTV8S19497C7__9S19497C17__8S19497C1[3]),  3,4},
  {&(_tg__ZTV9S19497C12__9S19497C17__8S19497C1[7]),  7,10},
  {&(_tg__ZTV8S19497C59S19497C12__9S19497C17__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C149S19497C12__9S19497C17__8S19497C1[5]),  5,8},
  {&(_tg__ZTV9S19497C11__A1__8S19497C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19497C1[];
extern  VTBL_ENTRY _ZTV8S19497C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19497C1[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19497C16D0Ev,_ZTv0_n36_N9S19497C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N9S19497C16D0Ev,_ZThn780_N9S19497C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S19497C16D1Ev,_ZTv0_n36_N9S19497C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1200_N9S19497C16D1Ev,_ZThn780_N9S19497C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19497C16D0Ev,_ZTv0_n24_N9S19497C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S19497C16D0Ev,_ZThn768_N9S19497C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19497C16D1Ev,_ZTv0_n24_N9S19497C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1176_N9S19497C16D1Ev,_ZThn768_N9S19497C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D0Ev,_ZTv0_n28_N9S19497C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19497C10D0Ev,_ZThn44_N9S19497C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19497C10D1Ev,_ZTv0_n28_N9S19497C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19497C10D1Ev,_ZThn44_N9S19497C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19497C9D0Ev,_ZTv0_n28_N8S19497C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19497C9D0Ev,_ZThn52_N8S19497C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19497C9D1Ev,_ZTv0_n28_N8S19497C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S19497C9D1Ev,_ZThn52_N8S19497C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19497C9D0Ev,_ZTv0_n32_N8S19497C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19497C9D0Ev,_ZThn8_N8S19497C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19497C9D1Ev,_ZTv0_n32_N8S19497C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19497C9D1Ev,_ZThn8_N8S19497C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19497C8D0Ev,_ZTv0_n28_N8S19497C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19497C8D0Ev,_ZThn60_N8S19497C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19497C8D1Ev,_ZTv0_n28_N8S19497C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S19497C8D1Ev,_ZThn60_N8S19497C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19497C8D0Ev,_ZTv0_n32_N8S19497C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19497C8D0Ev,_ZThn16_N8S19497C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19497C8D1Ev,_ZTv0_n32_N8S19497C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19497C8D1Ev,_ZThn16_N8S19497C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19497C8D0Ev,_ZTv0_n36_N8S19497C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19497C8D0Ev,_ZThn8_N8S19497C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19497C8D1Ev,_ZTv0_n36_N8S19497C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19497C8D1Ev,_ZThn8_N8S19497C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19497C3D0Ev,_ZTv0_n24_N8S19497C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19497C3D0Ev,
  (VTBL_ENTRY)_ZN8S19497C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19497C3D1Ev,_ZTv0_n24_N8S19497C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19497C3D1Ev,
  (VTBL_ENTRY)_ZN8S19497C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19497C2D0Ev,_ZTv0_n24_N8S19497C2D0Ev), // 
  (VTBL_ENTRY)_ZN8S19497C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19497C2D1Ev,_ZTv0_n24_N8S19497C2D1Ev), // 
  (VTBL_ENTRY)_ZN8S19497C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19497C1D0Ev,_ZTv0_n48_N8S19497C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1360_N8S19497C1D0Ev,_ZThn880_N8S19497C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S19497C1D1Ev,_ZTv0_n48_N8S19497C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1360_N8S19497C1D1Ev,_ZThn880_N8S19497C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19497C1D0Ev,_ZTv0_n28_N8S19497C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19497C1D0Ev,_ZThn104_N8S19497C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19497C1D1Ev,_ZTv0_n28_N8S19497C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S19497C1D1Ev,_ZThn104_N8S19497C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19497C1D0Ev,_ZTv0_n32_N8S19497C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19497C1D0Ev,_ZThn60_N8S19497C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19497C1D1Ev,_ZTv0_n32_N8S19497C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19497C1D1Ev,_ZThn60_N8S19497C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19497C1D0Ev,_ZTv0_n36_N8S19497C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S19497C1D0Ev,_ZThn1660_N8S19497C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19497C1D0Ev,_ZThn52_N8S19497C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19497C1D1Ev,_ZTv0_n36_N8S19497C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2560_N8S19497C1D1Ev,_ZThn1660_N8S19497C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19497C1D1Ev,_ZThn52_N8S19497C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19497C1D0Ev,_ZTv0_n40_N8S19497C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19497C1D0Ev,_ZThn44_N8S19497C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19497C1D1Ev,_ZTv0_n40_N8S19497C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19497C1D1Ev,_ZThn44_N8S19497C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19497C1D0Ev,_ZTv0_n24_N8S19497C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2536_N8S19497C1D0Ev,_ZThn1648_N8S19497C1D0Ev),
  (VTBL_ENTRY)_ZN8S19497C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19497C1D1Ev,_ZTv0_n24_N8S19497C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2536_N8S19497C1D1Ev,_ZThn1648_N8S19497C1D1Ev),
  (VTBL_ENTRY)_ZN8S19497C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19497C1 = {  "S19497C1", // class name
  bases_S19497C1, 41,
  &(vtc_S19497C1[0]), // expected_vtbl_contents
  &(vtt_S19497C1[0]), // expected_vtt_contents
  ABISELECT(2720,1760), // object size
  NSPAIRA(_ZTI8S19497C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19497C1),155, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19497C1),101, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9917C2  {
  void *s9917c2f0;
  ::S4227C37 s9917c2f1;
  int s9917c2f2;
  ::S9141C28_nt s9917c2f3;
  unsigned int s9917c2f4:1;
  unsigned int s9917c2f5:1;
  unsigned int s9917c2f6:1;
  unsigned int s9917c2f7:1;
  unsigned int s9917c2f8:1;
  unsigned int s9917c2f9:1;
  unsigned int s9917c2f10:1;
  int s9917c2f11:3;
  int s9917c2f12:3;
  ::S5327C13_nt s9917c2f13;
  int s9917c2f14;
  virtual  ~S9917C2(); // _ZN7S9917C2D1Ev
  virtual void  v5(); // _ZN7S9917C22v5Ev
  virtual void  v6(); // _ZN7S9917C22v6Ev
  virtual void  v7(); // _ZN7S9917C22v7Ev
  virtual void  v8(); // _ZN7S9917C22v8Ev
  virtual void  v9(); // _ZN7S9917C22v9Ev
  virtual void  v10(); // _ZN7S9917C23v10Ev
  virtual void  v11(); // _ZN7S9917C23v11Ev
  virtual void  v12(); // _ZN7S9917C23v12Ev
  virtual void  v13(); // _ZN7S9917C23v13Ev
  virtual void  v14(); // _ZN7S9917C23v14Ev
  virtual void  v15(); // _ZN7S9917C23v15Ev
  virtual void  v16(); // _ZN7S9917C23v16Ev
  virtual void  v17(); // _ZN7S9917C23v17Ev
  virtual void  v18(); // _ZN7S9917C23v18Ev
  virtual void  v19(); // _ZN7S9917C23v19Ev
  virtual void  v20(); // _ZN7S9917C23v20Ev
  virtual void  v21(); // _ZN7S9917C23v21Ev
  virtual void  v22(); // _ZN7S9917C23v22Ev
  S9917C2(); // tgen
};
//SIG(-1 S9917C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S9917C2 ::~S9917C2(){ note_dtor("S9917C2", this);}
void  S9917C2 ::v5(){vfunc_called(this, "_ZN7S9917C22v5Ev");}
void  S9917C2 ::v6(){vfunc_called(this, "_ZN7S9917C22v6Ev");}
void  S9917C2 ::v7(){vfunc_called(this, "_ZN7S9917C22v7Ev");}
void  S9917C2 ::v8(){vfunc_called(this, "_ZN7S9917C22v8Ev");}
void  S9917C2 ::v9(){vfunc_called(this, "_ZN7S9917C22v9Ev");}
void  S9917C2 ::v10(){vfunc_called(this, "_ZN7S9917C23v10Ev");}
void  S9917C2 ::v11(){vfunc_called(this, "_ZN7S9917C23v11Ev");}
void  S9917C2 ::v12(){vfunc_called(this, "_ZN7S9917C23v12Ev");}
void  S9917C2 ::v13(){vfunc_called(this, "_ZN7S9917C23v13Ev");}
void  S9917C2 ::v14(){vfunc_called(this, "_ZN7S9917C23v14Ev");}
void  S9917C2 ::v15(){vfunc_called(this, "_ZN7S9917C23v15Ev");}
void  S9917C2 ::v16(){vfunc_called(this, "_ZN7S9917C23v16Ev");}
void  S9917C2 ::v17(){vfunc_called(this, "_ZN7S9917C23v17Ev");}
void  S9917C2 ::v18(){vfunc_called(this, "_ZN7S9917C23v18Ev");}
void  S9917C2 ::v19(){vfunc_called(this, "_ZN7S9917C23v19Ev");}
void  S9917C2 ::v20(){vfunc_called(this, "_ZN7S9917C23v20Ev");}
void  S9917C2 ::v21(){vfunc_called(this, "_ZN7S9917C23v21Ev");}
void  S9917C2 ::v22(){vfunc_called(this, "_ZN7S9917C23v22Ev");}
S9917C2 ::S9917C2(){ note_ctor("S9917C2", this);} // tgen

static void Test_S9917C2()
{
  extern Class_Descriptor cd_S9917C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S9917C2, buf);
    S9917C2 *dp, &lv = *(dp=new (buf) S9917C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S9917C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9917C2)");
    check_field_offset(lv, s9917c2f0, ABISELECT(8,4), "S9917C2.s9917c2f0");
    check_field_offset(lv, s9917c2f1, ABISELECT(16,8), "S9917C2.s9917c2f1");
    check_field_offset(lv, s9917c2f2, ABISELECT(20,12), "S9917C2.s9917c2f2");
    check_field_offset(lv, s9917c2f3, ABISELECT(24,16), "S9917C2.s9917c2f3");
    set_bf_and_test(lv, s9917c2f4, ABISELECT(40,28), 0, 1, 1, "S9917C2");
    set_bf_and_test(lv, s9917c2f5, ABISELECT(40,28), 1, 1, 1, "S9917C2");
    set_bf_and_test(lv, s9917c2f6, ABISELECT(40,28), 2, 1, 1, "S9917C2");
    set_bf_and_test(lv, s9917c2f7, ABISELECT(40,28), 3, 1, 1, "S9917C2");
    set_bf_and_test(lv, s9917c2f8, ABISELECT(40,28), 4, 1, 1, "S9917C2");
    set_bf_and_test(lv, s9917c2f9, ABISELECT(40,28), 5, 1, 1, "S9917C2");
    set_bf_and_test(lv, s9917c2f10, ABISELECT(40,28), 6, 1, 1, "S9917C2");
    set_bf_and_test(lv, s9917c2f11, ABISELECT(40,28), 7, 3, 1, "S9917C2");
    set_bf_and_test(lv, s9917c2f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S9917C2");
    set_bf_and_test(lv, s9917c2f12, ABISELECT(41,29), 2, 3, 1, "S9917C2");
    set_bf_and_test(lv, s9917c2f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S9917C2");
    check_field_offset(lv, s9917c2f13, ABISELECT(48,32), "S9917C2.s9917c2f13");
    check_field_offset(lv, s9917c2f14, ABISELECT(64,44), "S9917C2.s9917c2f14");
    test_class_info(&lv, &cd_S9917C2);
    dp->~S9917C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9917C2(Test_S9917C2, "S9917C2", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S9917C2C1Ev();
extern void _ZN7S9917C2D1Ev();
Name_Map name_map_S9917C2[] = {
  NSPAIR(_ZN7S9917C2C1Ev),
  NSPAIR(_ZN7S9917C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9917C2[];
extern void _ZN7S9917C2D1Ev();
extern void _ZN7S9917C2D0Ev();
extern void _ZN7S9917C22v5Ev();
extern void _ZN7S9917C22v6Ev();
extern void _ZN7S9917C22v7Ev();
extern void _ZN7S9917C22v8Ev();
extern void _ZN7S9917C22v9Ev();
extern void _ZN7S9917C23v10Ev();
extern void _ZN7S9917C23v11Ev();
extern void _ZN7S9917C23v12Ev();
extern void _ZN7S9917C23v13Ev();
extern void _ZN7S9917C23v14Ev();
extern void _ZN7S9917C23v15Ev();
extern void _ZN7S9917C23v16Ev();
extern void _ZN7S9917C23v17Ev();
extern void _ZN7S9917C23v18Ev();
extern void _ZN7S9917C23v19Ev();
extern void _ZN7S9917C23v20Ev();
extern void _ZN7S9917C23v21Ev();
extern void _ZN7S9917C23v22Ev();
static  VTBL_ENTRY vtc_S9917C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9917C2[0]),
  (VTBL_ENTRY)&_ZN7S9917C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9917C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9917C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9917C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9917C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9917C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9917C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S9917C2[];
extern  VTBL_ENTRY _ZTV7S9917C2[];
Class_Descriptor cd_S9917C2 = {  "S9917C2", // class name
  0,0,//no base classes
  &(vtc_S9917C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S9917C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9917C2),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9917C1  : S9917C2 {
  void *s9917c1f0;
  int s9917c1f1:3;
  unsigned int s9917c1f2:1;
  ::S10036C14_nt s9917c1f3;
  ::S3214C13_nt s9917c1f4[8];
  int s9917c1f5[3];
  ::S3214C13_nt s9917c1f6;
  ::S3214C13_nt s9917c1f7;
  ::S3214C13_nt s9917c1f8;
  ::S3214C13_nt s9917c1f9;
  virtual void  v1(); // _ZN7S9917C12v1Ev
  virtual void  v2(); // _ZN7S9917C12v2Ev
  virtual void  v3(); // _ZN7S9917C12v3Ev
  virtual void  v4(); // _ZN7S9917C12v4Ev
  ~S9917C1(); // tgen
  S9917C1(); // tgen
};
//SIG(1 S9917C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} v1 v2 v3 v4 Fp Fi:3 Fi:1 FC7{ m FC8{ m Fi[3]} FC8 Fi} FC8[8] Fi[3] FC8 FC8 FC8 FC8}


void  S9917C1 ::v1(){vfunc_called(this, "_ZN7S9917C12v1Ev");}
void  S9917C1 ::v2(){vfunc_called(this, "_ZN7S9917C12v2Ev");}
void  S9917C1 ::v3(){vfunc_called(this, "_ZN7S9917C12v3Ev");}
void  S9917C1 ::v4(){vfunc_called(this, "_ZN7S9917C12v4Ev");}
S9917C1 ::~S9917C1(){ note_dtor("S9917C1", this);} // tgen
S9917C1 ::S9917C1(){ note_ctor("S9917C1", this);} // tgen

static void Test_S9917C1()
{
  extern Class_Descriptor cd_S9917C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(35,61)];
    init_test(&cd_S9917C1, buf);
    S9917C1 *dp, &lv = *(dp=new (buf) S9917C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,240), "sizeof(S9917C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9917C1)");
    check_base_class_offset(lv, (S9917C2*), 0, "S9917C1");
    check_field_offset(lv, s9917c1f0, ABISELECT(72,48), "S9917C1.s9917c1f0");
    set_bf_and_test(lv, s9917c1f1, ABISELECT(80,52), 0, 3, 1, "S9917C1");
    set_bf_and_test(lv, s9917c1f1, ABISELECT(80,52), 0, 3, hide_sll(1LL<<2), "S9917C1");
    set_bf_and_test(lv, s9917c1f2, ABISELECT(80,52), 3, 1, 1, "S9917C1");
    check_field_offset(lv, s9917c1f3, ABISELECT(84,56), "S9917C1.s9917c1f3");
    check_field_offset(lv, s9917c1f4, ABISELECT(112,84), "S9917C1.s9917c1f4");
    check_field_offset(lv, s9917c1f5, ABISELECT(208,180), "S9917C1.s9917c1f5");
    check_field_offset(lv, s9917c1f6, ABISELECT(220,192), "S9917C1.s9917c1f6");
    check_field_offset(lv, s9917c1f7, ABISELECT(232,204), "S9917C1.s9917c1f7");
    check_field_offset(lv, s9917c1f8, ABISELECT(244,216), "S9917C1.s9917c1f8");
    check_field_offset(lv, s9917c1f9, ABISELECT(256,228), "S9917C1.s9917c1f9");
    test_class_info(&lv, &cd_S9917C1);
    dp->~S9917C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9917C1(Test_S9917C1, "S9917C1", ABISELECT(272,240));

#else // __cplusplus

extern void _ZN7S9917C1C1Ev();
extern void _ZN7S9917C1D1Ev();
Name_Map name_map_S9917C1[] = {
  NSPAIR(_ZN7S9917C1C1Ev),
  NSPAIR(_ZN7S9917C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9917C2;
extern VTBL_ENTRY _ZTI7S9917C2[];
extern  VTBL_ENTRY _ZTV7S9917C2[];
static Base_Class bases_S9917C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9917C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9917C1[];
extern void _ZN7S9917C1D1Ev();
extern void _ZN7S9917C1D0Ev();
extern void _ZN7S9917C22v5Ev();
extern void _ZN7S9917C22v6Ev();
extern void _ZN7S9917C22v7Ev();
extern void _ZN7S9917C22v8Ev();
extern void _ZN7S9917C22v9Ev();
extern void _ZN7S9917C23v10Ev();
extern void _ZN7S9917C23v11Ev();
extern void _ZN7S9917C23v12Ev();
extern void _ZN7S9917C23v13Ev();
extern void _ZN7S9917C23v14Ev();
extern void _ZN7S9917C23v15Ev();
extern void _ZN7S9917C23v16Ev();
extern void _ZN7S9917C23v17Ev();
extern void _ZN7S9917C23v18Ev();
extern void _ZN7S9917C23v19Ev();
extern void _ZN7S9917C23v20Ev();
extern void _ZN7S9917C23v21Ev();
extern void _ZN7S9917C23v22Ev();
extern void _ZN7S9917C12v1Ev();
extern void _ZN7S9917C12v2Ev();
extern void _ZN7S9917C12v3Ev();
extern void _ZN7S9917C12v4Ev();
static  VTBL_ENTRY vtc_S9917C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9917C1[0]),
  (VTBL_ENTRY)&_ZN7S9917C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9917C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9917C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9917C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9917C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9917C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9917C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9917C23v22Ev,
  (VTBL_ENTRY)&_ZN7S9917C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9917C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9917C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9917C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9917C1[];
extern  VTBL_ENTRY _ZTV7S9917C1[];
Class_Descriptor cd_S9917C1 = {  "S9917C1", // class name
  bases_S9917C1, 1,
  &(vtc_S9917C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(272,240), // object size
  NSPAIRA(_ZTI7S9917C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9917C1),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5159C3  {
  void *s5159c3f0;
  ::S4227C37 s5159c3f1;
  int s5159c3f2;
  ::S9141C28_nt s5159c3f3;
  unsigned int s5159c3f4:1;
  unsigned int s5159c3f5:1;
  unsigned int s5159c3f6:1;
  unsigned int s5159c3f7:1;
  unsigned int s5159c3f8:1;
  unsigned int s5159c3f9:1;
  unsigned int s5159c3f10:1;
  int s5159c3f11:3;
  int s5159c3f12:3;
  ::S5327C13_nt s5159c3f13;
  int s5159c3f14;
  virtual  ~S5159C3(); // _ZN7S5159C3D1Ev
  virtual void  v4(); // _ZN7S5159C32v4Ev
  virtual void  v5(); // _ZN7S5159C32v5Ev
  virtual void  v6(); // _ZN7S5159C32v6Ev
  virtual void  v7(); // _ZN7S5159C32v7Ev
  virtual void  v8(); // _ZN7S5159C32v8Ev
  virtual void  v9(); // _ZN7S5159C32v9Ev
  virtual void  v10(); // _ZN7S5159C33v10Ev
  virtual void  v11(); // _ZN7S5159C33v11Ev
  virtual void  v12(); // _ZN7S5159C33v12Ev
  virtual void  v13(); // _ZN7S5159C33v13Ev
  virtual void  v14(); // _ZN7S5159C33v14Ev
  virtual void  v15(); // _ZN7S5159C33v15Ev
  virtual void  v16(); // _ZN7S5159C33v16Ev
  virtual void  v17(); // _ZN7S5159C33v17Ev
  virtual void  v18(); // _ZN7S5159C33v18Ev
  virtual void  v19(); // _ZN7S5159C33v19Ev
  virtual void  v20(); // _ZN7S5159C33v20Ev
  virtual void  v21(); // _ZN7S5159C33v21Ev
  S5159C3(); // tgen
};
//SIG(-1 S5159C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S5159C3 ::~S5159C3(){ note_dtor("S5159C3", this);}
void  S5159C3 ::v4(){vfunc_called(this, "_ZN7S5159C32v4Ev");}
void  S5159C3 ::v5(){vfunc_called(this, "_ZN7S5159C32v5Ev");}
void  S5159C3 ::v6(){vfunc_called(this, "_ZN7S5159C32v6Ev");}
void  S5159C3 ::v7(){vfunc_called(this, "_ZN7S5159C32v7Ev");}
void  S5159C3 ::v8(){vfunc_called(this, "_ZN7S5159C32v8Ev");}
void  S5159C3 ::v9(){vfunc_called(this, "_ZN7S5159C32v9Ev");}
void  S5159C3 ::v10(){vfunc_called(this, "_ZN7S5159C33v10Ev");}
void  S5159C3 ::v11(){vfunc_called(this, "_ZN7S5159C33v11Ev");}
void  S5159C3 ::v12(){vfunc_called(this, "_ZN7S5159C33v12Ev");}
void  S5159C3 ::v13(){vfunc_called(this, "_ZN7S5159C33v13Ev");}
void  S5159C3 ::v14(){vfunc_called(this, "_ZN7S5159C33v14Ev");}
void  S5159C3 ::v15(){vfunc_called(this, "_ZN7S5159C33v15Ev");}
void  S5159C3 ::v16(){vfunc_called(this, "_ZN7S5159C33v16Ev");}
void  S5159C3 ::v17(){vfunc_called(this, "_ZN7S5159C33v17Ev");}
void  S5159C3 ::v18(){vfunc_called(this, "_ZN7S5159C33v18Ev");}
void  S5159C3 ::v19(){vfunc_called(this, "_ZN7S5159C33v19Ev");}
void  S5159C3 ::v20(){vfunc_called(this, "_ZN7S5159C33v20Ev");}
void  S5159C3 ::v21(){vfunc_called(this, "_ZN7S5159C33v21Ev");}
S5159C3 ::S5159C3(){ note_ctor("S5159C3", this);} // tgen

static void Test_S5159C3()
{
  extern Class_Descriptor cd_S5159C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S5159C3, buf);
    S5159C3 *dp, &lv = *(dp=new (buf) S5159C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S5159C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5159C3)");
    check_field_offset(lv, s5159c3f0, ABISELECT(8,4), "S5159C3.s5159c3f0");
    check_field_offset(lv, s5159c3f1, ABISELECT(16,8), "S5159C3.s5159c3f1");
    check_field_offset(lv, s5159c3f2, ABISELECT(20,12), "S5159C3.s5159c3f2");
    check_field_offset(lv, s5159c3f3, ABISELECT(24,16), "S5159C3.s5159c3f3");
    set_bf_and_test(lv, s5159c3f4, ABISELECT(40,28), 0, 1, 1, "S5159C3");
    set_bf_and_test(lv, s5159c3f5, ABISELECT(40,28), 1, 1, 1, "S5159C3");
    set_bf_and_test(lv, s5159c3f6, ABISELECT(40,28), 2, 1, 1, "S5159C3");
    set_bf_and_test(lv, s5159c3f7, ABISELECT(40,28), 3, 1, 1, "S5159C3");
    set_bf_and_test(lv, s5159c3f8, ABISELECT(40,28), 4, 1, 1, "S5159C3");
    set_bf_and_test(lv, s5159c3f9, ABISELECT(40,28), 5, 1, 1, "S5159C3");
    set_bf_and_test(lv, s5159c3f10, ABISELECT(40,28), 6, 1, 1, "S5159C3");
    set_bf_and_test(lv, s5159c3f11, ABISELECT(40,28), 7, 3, 1, "S5159C3");
    set_bf_and_test(lv, s5159c3f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S5159C3");
    set_bf_and_test(lv, s5159c3f12, ABISELECT(41,29), 2, 3, 1, "S5159C3");
    set_bf_and_test(lv, s5159c3f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S5159C3");
    check_field_offset(lv, s5159c3f13, ABISELECT(48,32), "S5159C3.s5159c3f13");
    check_field_offset(lv, s5159c3f14, ABISELECT(64,44), "S5159C3.s5159c3f14");
    test_class_info(&lv, &cd_S5159C3);
    dp->~S5159C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5159C3(Test_S5159C3, "S5159C3", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S5159C3C1Ev();
extern void _ZN7S5159C3D1Ev();
Name_Map name_map_S5159C3[] = {
  NSPAIR(_ZN7S5159C3C1Ev),
  NSPAIR(_ZN7S5159C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5159C3[];
extern void _ZN7S5159C3D1Ev();
extern void _ZN7S5159C3D0Ev();
extern void _ZN7S5159C32v4Ev();
extern void _ZN7S5159C32v5Ev();
extern void _ZN7S5159C32v6Ev();
extern void _ZN7S5159C32v7Ev();
extern void _ZN7S5159C32v8Ev();
extern void _ZN7S5159C32v9Ev();
extern void _ZN7S5159C33v10Ev();
extern void _ZN7S5159C33v11Ev();
extern void _ZN7S5159C33v12Ev();
extern void _ZN7S5159C33v13Ev();
extern void _ZN7S5159C33v14Ev();
extern void _ZN7S5159C33v15Ev();
extern void _ZN7S5159C33v16Ev();
extern void _ZN7S5159C33v17Ev();
extern void _ZN7S5159C33v18Ev();
extern void _ZN7S5159C33v19Ev();
extern void _ZN7S5159C33v20Ev();
extern void _ZN7S5159C33v21Ev();
static  VTBL_ENTRY vtc_S5159C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5159C3[0]),
  (VTBL_ENTRY)&_ZN7S5159C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5159C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v21Ev,
};
extern VTBL_ENTRY _ZTI7S5159C3[];
extern  VTBL_ENTRY _ZTV7S5159C3[];
Class_Descriptor cd_S5159C3 = {  "S5159C3", // class name
  0,0,//no base classes
  &(vtc_S5159C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S5159C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5159C3),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5159C2  : S5159C3 {
  ::S3214C23 s5159c2f0;
  ::S3214C18 s5159c2f1;
  ::S3214C12 s5159c2f2;
  ::S3214C6_nt s5159c2f3;
  ::S197C26 s5159c2f4;
  virtual void  v22(); // _ZN7S5159C23v22Ev
  virtual void  v23(); // _ZN7S5159C23v23Ev
  virtual void  v24(); // _ZN7S5159C23v24Ev
  ~S5159C2(); // tgen
  S5159C2(); // tgen
};
//SIG(-1 S5159C2) C1{ BC2{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} v1 v2 v3 FC7{ BC5} FC8{ BC5} FC9{ BC5} FC10{ BC5} FC11{ BC5}}


void  S5159C2 ::v22(){vfunc_called(this, "_ZN7S5159C23v22Ev");}
void  S5159C2 ::v23(){vfunc_called(this, "_ZN7S5159C23v23Ev");}
void  S5159C2 ::v24(){vfunc_called(this, "_ZN7S5159C23v24Ev");}
S5159C2 ::~S5159C2(){ note_dtor("S5159C2", this);} // tgen
S5159C2 ::S5159C2(){ note_ctor("S5159C2", this);} // tgen

static void Test_S5159C2()
{
  extern Class_Descriptor cd_S5159C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,28)];
    init_test(&cd_S5159C2, buf);
    S5159C2 *dp, &lv = *(dp=new (buf) S5159C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,108), "sizeof(S5159C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5159C2)");
    check_base_class_offset(lv, (S5159C3*), 0, "S5159C2");
    check_field_offset(lv, s5159c2f0, ABISELECT(72,48), "S5159C2.s5159c2f0");
    check_field_offset(lv, s5159c2f1, ABISELECT(88,60), "S5159C2.s5159c2f1");
    check_field_offset(lv, s5159c2f2, ABISELECT(104,72), "S5159C2.s5159c2f2");
    check_field_offset(lv, s5159c2f3, ABISELECT(120,84), "S5159C2.s5159c2f3");
    check_field_offset(lv, s5159c2f4, ABISELECT(136,96), "S5159C2.s5159c2f4");
    test_class_info(&lv, &cd_S5159C2);
    dp->~S5159C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5159C2(Test_S5159C2, "S5159C2", ABISELECT(152,108));

#else // __cplusplus

extern void _ZN7S5159C2C1Ev();
extern void _ZN7S5159C2D1Ev();
Name_Map name_map_S5159C2[] = {
  NSPAIR(_ZN7S5159C2C1Ev),
  NSPAIR(_ZN7S5159C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5159C3;
extern VTBL_ENTRY _ZTI7S5159C3[];
extern  VTBL_ENTRY _ZTV7S5159C3[];
static Base_Class bases_S5159C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5159C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5159C2[];
extern void _ZN7S5159C2D1Ev();
extern void _ZN7S5159C2D0Ev();
extern void _ZN7S5159C32v4Ev();
extern void _ZN7S5159C32v5Ev();
extern void _ZN7S5159C32v6Ev();
extern void _ZN7S5159C32v7Ev();
extern void _ZN7S5159C32v8Ev();
extern void _ZN7S5159C32v9Ev();
extern void _ZN7S5159C33v10Ev();
extern void _ZN7S5159C33v11Ev();
extern void _ZN7S5159C33v12Ev();
extern void _ZN7S5159C33v13Ev();
extern void _ZN7S5159C33v14Ev();
extern void _ZN7S5159C33v15Ev();
extern void _ZN7S5159C33v16Ev();
extern void _ZN7S5159C33v17Ev();
extern void _ZN7S5159C33v18Ev();
extern void _ZN7S5159C33v19Ev();
extern void _ZN7S5159C33v20Ev();
extern void _ZN7S5159C33v21Ev();
extern void _ZN7S5159C23v22Ev();
extern void _ZN7S5159C23v23Ev();
extern void _ZN7S5159C23v24Ev();
static  VTBL_ENTRY vtc_S5159C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5159C2[0]),
  (VTBL_ENTRY)&_ZN7S5159C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5159C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5159C23v22Ev,
  (VTBL_ENTRY)&_ZN7S5159C23v23Ev,
  (VTBL_ENTRY)&_ZN7S5159C23v24Ev,
};
extern VTBL_ENTRY _ZTI7S5159C2[];
extern  VTBL_ENTRY _ZTV7S5159C2[];
Class_Descriptor cd_S5159C2 = {  "S5159C2", // class name
  bases_S5159C2, 1,
  &(vtc_S5159C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,108), // object size
  NSPAIRA(_ZTI7S5159C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5159C2),25, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5159C1  : S5159C2 {
  virtual void  v1(); // _ZN7S5159C12v1Ev
  virtual void  v2(); // _ZN7S5159C12v2Ev
  virtual void  v3(); // _ZN7S5159C12v3Ev
  ~S5159C1(); // tgen
  S5159C1(); // tgen
};
//SIG(1 S5159C1) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fp FC4{ m} Fi FC5{ BC6{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC7{ BC6} Fi} v22 v23 v24 FC8{ BC6} FC9{ BC6} FC10{ BC6} FC11{ BC6} FC12{ BC6}} v1 v2 v3}


void  S5159C1 ::v1(){vfunc_called(this, "_ZN7S5159C12v1Ev");}
void  S5159C1 ::v2(){vfunc_called(this, "_ZN7S5159C12v2Ev");}
void  S5159C1 ::v3(){vfunc_called(this, "_ZN7S5159C12v3Ev");}
S5159C1 ::~S5159C1(){ note_dtor("S5159C1", this);} // tgen
S5159C1 ::S5159C1(){ note_ctor("S5159C1", this);} // tgen

static void Test_S5159C1()
{
  extern Class_Descriptor cd_S5159C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,28)];
    init_test(&cd_S5159C1, buf);
    S5159C1 *dp, &lv = *(dp=new (buf) S5159C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,108), "sizeof(S5159C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5159C1)");
    check_base_class_offset(lv, (S5159C3*)(S5159C2*), 0, "S5159C1");
    check_base_class_offset(lv, (S5159C2*), 0, "S5159C1");
    test_class_info(&lv, &cd_S5159C1);
    dp->~S5159C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5159C1(Test_S5159C1, "S5159C1", ABISELECT(152,108));

#else // __cplusplus

extern void _ZN7S5159C1C1Ev();
extern void _ZN7S5159C1D1Ev();
Name_Map name_map_S5159C1[] = {
  NSPAIR(_ZN7S5159C1C1Ev),
  NSPAIR(_ZN7S5159C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5159C3;
extern VTBL_ENTRY _ZTI7S5159C3[];
extern  VTBL_ENTRY _ZTV7S5159C3[];
extern Class_Descriptor cd_S5159C2;
extern VTBL_ENTRY _ZTI7S5159C2[];
extern  VTBL_ENTRY _ZTV7S5159C2[];
static Base_Class bases_S5159C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5159C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5159C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5159C1[];
extern void _ZN7S5159C1D1Ev();
extern void _ZN7S5159C1D0Ev();
extern void _ZN7S5159C32v4Ev();
extern void _ZN7S5159C32v5Ev();
extern void _ZN7S5159C32v6Ev();
extern void _ZN7S5159C32v7Ev();
extern void _ZN7S5159C32v8Ev();
extern void _ZN7S5159C32v9Ev();
extern void _ZN7S5159C33v10Ev();
extern void _ZN7S5159C33v11Ev();
extern void _ZN7S5159C33v12Ev();
extern void _ZN7S5159C33v13Ev();
extern void _ZN7S5159C33v14Ev();
extern void _ZN7S5159C33v15Ev();
extern void _ZN7S5159C33v16Ev();
extern void _ZN7S5159C33v17Ev();
extern void _ZN7S5159C33v18Ev();
extern void _ZN7S5159C33v19Ev();
extern void _ZN7S5159C33v20Ev();
extern void _ZN7S5159C33v21Ev();
extern void _ZN7S5159C23v22Ev();
extern void _ZN7S5159C23v23Ev();
extern void _ZN7S5159C23v24Ev();
extern void _ZN7S5159C12v1Ev();
extern void _ZN7S5159C12v2Ev();
extern void _ZN7S5159C12v3Ev();
static  VTBL_ENTRY vtc_S5159C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5159C1[0]),
  (VTBL_ENTRY)&_ZN7S5159C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5159C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5159C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v13Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v14Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v15Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v16Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v17Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v18Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v19Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v20Ev,
  (VTBL_ENTRY)&_ZN7S5159C33v21Ev,
  (VTBL_ENTRY)&_ZN7S5159C23v22Ev,
  (VTBL_ENTRY)&_ZN7S5159C23v23Ev,
  (VTBL_ENTRY)&_ZN7S5159C23v24Ev,
  (VTBL_ENTRY)&_ZN7S5159C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5159C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5159C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S5159C1[];
extern  VTBL_ENTRY _ZTV7S5159C1[];
Class_Descriptor cd_S5159C1 = {  "S5159C1", // class name
  bases_S5159C1, 2,
  &(vtc_S5159C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,108), // object size
  NSPAIRA(_ZTI7S5159C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5159C1),28, //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  S19988C2  {
  virtual void  v1(); // _ZN8S19988C22v1Ev
  ~S19988C2(); // tgen
  S19988C2(); // tgen
};
//SIG(-1 S19988C2) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S19988C2C1Ev();
extern void _ZN8S19988C2D1Ev();
Name_Map name_map_S19988C2[] = {
  NSPAIR(_ZN8S19988C2C1Ev),
  NSPAIR(_ZN8S19988C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19988C2[];
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY vtc_S19988C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C2[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
Class_Descriptor cd_S19988C2 = {  "S19988C2", // class name
  0,0,//no base classes
  &(vtc_S19988C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19988C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19988C2),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  S19988C6  : S19988C2 , virtual S20997C6 , S4227C37 {
  void *s19988c6f0[10];
  ~S19988C6(); // tgen
  S19988C6(); // tgen
};
//SIG(-1 S19988C6) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S19988C6()
{
  extern Class_Descriptor cd_S19988C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S19988C6, buf);
    S19988C6 *dp, &lv = *(dp=new (buf) S19988C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S19988C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19988C6)");
    check_base_class_offset(lv, (S19988C2*), 0, "S19988C6");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S19988C6");
    check_base_class_offset(lv, (S4227C37*), 0, "S19988C6");
    check_field_offset(lv, s19988c6f0, ABISELECT(8,4), "S19988C6.s19988c6f0");
    test_class_info(&lv, &cd_S19988C6);
    dp->~S19988C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19988C6(Test_S19988C6, "S19988C6", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN8S19988C6C1Ev();
extern void _ZN8S19988C6D1Ev();
Name_Map name_map_S19988C6[] = {
  NSPAIR(_ZN8S19988C6C1Ev),
  NSPAIR(_ZN8S19988C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S19988C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19988C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19988C6[];
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY vtc_S19988C6[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C6[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern VTBL_ENTRY _ZTV8S19988C6[];
static  VTT_ENTRY vtt_S19988C6[] = {
  {&(_ZTV8S19988C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19988C6[];
extern  VTBL_ENTRY _ZTV8S19988C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C6[];
Class_Descriptor cd_S19988C6 = {  "S19988C6", // class name
  bases_S19988C6, 3,
  &(vtc_S19988C6[0]), // expected_vtbl_contents
  &(vtt_S19988C6[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI8S19988C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19988C6),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19988C6),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  S19988C5  : virtual S19988C2 {
  ::S19988C6 s19988c5f0[9];
  ~S19988C5(); // tgen
  S19988C5(); // tgen
};
//SIG(-1 S19988C5) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S19988C5()
{
  extern Class_Descriptor cd_S19988C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S19988C5, buf);
    S19988C5 *dp, &lv = *(dp=new (buf) S19988C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S19988C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19988C5)");
    check_base_class_offset(lv, (S19988C2*), 0, "S19988C5");
    check_field_offset(lv, s19988c5f0, ABISELECT(8,4), "S19988C5.s19988c5f0");
    test_class_info(&lv, &cd_S19988C5);
    dp->~S19988C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19988C5(Test_S19988C5, "S19988C5", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN8S19988C5C1Ev();
extern void _ZN8S19988C5D1Ev();
Name_Map name_map_S19988C5[] = {
  NSPAIR(_ZN8S19988C5C1Ev),
  NSPAIR(_ZN8S19988C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
static Base_Class bases_S19988C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19988C2,    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 _ZTI8S19988C5[];
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY vtc_S19988C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C5[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern VTBL_ENTRY _ZTV8S19988C5[];
static  VTT_ENTRY vtt_S19988C5[] = {
  {&(_ZTV8S19988C5[4]),  4,5},
  {&(_ZTV8S19988C5[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S19988C5[];
extern  VTBL_ENTRY _ZTV8S19988C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C5[];
Class_Descriptor cd_S19988C5 = {  "S19988C5", // class name
  bases_S19988C5, 1,
  &(vtc_S19988C5[0]), // expected_vtbl_contents
  &(vtt_S19988C5[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI8S19988C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19988C5),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19988C5),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  S19988C8  : virtual S20997C6 , virtual S19988C2 , S4227C37 {
  virtual  ~S19988C8(); // _ZN8S19988C8D2Ev
  S19988C8(); // tgen
};
//SIG(-1 S19988C8) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S19988C8()
{
  extern Class_Descriptor cd_S19988C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19988C8, buf);
    S19988C8 *dp, &lv = *(dp=new (buf) S19988C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19988C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19988C8)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S19988C8");
    check_base_class_offset(lv, (S19988C2*), 0, "S19988C8");
    check_base_class_offset(lv, (S4227C37*), 0, "S19988C8");
    test_class_info(&lv, &cd_S19988C8);
    dp->~S19988C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19988C8(Test_S19988C8, "S19988C8", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S19988C8C1Ev();
extern void _ZN8S19988C8D2Ev();
Name_Map name_map_S19988C8[] = {
  NSPAIR(_ZN8S19988C8C1Ev),
  NSPAIR(_ZN8S19988C8D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S19988C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19988C2,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19988C8[];
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C8D1Ev();
extern void _ZN8S19988C8D0Ev();
static  VTBL_ENTRY vtc_S19988C8[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D0Ev,
};
extern VTBL_ENTRY _ZTV8S19988C8[];
static  VTT_ENTRY vtt_S19988C8[] = {
  {&(_ZTV8S19988C8[5]),  5,8},
  {&(_ZTV8S19988C8[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19988C8[];
extern  VTBL_ENTRY _ZTV8S19988C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C8[];
Class_Descriptor cd_S19988C8 = {  "S19988C8", // class name
  bases_S19988C8, 3,
  &(vtc_S19988C8[0]), // expected_vtbl_contents
  &(vtt_S19988C8[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S19988C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19988C8),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19988C8),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  S19988C9  : S19988C8 {
  virtual  ~S19988C9(); // _ZN8S19988C9D2Ev
  S19988C9(); // tgen
};
//SIG(-1 S19988C9) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S19988C9()
{
  extern Class_Descriptor cd_S19988C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19988C9, buf);
    S19988C9 *dp, &lv = *(dp=new (buf) S19988C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19988C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19988C9)");
    check_base_class_offset(lv, (S20997C6*)(S19988C8*), ABISELECT(8,4), "S19988C9");
    check_base_class_offset(lv, (S19988C2*)(S19988C8*), 0, "S19988C9");
    check_base_class_offset(lv, (S4227C37*)(S19988C8*), 0, "S19988C9");
    check_base_class_offset(lv, (S19988C8*), 0, "S19988C9");
    test_class_info(&lv, &cd_S19988C9);
    dp->~S19988C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19988C9(Test_S19988C9, "S19988C9", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S19988C9C1Ev();
extern void _ZN8S19988C9D2Ev();
Name_Map name_map_S19988C9[] = {
  NSPAIR(_ZN8S19988C9C1Ev),
  NSPAIR(_ZN8S19988C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C8;
extern VTBL_ENTRY _ZTI8S19988C8[];
extern  VTBL_ENTRY _ZTV8S19988C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C8[];
static Base_Class bases_S19988C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19988C2,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19988C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19988C9[];
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C9D1Ev();
extern void _ZN8S19988C9D0Ev();
static  VTBL_ENTRY vtc_S19988C9[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C9[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C9D0Ev,
};
extern VTBL_ENTRY _ZTV8S19988C9[];
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C8D1Ev();
extern void _ZN8S19988C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C8__8S19988C9[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D0Ev,
};
static  VTT_ENTRY vtt_S19988C9[] = {
  {&(_ZTV8S19988C9[5]),  5,8},
  {&(_tg__ZTV8S19988C8__8S19988C9[5]),  5,8},
  {&(_tg__ZTV8S19988C8__8S19988C9[5]),  5,8},
  {&(_ZTV8S19988C9[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19988C9[];
extern  VTBL_ENTRY _ZTV8S19988C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C9[];
Class_Descriptor cd_S19988C9 = {  "S19988C9", // class name
  bases_S19988C9, 4,
  &(vtc_S19988C9[0]), // expected_vtbl_contents
  &(vtt_S19988C9[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S19988C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19988C9),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19988C9),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  S19988C3  : virtual S4227C37 , S19988C5 , S19988C8 , S19988C9 {
  ~S19988C3(); // tgen
  S19988C3(); // tgen
};
//SIG(-1 S19988C3) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S19988C3()
{
  extern Class_Descriptor cd_S19988C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S19988C3, buf);
    S19988C3 *dp, &lv = *(dp=new (buf) S19988C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S19988C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19988C3)");
    /*is_ambiguous_... S19988C3::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S19988C3");
    check_base_class_offset(lv, (S19988C2*)(S19988C5*), 0, "S19988C3");
    /*is_ambiguous_... S19988C3::S19988C8 */ AMB_check_base_class_offset(lv, (S19988C2*)(S19988C8*), 0, "S19988C3");
    check_base_class_offset(lv, (S19988C2*)(S19988C8*)(S19988C9*), 0, "S19988C3");
    check_base_class_offset(lv, (S19988C5*), 0, "S19988C3");
    /*is_ambiguous_... S19988C3::S19988C8 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19988C8*), ABISELECT(1176,768), "S19988C3");
    check_base_class_offset(lv, (S20997C6*)(S19988C8*)(S19988C9*), ABISELECT(1176,768), "S19988C3");
    /*is_ambiguous_... S19988C3::S19988C8 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19988C8*), ABISELECT(1160,760), "S19988C3");
    /*is_ambiguous_... S19988C3::S19988C8 */ AMB_check_base_class_offset(lv, (S19988C8*), ABISELECT(1160,760), "S19988C3");
    check_base_class_offset(lv, (S4227C37*)(S19988C8*)(S19988C9*), ABISELECT(1168,764), "S19988C3");
    check_base_class_offset(lv, (S19988C8*)(S19988C9*), ABISELECT(1168,764), "S19988C3");
    check_base_class_offset(lv, (S19988C9*), ABISELECT(1168,764), "S19988C3");
    test_class_info(&lv, &cd_S19988C3);
    dp->~S19988C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19988C3(Test_S19988C3, "S19988C3", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN8S19988C3C1Ev();
extern void _ZN8S19988C3D1Ev();
Name_Map name_map_S19988C3[] = {
  NSPAIR(_ZN8S19988C3C1Ev),
  NSPAIR(_ZN8S19988C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S19988C5;
extern VTBL_ENTRY _ZTI8S19988C5[];
extern  VTBL_ENTRY _ZTV8S19988C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C8;
extern VTBL_ENTRY _ZTI8S19988C8[];
extern  VTBL_ENTRY _ZTV8S19988C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C8;
extern VTBL_ENTRY _ZTI8S19988C8[];
extern  VTBL_ENTRY _ZTV8S19988C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C8[];
extern Class_Descriptor cd_S19988C9;
extern VTBL_ENTRY _ZTI8S19988C9[];
extern  VTBL_ENTRY _ZTV8S19988C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C9[];
static Base_Class bases_S19988C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19988C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19988C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19988C8,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19988C8,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19988C9,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19988C3[];
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C3D1Ev();
extern void _ZN8S19988C3D0Ev();
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZThn1160_N8S19988C3D1Ev,_ZThn760_N8S19988C3D1Ev)();
extern void ABISELECT(_ZThn1160_N8S19988C3D0Ev,_ZThn760_N8S19988C3D0Ev)();
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZThn1168_N8S19988C3D1Ev,_ZThn764_N8S19988C3D1Ev)();
extern void ABISELECT(_ZThn1168_N8S19988C3D0Ev,_ZThn764_N8S19988C3D0Ev)();
static  VTBL_ENTRY vtc_S19988C3[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C3[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C3D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S19988C3[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19988C3D1Ev,_ZThn760_N8S19988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19988C3D0Ev,_ZThn760_N8S19988C3D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S19988C3[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19988C3D1Ev,_ZThn764_N8S19988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19988C3D0Ev,_ZThn764_N8S19988C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19988C3[];
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C5__8S19988C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C5[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C8D1Ev();
extern void _ZN8S19988C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C8__8S19988C3[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D0Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__8S19988C8__8S19988C3[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C9D1Ev();
extern void _ZN8S19988C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C9__8S19988C3[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C9[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C9D0Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C8D1Ev();
extern void _ZN8S19988C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C88S19988C9__A1__8S19988C3[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D0Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__8S19988C88S19988C9__A1__8S19988C3[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__8S19988C9__8S19988C3[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S19988C9[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
static  VTT_ENTRY vtt_S19988C3[] = {
  {&(_ZTV8S19988C3[6]),  6,25},
  {&(_tg__ZTV8S19988C5__8S19988C3[4]),  4,5},
  {&(_tg__ZTV8S19988C5__8S19988C3[4]),  4,5},
  {&(_tg__ZTV8S19988C8__8S19988C3[5]),  5,8},
  {&(_tg__ZTV8S19988C2__8S19988C8__8S19988C3[3]),  3,4},
  {&(_tg__ZTV8S19988C9__8S19988C3[5]),  5,8},
  {&(_tg__ZTV8S19988C88S19988C9__A1__8S19988C3[5]),  5,8},
  {&(_tg__ZTV8S19988C2__8S19988C88S19988C9__A1__8S19988C3[3]),  3,4},
  {&(_tg__ZTV8S19988C2__8S19988C9__8S19988C3[3]),  3,4},
  {&(_ZTV8S19988C3[6]),  6,25},
  {&(_ZTV8S19988C3[14]),  14,25},
  {&(_ZTV8S19988C3[22]),  22,25},
};
extern VTBL_ENTRY _ZTI8S19988C3[];
extern  VTBL_ENTRY _ZTV8S19988C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C3[];
Class_Descriptor cd_S19988C3 = {  "S19988C3", // class name
  bases_S19988C3, 9,
  &(vtc_S19988C3[0]), // expected_vtbl_contents
  &(vtt_S19988C3[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI8S19988C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19988C3),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19988C3),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  S19988C11  : virtual S19988C6 {
  ~S19988C11(); // tgen
  S19988C11(); // tgen
};
//SIG(-1 S19988C11) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]}}


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

static void Test_S19988C11()
{
  extern Class_Descriptor cd_S19988C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S19988C11, buf);
    S19988C11 *dp, &lv = *(dp=new (buf) S19988C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S19988C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19988C11)");
    check_base_class_offset(lv, (S19988C2*)(S19988C6*), ABISELECT(8,4), "S19988C11");
    check_base_class_offset(lv, (S20997C6*)(S19988C6*), ABISELECT(96,48), "S19988C11");
    check_base_class_offset(lv, (S4227C37*)(S19988C6*), ABISELECT(8,4), "S19988C11");
    check_base_class_offset(lv, (S19988C6*), ABISELECT(8,4), "S19988C11");
    test_class_info(&lv, &cd_S19988C11);
    dp->~S19988C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19988C11(Test_S19988C11, "S19988C11", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN9S19988C11C1Ev();
extern void _ZN9S19988C11D1Ev();
Name_Map name_map_S19988C11[] = {
  NSPAIR(_ZN9S19988C11C1Ev),
  NSPAIR(_ZN9S19988C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C6;
extern VTBL_ENTRY _ZTI8S19988C6[];
extern  VTBL_ENTRY _ZTV8S19988C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C6[];
static Base_Class bases_S19988C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19988C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19988C6,    ABISELECT(8,4), //bcp->offset
    4, //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 _ZTI9S19988C11[];
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY vtc_S19988C11[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C11[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19988C11[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern VTBL_ENTRY _ZTV9S19988C11[];
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C6__9S19988C11[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C6[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
static  VTT_ENTRY vtt_S19988C11[] = {
  {&(_ZTV9S19988C11[4]),  4,9},
  {&(_ZTV9S19988C11[8]),  8,9},
  {&(_tg__ZTV8S19988C6__9S19988C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19988C11[];
extern  VTBL_ENTRY _ZTV9S19988C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C11[];
Class_Descriptor cd_S19988C11 = {  "S19988C11", // class name
  bases_S19988C11, 4,
  &(vtc_S19988C11[0]), // expected_vtbl_contents
  &(vtt_S19988C11[0]), // expected_vtt_contents
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI9S19988C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19988C11),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19988C11),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19988C14  : virtual S4227C37 , virtual S19988C8 {
  virtual void  v2(); // _ZN9S19988C142v2Ev
  ~S19988C14(); // tgen
  S19988C14(); // tgen
};
//SIG(-1 S19988C14) C1{ VBC2{ m} VBC3{ VBC4{ m FL[5]} VBC5{ v2} BC2 vd} v1}


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

static void Test_S19988C14()
{
  extern Class_Descriptor cd_S19988C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19988C14, buf);
    S19988C14 *dp, &lv = *(dp=new (buf) S19988C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19988C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19988C14)");
    /*is_ambiguous_... S19988C14::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), ABISELECT(8,4), "S19988C14");
    check_base_class_offset(lv, (S20997C6*)(S19988C8*), ABISELECT(8,4), "S19988C14");
    check_base_class_offset(lv, (S19988C2*)(S19988C8*), 0, "S19988C14");
    check_base_class_offset(lv, (S4227C37*)(S19988C8*), 0, "S19988C14");
    check_base_class_offset(lv, (S19988C8*), 0, "S19988C14");
    test_class_info(&lv, &cd_S19988C14);
    dp->~S19988C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19988C14(Test_S19988C14, "S19988C14", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S19988C14C1Ev();
extern void _ZN9S19988C14D1Ev();
Name_Map name_map_S19988C14[] = {
  NSPAIR(_ZN9S19988C14C1Ev),
  NSPAIR(_ZN9S19988C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C8;
extern VTBL_ENTRY _ZTI8S19988C8[];
extern  VTBL_ENTRY _ZTV8S19988C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C8[];
static Base_Class bases_S19988C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19988C2,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19988C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19988C14[];
extern void _ZN8S19988C22v1Ev();
extern void _ZN9S19988C14D1Ev();
extern void _ZN9S19988C14D0Ev();
extern void _ZN9S19988C142v2Ev();
static  VTBL_ENTRY vtc_S19988C14[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C14[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN9S19988C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19988C14D0Ev,
  (VTBL_ENTRY)&_ZN9S19988C142v2Ev,
};
extern VTBL_ENTRY _ZTV9S19988C14[];
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C8D1Ev();
extern void _ZN8S19988C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C8__9S19988C14[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D0Ev,
};
static  VTT_ENTRY vtt_S19988C14[] = {
  {&(_ZTV9S19988C14[8]),  8,12},
  {&(_ZTV9S19988C14[8]),  8,12},
  {&(_ZTV9S19988C14[8]),  8,12},
  {&(_tg__ZTV8S19988C8__9S19988C14[5]),  5,8},
  {&(_tg__ZTV8S19988C8__9S19988C14[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19988C14[];
extern  VTBL_ENTRY _ZTV9S19988C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C14[];
Class_Descriptor cd_S19988C14 = {  "S19988C14", // class name
  bases_S19988C14, 5,
  &(vtc_S19988C14[0]), // expected_vtbl_contents
  &(vtt_S19988C14[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S19988C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19988C14),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19988C14),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19988C13  : virtual S19988C2 , virtual S19988C8 , virtual S10258C6_nt , virtual S19988C14 , virtual S19988C5 {
  virtual  ~S19988C13(); // _ZN9S19988C13D2Ev
  S19988C13(); // tgen
};
//SIG(-1 S19988C13) C1{ VBC2{ v1} VBC3{ VBC4{ m FL[5]} VBC2 BC5{ m} vd} VBC6{ m FL[4]} VBC7{ VBC5 VBC3 v2} VBC8{ VBC2 FC9{ BC2 VBC4 BC5 Fp[10]}[9]} vd}


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

static void Test_S19988C13()
{
  extern Class_Descriptor cd_S19988C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(156,210)];
    init_test(&cd_S19988C13, buf);
    S19988C13 *dp, &lv = *(dp=new (buf) S19988C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1240,836), "sizeof(S19988C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19988C13)");
    check_base_class_offset(lv, (S19988C2*), 0, "S19988C13");
    check_base_class_offset(lv, (S19988C2*)(S19988C8*), 0, "S19988C13");
    check_base_class_offset(lv, (S19988C2*)(S19988C5*), 0, "S19988C13");
    check_base_class_offset(lv, (S20997C6*)(S19988C8*), ABISELECT(8,4), "S19988C13");
    check_base_class_offset(lv, (S4227C37*)(S19988C8*), 0, "S19988C13");
    check_base_class_offset(lv, (S19988C8*), 0, "S19988C13");
    check_base_class_offset(lv, (S19988C8*)(S19988C14*), 0, "S19988C13");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(48,44), "S19988C13");
    /*is_ambiguous_... S19988C14::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19988C14*), ABISELECT(80,76), "S19988C13");
    check_base_class_offset(lv, (S19988C14*), 0, "S19988C13");
    check_base_class_offset(lv, (S19988C5*), ABISELECT(80,76), "S19988C13");
    test_class_info(&lv, &cd_S19988C13);
    dp->~S19988C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19988C13(Test_S19988C13, "S19988C13", ABISELECT(1240,836));

#else // __cplusplus

extern void _ZN9S19988C13C1Ev();
extern void _ZN9S19988C13D2Ev();
Name_Map name_map_S19988C13[] = {
  NSPAIR(_ZN9S19988C13C1Ev),
  NSPAIR(_ZN9S19988C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C8;
extern VTBL_ENTRY _ZTI8S19988C8[];
extern  VTBL_ENTRY _ZTV8S19988C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C8[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C14;
extern VTBL_ENTRY _ZTI9S19988C14[];
extern  VTBL_ENTRY _ZTV9S19988C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C14[];
extern Class_Descriptor cd_S19988C5;
extern VTBL_ENTRY _ZTI8S19988C5[];
extern  VTBL_ENTRY _ZTV8S19988C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C5[];
static Base_Class bases_S19988C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19988C2,    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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19988C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(80,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19988C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19988C5,    ABISELECT(80,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19988C13[];
extern void _ZN8S19988C22v1Ev();
extern void _ZN9S19988C13D1Ev();
extern void _ZN9S19988C13D0Ev();
extern void _ZN9S19988C142v2Ev();
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY vtc_S19988C13[] = {
  ABISELECT(80,76),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C13[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN9S19988C13D1Ev,
  (VTBL_ENTRY)&_ZN9S19988C13D0Ev,
  (VTBL_ENTRY)&_ZN9S19988C142v2Ev,
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  (VTBL_ENTRY)&(_ZTI9S19988C13[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern VTBL_ENTRY _ZTV9S19988C13[];
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C8D1Ev();
extern void _ZN8S19988C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C8__9S19988C13[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D0Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19988C14D1Ev,_ZTv0_n24_N9S19988C14D1Ev)();
extern void _ZN9S19988C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19988C14D0Ev,_ZTv0_n24_N9S19988C14D0Ev)();
extern void _ZN9S19988C14D0Ev() __attribute__((weak));
extern void _ZN9S19988C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19988C14__9S19988C13[] = {
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C14[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C14D1Ev,_ZTv0_n24_N9S19988C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C14D0Ev,_ZTv0_n24_N9S19988C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19988C142v2Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C5__9S19988C13[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C5[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__8S19988C5__9S19988C13[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI8S19988C5[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
static  VTT_ENTRY vtt_S19988C13[] = {
  {&(_ZTV9S19988C13[12]),  12,21},
  {&(_ZTV9S19988C13[12]),  12,21},
  {&(_ZTV9S19988C13[12]),  12,21},
  {&(_ZTV9S19988C13[12]),  12,21},
  {&(_ZTV9S19988C13[20]),  20,21},
  {&(_tg__ZTV8S19988C8__9S19988C13[5]),  5,8},
  {&(_tg__ZTV8S19988C8__9S19988C13[5]),  5,8},
  {&(_tg__ZTV9S19988C14__9S19988C13[8]),  8,12},
  {&(_tg__ZTV9S19988C14__9S19988C13[8]),  8,12},
  {&(_tg__ZTV9S19988C14__9S19988C13[8]),  8,12},
  {&(_tg__ZTV8S19988C5__9S19988C13[4]),  4,5},
  {&(_tg__ZTV8S19988C2__8S19988C5__9S19988C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19988C13[];
extern  VTBL_ENTRY _ZTV9S19988C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C13[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C14D0Ev,_ZTv0_n24_N9S19988C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S19988C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C14D1Ev,_ZTv0_n24_N9S19988C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S19988C14D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19988C13 = {  "S19988C13", // class name
  bases_S19988C13, 8,
  &(vtc_S19988C13[0]), // expected_vtbl_contents
  &(vtt_S19988C13[0]), // expected_vtt_contents
  ABISELECT(1240,836), // object size
  NSPAIRA(_ZTI9S19988C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19988C13),21, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19988C13),12, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19988C16  : S20997C6 , S19988C2 {
  ~S19988C16(); // tgen
  S19988C16(); // tgen
};
//SIG(-1 S19988C16) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S19988C16()
{
  extern Class_Descriptor cd_S19988C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19988C16, buf);
    S19988C16 *dp, &lv = *(dp=new (buf) S19988C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19988C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19988C16)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S19988C16");
    check_base_class_offset(lv, (S19988C2*), 0, "S19988C16");
    test_class_info(&lv, &cd_S19988C16);
    dp->~S19988C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19988C16(Test_S19988C16, "S19988C16", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S19988C16C1Ev();
extern void _ZN9S19988C16D1Ev();
Name_Map name_map_S19988C16[] = {
  NSPAIR(_ZN9S19988C16C1Ev),
  NSPAIR(_ZN9S19988C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
static Base_Class bases_S19988C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19988C2,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19988C16[];
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY vtc_S19988C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C16[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern VTBL_ENTRY _ZTI9S19988C16[];
extern  VTBL_ENTRY _ZTV9S19988C16[];
Class_Descriptor cd_S19988C16 = {  "S19988C16", // class name
  bases_S19988C16, 2,
  &(vtc_S19988C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S19988C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19988C16),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19988C15  : S19988C16 , S19988C6 {
  ~S19988C15(); // tgen
  S19988C15(); // tgen
};
//SIG(-1 S19988C15) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} BC5{ BC4 VBC3 BC6{ m} Fp[10]}}


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

static void Test_S19988C15()
{
  extern Class_Descriptor cd_S19988C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S19988C15, buf);
    S19988C15 *dp, &lv = *(dp=new (buf) S19988C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S19988C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19988C15)");
    check_base_class_offset(lv, (S20997C6*)(S19988C16*), ABISELECT(8,4), "S19988C15");
    check_base_class_offset(lv, (S19988C2*)(S19988C16*), 0, "S19988C15");
    check_base_class_offset(lv, (S19988C16*), 0, "S19988C15");
    check_base_class_offset(lv, (S19988C2*)(S19988C6*), ABISELECT(48,44), "S19988C15");
    check_base_class_offset(lv, (S20997C6*)(S19988C6*), ABISELECT(136,88), "S19988C15");
    check_base_class_offset(lv, (S4227C37*)(S19988C6*), ABISELECT(48,44), "S19988C15");
    check_base_class_offset(lv, (S19988C6*), ABISELECT(48,44), "S19988C15");
    test_class_info(&lv, &cd_S19988C15);
    dp->~S19988C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19988C15(Test_S19988C15, "S19988C15", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN9S19988C15C1Ev();
extern void _ZN9S19988C15D1Ev();
Name_Map name_map_S19988C15[] = {
  NSPAIR(_ZN9S19988C15C1Ev),
  NSPAIR(_ZN9S19988C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S19988C16;
extern VTBL_ENTRY _ZTI9S19988C16[];
extern  VTBL_ENTRY _ZTV9S19988C16[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C6;
extern VTBL_ENTRY _ZTI8S19988C6[];
extern  VTBL_ENTRY _ZTV8S19988C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C6[];
static Base_Class bases_S19988C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19988C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19988C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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_S19988C2,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    6, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19988C6,    ABISELECT(48,44), //bcp->offset
    4, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19988C15[];
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY vtc_S19988C15[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C15[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  ABISELECT(88,44),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S19988C15[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern VTBL_ENTRY _ZTV9S19988C15[];
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C6__9S19988C15[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C6[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
static  VTT_ENTRY vtt_S19988C15[] = {
  {&(_ZTV9S19988C15[3]),  3,8},
  {&(_tg__ZTV8S19988C6__9S19988C15[3]),  3,4},
  {&(_ZTV9S19988C15[7]),  7,8},
};
extern VTBL_ENTRY _ZTI9S19988C15[];
extern  VTBL_ENTRY _ZTV9S19988C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C15[];
Class_Descriptor cd_S19988C15 = {  "S19988C15", // class name
  bases_S19988C15, 7,
  &(vtc_S19988C15[0]), // expected_vtbl_contents
  &(vtt_S19988C15[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI9S19988C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19988C15),8, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19988C15),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  S19988C10  : virtual S19988C11 , S19988C2 , virtual S10258C6_nt , virtual S19988C13 , S19988C15 {
  ~S19988C10(); // tgen
  S19988C10(); // tgen
};
//SIG(-1 S19988C10) C1{ VBC2{ VBC3{ BC4{ v1} VBC5{ m FL[5]} BC6{ m} Fp[10]}} BC4 VBC7{ m FL[4]} VBC8{ VBC4 VBC9{ VBC5 VBC4 BC6 vd} VBC7 VBC10{ VBC6 VBC9 v2} VBC11{ VBC4 FC3[9]} vd} BC12{ BC13{ BC5 BC4} BC3}}


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

static void Test_S19988C10()
{
  extern Class_Descriptor cd_S19988C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(186,245)];
    init_test(&cd_S19988C10, buf);
    S19988C10 *dp, &lv = *(dp=new (buf) S19988C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1480,976), "sizeof(S19988C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19988C10)");
    /*is_ambiguous_... S19988C10::S19988C6 */ AMB_check_base_class_offset(lv, (S19988C2*)(S19988C6*), ABISELECT(152,96), "S19988C10");
    /*is_ambiguous_... S19988C10::S19988C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19988C6*), ABISELECT(240,140), "S19988C10");
    check_base_class_offset(lv, (S20997C6*)(S19988C8*), ABISELECT(240,140), "S19988C10");
    check_base_class_offset(lv, (S20997C6*)(S19988C6*)(S19988C15*), ABISELECT(240,140), "S19988C10");
    /*is_ambiguous_... S19988C10::S19988C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19988C6*), ABISELECT(152,96), "S19988C10");
    check_base_class_offset(lv, (S19988C6*)(S19988C11*), ABISELECT(152,96), "S19988C10");
    check_base_class_offset(lv, (S19988C11*), ABISELECT(144,92), "S19988C10");
    /*is_ambiguous_... S19988C10::S19988C2 */ AMB_check_base_class_offset(lv, (S19988C2*), 0, "S19988C10");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(280,180), "S19988C10");
    check_base_class_offset(lv, (S10258C6_nt*)(S19988C13*), ABISELECT(280,180), "S19988C10");
    check_base_class_offset(lv, (S19988C2*)(S19988C13*), ABISELECT(312,212), "S19988C10");
    check_base_class_offset(lv, (S19988C2*)(S19988C8*), ABISELECT(312,212), "S19988C10");
    check_base_class_offset(lv, (S19988C2*)(S19988C5*), ABISELECT(312,212), "S19988C10");
    check_base_class_offset(lv, (S4227C37*)(S19988C8*), ABISELECT(312,212), "S19988C10");
    check_base_class_offset(lv, (S19988C8*)(S19988C13*), ABISELECT(312,212), "S19988C10");
    check_base_class_offset(lv, (S19988C8*)(S19988C14*), ABISELECT(312,212), "S19988C10");
    /*is_ambiguous_... S19988C14::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19988C14*), 0, "S19988C10");
    check_base_class_offset(lv, (S19988C14*)(S19988C13*), ABISELECT(312,212), "S19988C10");
    check_base_class_offset(lv, (S19988C5*)(S19988C13*), ABISELECT(320,216), "S19988C10");
    check_base_class_offset(lv, (S19988C13*), ABISELECT(312,212), "S19988C10");
    check_base_class_offset(lv, (S20997C6*)(S19988C16*)(S19988C15*), ABISELECT(16,8), "S19988C10");
    check_base_class_offset(lv, (S19988C2*)(S19988C16*)(S19988C15*), ABISELECT(8,4), "S19988C10");
    check_base_class_offset(lv, (S19988C16*)(S19988C15*), ABISELECT(8,4), "S19988C10");
    check_base_class_offset(lv, (S19988C2*)(S19988C6*)(S19988C15*), ABISELECT(56,48), "S19988C10");
    check_base_class_offset(lv, (S4227C37*)(S19988C6*)(S19988C15*), ABISELECT(56,48), "S19988C10");
    check_base_class_offset(lv, (S19988C6*)(S19988C15*), ABISELECT(56,48), "S19988C10");
    check_base_class_offset(lv, (S19988C15*), ABISELECT(8,4), "S19988C10");
    test_class_info(&lv, &cd_S19988C10);
    dp->~S19988C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19988C10(Test_S19988C10, "S19988C10", ABISELECT(1480,976));

#else // __cplusplus

extern void _ZN9S19988C10C1Ev();
extern void _ZN9S19988C10D1Ev();
Name_Map name_map_S19988C10[] = {
  NSPAIR(_ZN9S19988C10C1Ev),
  NSPAIR(_ZN9S19988C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C6;
extern VTBL_ENTRY _ZTI8S19988C6[];
extern  VTBL_ENTRY _ZTV8S19988C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C6[];
extern Class_Descriptor cd_S19988C11;
extern VTBL_ENTRY _ZTI9S19988C11[];
extern  VTBL_ENTRY _ZTV9S19988C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C11[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C8;
extern VTBL_ENTRY _ZTI8S19988C8[];
extern  VTBL_ENTRY _ZTV8S19988C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C14;
extern VTBL_ENTRY _ZTI9S19988C14[];
extern  VTBL_ENTRY _ZTV9S19988C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C14[];
extern Class_Descriptor cd_S19988C5;
extern VTBL_ENTRY _ZTI8S19988C5[];
extern  VTBL_ENTRY _ZTV8S19988C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C5[];
extern Class_Descriptor cd_S19988C13;
extern VTBL_ENTRY _ZTI9S19988C13[];
extern  VTBL_ENTRY _ZTV9S19988C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C13[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S19988C16;
extern VTBL_ENTRY _ZTI9S19988C16[];
extern  VTBL_ENTRY _ZTV9S19988C16[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C6;
extern VTBL_ENTRY _ZTI8S19988C6[];
extern  VTBL_ENTRY _ZTV8S19988C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C6[];
extern Class_Descriptor cd_S19988C15;
extern VTBL_ENTRY _ZTI9S19988C15[];
extern  VTBL_ENTRY _ZTV9S19988C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C15[];
static Base_Class bases_S19988C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19988C2,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19988C6,    ABISELECT(152,96), //bcp->offset
    27, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19988C11,    ABISELECT(144,92), //bcp->offset
    23, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19988C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10258C6_nt,    ABISELECT(280,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19988C2,    ABISELECT(312,212), //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
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(312,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
    9, //immediately_derived
  0, 0},
  {&cd_S19988C8,    ABISELECT(312,212), //bcp->offset
    -1, //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
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19988C14,    ABISELECT(312,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19988C5,    ABISELECT(320,216), //bcp->offset
    48, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19988C13,    ABISELECT(312,212), //bcp->offset
    32, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    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
    16, //immediately_derived
  0, 0},
  {&cd_S19988C2,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S19988C16,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19988C2,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19988C6,    ABISELECT(56,48), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19988C15,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //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 _ZTI9S19988C10[];
extern void _ZN8S19988C22v1Ev();
extern void _ZN9S19988C10D1Ev();
extern void _ZN9S19988C10D0Ev();
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19988C10D1Ev,_ZTv0_n24_N9S19988C10D1Ev)();
extern void ABISELECT(_ZThn312_N9S19988C10D1Ev,_ZThn212_N9S19988C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19988C10D0Ev,_ZTv0_n24_N9S19988C10D0Ev)();
extern void ABISELECT(_ZThn312_N9S19988C10D0Ev,_ZThn212_N9S19988C10D0Ev)() __attribute__((weak));
extern void _ZN9S19988C142v2Ev();
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY vtc_S19988C10[] = {
  ABISELECT(320,216),
  0,
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(312,212),
  ABISELECT(280,180),
  ABISELECT(240,140),
  ABISELECT(152,96),
  ABISELECT(144,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN9S19988C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19988C10D0Ev,
  ABISELECT(232,136),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  ABISELECT(184,92),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  ABISELECT(96,48),
  ABISELECT(8,4),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-312,-212),
  ABISELECT(-312,-212),
  0,
  -72,
  0,
  ABISELECT(-312,-212),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C10D1Ev,_ZTv0_n24_N9S19988C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C10D0Ev,_ZTv0_n24_N9S19988C10D0Ev),
  (VTBL_ENTRY)&_ZN9S19988C142v2Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-320,-216),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern VTBL_ENTRY _ZTV9S19988C10[];
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19988C15__9S19988C10[] = {
  ABISELECT(232,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C15[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C69S19988C15__A1__9S19988C10[] = {
  ABISELECT(184,92),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C6[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C6__9S19988C15__9S19988C10[] = {
  ABISELECT(184,92),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S19988C15[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19988C11__9S19988C10[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C11[0]),
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C6__9S19988C11__9S19988C10[] = {
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19988C11[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C6__9S19988C10[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C6[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19988C13D1Ev,_ZTv0_n24_N9S19988C13D1Ev)();
extern void _ZN9S19988C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19988C13D0Ev,_ZTv0_n24_N9S19988C13D0Ev)();
extern void _ZN9S19988C13D0Ev() __attribute__((weak));
extern void _ZN9S19988C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19988C13__9S19988C10[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-312,-212),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C13[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C13D1Ev,_ZTv0_n24_N9S19988C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C13D0Ev,_ZTv0_n24_N9S19988C13D0Ev),
  (VTBL_ENTRY)&_ZN9S19988C142v2Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C5__9S19988C13__9S19988C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19988C13[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C8D1Ev();
extern void _ZN8S19988C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C8__9S19988C10[] = {
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D0Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19988C14D1Ev,_ZTv0_n24_N9S19988C14D1Ev)();
extern void _ZN9S19988C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19988C14D0Ev,_ZTv0_n24_N9S19988C14D0Ev)();
extern void _ZN9S19988C14D0Ev() __attribute__((weak));
extern void _ZN9S19988C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19988C14__9S19988C10[] = {
  0,
  ABISELECT(-312,-212),
  0,
  0,
  -72,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C14[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C14D1Ev,_ZTv0_n24_N9S19988C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C14D0Ev,_ZTv0_n24_N9S19988C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19988C142v2Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C5__9S19988C10[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C5[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__8S19988C5__9S19988C10[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19988C5[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
static  VTT_ENTRY vtt_S19988C10[] = {
  {&(_ZTV9S19988C10[12]),  12,53},
  {&(_tg__ZTV9S19988C15__9S19988C10[3]),  3,4},
  {&(_tg__ZTV8S19988C69S19988C15__A1__9S19988C10[3]),  3,4},
  {&(_tg__ZTV8S19988C6__9S19988C15__9S19988C10[3]),  3,4},
  {&(_ZTV9S19988C10[27]),  27,53},
  {&(_ZTV9S19988C10[31]),  31,53},
  {&(_ZTV9S19988C10[44]),  44,53},
  {&(_ZTV9S19988C10[44]),  44,53},
  {&(_ZTV9S19988C10[44]),  44,53},
  {&(_ZTV9S19988C10[44]),  44,53},
  {&(_ZTV9S19988C10[52]),  52,53},
  {&(_ZTV9S19988C10[18]),  18,53},
  {&(_ZTV9S19988C10[22]),  22,53},
  {&(_tg__ZTV9S19988C11__9S19988C10[4]),  4,4},
  {&(_tg__ZTV8S19988C6__9S19988C11__9S19988C10[4]),  4,5},
  {&(_tg__ZTV8S19988C6__9S19988C10[3]),  3,4},
  {&(_tg__ZTV9S19988C13__9S19988C10[12]),  12,16},
  {&(_tg__ZTV9S19988C13__9S19988C10[12]),  12,16},
  {&(_tg__ZTV9S19988C13__9S19988C10[12]),  12,16},
  {&(_tg__ZTV9S19988C13__9S19988C10[12]),  12,16},
  {&(_tg__ZTV8S19988C5__9S19988C13__9S19988C10[4]),  4,5},
  {&(_tg__ZTV8S19988C8__9S19988C10[5]),  5,8},
  {&(_tg__ZTV8S19988C8__9S19988C10[5]),  5,8},
  {&(_tg__ZTV9S19988C14__9S19988C10[8]),  8,12},
  {&(_tg__ZTV9S19988C14__9S19988C10[8]),  8,12},
  {&(_tg__ZTV9S19988C14__9S19988C10[8]),  8,12},
  {&(_tg__ZTV8S19988C5__9S19988C10[4]),  4,5},
  {&(_tg__ZTV8S19988C2__8S19988C5__9S19988C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S19988C10[];
extern  VTBL_ENTRY _ZTV9S19988C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C10[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C14D0Ev,_ZTv0_n24_N9S19988C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S19988C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C14D1Ev,_ZTv0_n24_N9S19988C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S19988C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C13D0Ev,_ZTv0_n24_N9S19988C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S19988C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C13D1Ev,_ZTv0_n24_N9S19988C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S19988C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C10D0Ev,_ZTv0_n24_N9S19988C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19988C10D0Ev,_ZThn212_N9S19988C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C10D1Ev,_ZTv0_n24_N9S19988C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19988C10D1Ev,_ZThn212_N9S19988C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19988C10 = {  "S19988C10", // class name
  bases_S19988C10, 21,
  &(vtc_S19988C10[0]), // expected_vtbl_contents
  &(vtt_S19988C10[0]), // expected_vtt_contents
  ABISELECT(1480,976), // object size
  NSPAIRA(_ZTI9S19988C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19988C10),53, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19988C10),28, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19988C1  : virtual S19988C2 , virtual S19988C3 , S4227C37 , virtual S19988C10 , virtual S4227C27 {
  short s19988c1f0[6];
  ~S19988C1(); // tgen
  S19988C1(); // tgen
};
//SIG(1 S19988C1) C1{ VBC2{ v1} VBC3{ VBC4{ m} BC5{ VBC2 FC6{ BC2 VBC7{ m FL[5]} BC4 Fp[10]}[9]} BC8{ VBC7 VBC2 BC4 vd} BC9{ BC8 vd}} BC4 VBC10{ VBC11{ VBC6} BC2 VBC12{ m FL[4]} VBC13{ VBC2 VBC8 VBC12 VBC14{ VBC4 VBC8 v2} VBC5 vd} BC15{ BC16{ BC7 BC2} BC6}} VBC17{ m} Fs[6]}


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

static void Test_S19988C1()
{
  extern Class_Descriptor cd_S19988C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(335,440)];
    init_test(&cd_S19988C1, buf);
    S19988C1 *dp, &lv = *(dp=new (buf) S19988C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2672,1756), "sizeof(S19988C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19988C1)");
    /*is_ambiguous_... S19988C1::S19988C2 */ AMB_check_base_class_offset(lv, (S19988C2*), ABISELECT(24,16), "S19988C1");
    check_base_class_offset(lv, (S19988C2*)(S19988C5*)(S19988C3*), ABISELECT(24,16), "S19988C1");
    /*is_ambiguous_... S19988C3::S19988C8 */ AMB_check_base_class_offset(lv, (S19988C2*)(S19988C8*)(S19988C3*), ABISELECT(24,16), "S19988C1");
    check_base_class_offset(lv, (S19988C2*)(S19988C8*)(S19988C9*)(S19988C3*), ABISELECT(24,16), "S19988C1");
    check_base_class_offset(lv, (S19988C2*)(S19988C13*), ABISELECT(24,16), "S19988C1");
    /*is_ambiguous_... S19988C1::S19988C8 */ AMB_check_base_class_offset(lv, (S19988C2*)(S19988C8*), ABISELECT(24,16), "S19988C1");
    /*is_ambiguous_... S19988C1::S19988C5 */ AMB_check_base_class_offset(lv, (S19988C2*)(S19988C5*), ABISELECT(24,16), "S19988C1");
    /*is_ambiguous_... S19988C3::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19988C3*), ABISELECT(1200,784), "S19988C1");
    /*is_ambiguous_... S19988C14::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19988C14*), ABISELECT(1200,784), "S19988C1");
    check_base_class_offset(lv, (S19988C5*)(S19988C3*), ABISELECT(24,16), "S19988C1");
    /*is_ambiguous_... S19988C3::S19988C8 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19988C8*)(S19988C3*), ABISELECT(1200,784), "S19988C1");
    check_base_class_offset(lv, (S20997C6*)(S19988C8*)(S19988C9*)(S19988C3*), ABISELECT(1200,784), "S19988C1");
    /*is_ambiguous_... S19988C1::S19988C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19988C6*), ABISELECT(1200,784), "S19988C1");
    /*is_ambiguous_... S19988C1::S19988C8 */ AMB_check_base_class_offset(lv, (S20997C6*)(S19988C8*), ABISELECT(1200,784), "S19988C1");
    check_base_class_offset(lv, (S20997C6*)(S19988C6*)(S19988C15*)(S19988C10*), ABISELECT(1200,784), "S19988C1");
    /*is_ambiguous_... S19988C3::S19988C8 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19988C8*)(S19988C3*), ABISELECT(1184,776), "S19988C1");
    /*is_ambiguous_... S19988C3::S19988C8 */ AMB_check_base_class_offset(lv, (S19988C8*)(S19988C3*), ABISELECT(1184,776), "S19988C1");
    check_base_class_offset(lv, (S4227C37*)(S19988C8*)(S19988C9*)(S19988C3*), ABISELECT(1192,780), "S19988C1");
    check_base_class_offset(lv, (S19988C8*)(S19988C9*)(S19988C3*), ABISELECT(1192,780), "S19988C1");
    check_base_class_offset(lv, (S19988C9*)(S19988C3*), ABISELECT(1192,780), "S19988C1");
    check_base_class_offset(lv, (S19988C3*), ABISELECT(24,16), "S19988C1");
    /*is_ambiguous_... S19988C1::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S19988C1");
    /*is_ambiguous_... S19988C1::S19988C6 */ AMB_check_base_class_offset(lv, (S19988C2*)(S19988C6*), ABISELECT(1384,916), "S19988C1");
    /*is_ambiguous_... S19988C1::S19988C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19988C6*), ABISELECT(1384,916), "S19988C1");
    check_base_class_offset(lv, (S19988C6*)(S19988C11*), ABISELECT(1384,916), "S19988C1");
    check_base_class_offset(lv, (S19988C11*)(S19988C10*), 0, "S19988C1");
    /*is_ambiguous_... S19988C10::S19988C2 */ AMB_check_base_class_offset(lv, (S19988C2*)(S19988C10*), ABISELECT(1240,824), "S19988C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S19988C10*), ABISELECT(1472,960), "S19988C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S19988C13*), ABISELECT(1472,960), "S19988C1");
    /*is_ambiguous_... S19988C1::S19988C8 */ AMB_check_base_class_offset(lv, (S4227C37*)(S19988C8*), ABISELECT(1504,992), "S19988C1");
    check_base_class_offset(lv, (S19988C8*)(S19988C13*), ABISELECT(1504,992), "S19988C1");
    check_base_class_offset(lv, (S19988C8*)(S19988C14*), ABISELECT(1504,992), "S19988C1");
    check_base_class_offset(lv, (S19988C14*)(S19988C13*), ABISELECT(1504,992), "S19988C1");
    check_base_class_offset(lv, (S19988C5*)(S19988C13*), ABISELECT(1512,996), "S19988C1");
    check_base_class_offset(lv, (S19988C13*)(S19988C10*), ABISELECT(1504,992), "S19988C1");
    check_base_class_offset(lv, (S20997C6*)(S19988C16*)(S19988C15*)(S19988C10*), ABISELECT(1256,832), "S19988C1");
    check_base_class_offset(lv, (S19988C2*)(S19988C16*)(S19988C15*)(S19988C10*), ABISELECT(1248,828), "S19988C1");
    check_base_class_offset(lv, (S19988C16*)(S19988C15*)(S19988C10*), ABISELECT(1248,828), "S19988C1");
    check_base_class_offset(lv, (S19988C2*)(S19988C6*)(S19988C15*)(S19988C10*), ABISELECT(1296,872), "S19988C1");
    check_base_class_offset(lv, (S4227C37*)(S19988C6*)(S19988C15*)(S19988C10*), ABISELECT(1296,872), "S19988C1");
    check_base_class_offset(lv, (S19988C6*)(S19988C15*)(S19988C10*), ABISELECT(1296,872), "S19988C1");
    check_base_class_offset(lv, (S19988C15*)(S19988C10*), ABISELECT(1248,828), "S19988C1");
    check_base_class_offset(lv, (S19988C10*), ABISELECT(1240,824), "S19988C1");
    check_base_class_offset(lv, (S4227C27*), 0, "S19988C1");
    check_field_offset(lv, s19988c1f0, ABISELECT(8,4), "S19988C1.s19988c1f0");
    test_class_info(&lv, &cd_S19988C1);
    dp->~S19988C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19988C1(Test_S19988C1, "S19988C1", ABISELECT(2672,1756));

#else // __cplusplus

extern void _ZN8S19988C1C1Ev();
extern void _ZN8S19988C1D1Ev();
Name_Map name_map_S19988C1[] = {
  NSPAIR(_ZN8S19988C1C1Ev),
  NSPAIR(_ZN8S19988C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C5;
extern VTBL_ENTRY _ZTI8S19988C5[];
extern  VTBL_ENTRY _ZTV8S19988C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C8;
extern VTBL_ENTRY _ZTI8S19988C8[];
extern  VTBL_ENTRY _ZTV8S19988C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C8;
extern VTBL_ENTRY _ZTI8S19988C8[];
extern  VTBL_ENTRY _ZTV8S19988C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C8[];
extern Class_Descriptor cd_S19988C9;
extern VTBL_ENTRY _ZTI8S19988C9[];
extern  VTBL_ENTRY _ZTV8S19988C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C9[];
extern Class_Descriptor cd_S19988C3;
extern VTBL_ENTRY _ZTI8S19988C3[];
extern  VTBL_ENTRY _ZTV8S19988C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C3[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C6;
extern VTBL_ENTRY _ZTI8S19988C6[];
extern  VTBL_ENTRY _ZTV8S19988C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C6[];
extern Class_Descriptor cd_S19988C11;
extern VTBL_ENTRY _ZTI9S19988C11[];
extern  VTBL_ENTRY _ZTV9S19988C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C11[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C8;
extern VTBL_ENTRY _ZTI8S19988C8[];
extern  VTBL_ENTRY _ZTV8S19988C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C8[];
extern Class_Descriptor cd_S19988C14;
extern VTBL_ENTRY _ZTI9S19988C14[];
extern  VTBL_ENTRY _ZTV9S19988C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C14[];
extern Class_Descriptor cd_S19988C5;
extern VTBL_ENTRY _ZTI8S19988C5[];
extern  VTBL_ENTRY _ZTV8S19988C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C5[];
extern Class_Descriptor cd_S19988C13;
extern VTBL_ENTRY _ZTI9S19988C13[];
extern  VTBL_ENTRY _ZTV9S19988C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C13[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S19988C16;
extern VTBL_ENTRY _ZTI9S19988C16[];
extern  VTBL_ENTRY _ZTV9S19988C16[];
extern Class_Descriptor cd_S19988C2;
extern VTBL_ENTRY _ZTI8S19988C2[];
extern  VTBL_ENTRY _ZTV8S19988C2[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19988C6;
extern VTBL_ENTRY _ZTI8S19988C6[];
extern  VTBL_ENTRY _ZTV8S19988C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C6[];
extern Class_Descriptor cd_S19988C15;
extern VTBL_ENTRY _ZTI9S19988C15[];
extern  VTBL_ENTRY _ZTV9S19988C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C15[];
extern Class_Descriptor cd_S19988C10;
extern VTBL_ENTRY _ZTI9S19988C10[];
extern  VTBL_ENTRY _ZTV9S19988C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19988C10[];
extern Class_Descriptor cd_S4227C27;
extern VTBL_ENTRY _ZTI8S4227C27[];
static Base_Class bases_S19988C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19988C2,    ABISELECT(24,16), //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_S4227C37,    ABISELECT(1200,784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S19988C5,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(1200,784), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1184,776), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19988C8,    ABISELECT(1184,776), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1192,780), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19988C8,    ABISELECT(1192,780), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19988C9,    ABISELECT(1192,780), //bcp->offset
    35, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19988C3,    ABISELECT(24,16), //bcp->offset
    17, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19988C2,    ABISELECT(1384,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1384,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19988C6,    ABISELECT(1384,916), //bcp->offset
    68, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19988C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19988C2,    ABISELECT(1240,824), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S10258C6_nt,    ABISELECT(1472,960), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1504,992), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19988C8,    ABISELECT(1504,992), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S19988C14,    ABISELECT(1504,992), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19988C5,    ABISELECT(1512,996), //bcp->offset
    89, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19988C13,    ABISELECT(1504,992), //bcp->offset
    73, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1256,832), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19988C2,    ABISELECT(1248,828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19988C16,    ABISELECT(1248,828), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19988C2,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19988C6,    ABISELECT(1296,872), //bcp->offset
    64, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S19988C15,    ABISELECT(1248,828), //bcp->offset
    60, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19988C10,    ABISELECT(1240,824), //bcp->offset
    43, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C27,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19988C1[];
extern void _ZN8S19988C1D1Ev();
extern void _ZN8S19988C1D0Ev();
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19988C1D1Ev,_ZTv0_n28_N8S19988C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S19988C1D1Ev,_ZThn16_N8S19988C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19988C1D0Ev,_ZTv0_n28_N8S19988C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S19988C1D0Ev,_ZThn16_N8S19988C1D0Ev)() __attribute__((weak));
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S19988C1D1Ev,_ZTvn760_n28_N8S19988C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S19988C1D0Ev,_ZTvn760_n28_N8S19988C1D0Ev)();
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S19988C1D1Ev,_ZTvn764_n28_N8S19988C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S19988C1D0Ev,_ZTvn764_n28_N8S19988C1D0Ev)();
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZTv0_n112_N8S19988C1D1Ev,_ZTv0_n56_N8S19988C1D1Ev)();
extern void ABISELECT(_ZThn1240_N8S19988C1D1Ev,_ZThn824_N8S19988C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S19988C1D0Ev,_ZTv0_n56_N8S19988C1D0Ev)();
extern void ABISELECT(_ZThn1240_N8S19988C1D0Ev,_ZThn824_N8S19988C1D0Ev)() __attribute__((weak));
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19988C1D1Ev,_ZTv0_n24_N8S19988C1D1Ev)();
extern void ABISELECT(_ZThn1504_N8S19988C1D1Ev,_ZThn992_N8S19988C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19988C1D0Ev,_ZTv0_n24_N8S19988C1D0Ev)();
extern void ABISELECT(_ZThn1504_N8S19988C1D0Ev,_ZThn992_N8S19988C1D0Ev)() __attribute__((weak));
extern void _ZN9S19988C142v2Ev();
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY vtc_S19988C1[] = {
  0,
  ABISELECT(1512,996),
  ABISELECT(1504,992),
  ABISELECT(1504,992),
  ABISELECT(1504,992),
  ABISELECT(1472,960),
  0,
  ABISELECT(1240,824),
  ABISELECT(1200,784),
  ABISELECT(24,16),
  ABISELECT(24,16),
  ABISELECT(1200,784),
  ABISELECT(1384,916),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C1[0]),
  (VTBL_ENTRY)&_ZN8S19988C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C1D0Ev,
  ABISELECT(-24,-16),
  ABISELECT(1176,768),
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19988C1[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19988C1D1Ev,_ZTv0_n28_N8S19988C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19988C1D0Ev,_ZTv0_n28_N8S19988C1D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1184,-776),
  (VTBL_ENTRY)&(_ZTI8S19988C1[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19988C1D1Ev,_ZTvn760_n28_N8S19988C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S19988C1D0Ev,_ZTvn760_n28_N8S19988C1D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1192,-780),
  (VTBL_ENTRY)&(_ZTI8S19988C1[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19988C1D1Ev,_ZTvn764_n28_N8S19988C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S19988C1D0Ev,_ZTvn764_n28_N8S19988C1D0Ev),
  ABISELECT(-1240,-824),
  0,
  ABISELECT(272,172),
  -40,
  ABISELECT(264,168),
  ABISELECT(264,168),
  ABISELECT(-1216,-808),
  ABISELECT(264,168),
  ABISELECT(232,136),
  -40,
  ABISELECT(144,92),
  ABISELECT(-1240,-824),
  ABISELECT(-1240,-824),
  (VTBL_ENTRY)&(_ZTI8S19988C1[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19988C1D1Ev,_ZTv0_n56_N8S19988C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S19988C1D0Ev,_ZTv0_n56_N8S19988C1D0Ev),
  ABISELECT(-48,-44),
  ABISELECT(-1248,-828),
  (VTBL_ENTRY)&(_ZTI8S19988C1[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  ABISELECT(-96,-88),
  ABISELECT(-1296,-872),
  (VTBL_ENTRY)&(_ZTI8S19988C1[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  0,
  ABISELECT(-184,-132),
  ABISELECT(-1384,-916),
  (VTBL_ENTRY)&(_ZTI8S19988C1[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-304,-208),
  ABISELECT(-1504,-992),
  ABISELECT(-1480,-976),
  ABISELECT(-304,-208),
  ABISELECT(-1480,-976),
  ABISELECT(-1504,-992),
  (VTBL_ENTRY)&(_ZTI8S19988C1[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19988C1D1Ev,_ZTv0_n24_N8S19988C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19988C1D0Ev,_ZTv0_n24_N8S19988C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19988C142v2Ev,
  ABISELECT(-1488,-980),
  ABISELECT(-1488,-980),
  ABISELECT(-1512,-996),
  (VTBL_ENTRY)&(_ZTI8S19988C1[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern VTBL_ENTRY _ZTV8S19988C1[];
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C3D1Ev();
extern void _ZN8S19988C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C3__8S19988C1[] = {
  ABISELECT(1176,768),
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C3[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C3D0Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C58S19988C3__8S19988C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C5[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C8D1Ev();
extern void _ZN8S19988C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C88S19988C3__8S19988C1[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D0Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__8S19988C88S19988C3__8S19988C1[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C9D1Ev();
extern void _ZN8S19988C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C98S19988C3__8S19988C1[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C9[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C9D0Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C8D1Ev();
extern void _ZN8S19988C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C88S19988C98S19988C3__A1__8S19988C1[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D0Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__8S19988C88S19988C98S19988C3__A1__8S19988C1[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__8S19988C98S19988C3__8S19988C1[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S19988C9[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZThn1160_N8S19988C3D1Ev,_ZThn760_N8S19988C3D1Ev)();
extern void ABISELECT(_ZThn1160_N8S19988C3D0Ev,_ZThn760_N8S19988C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19988C8__8S19988C3__8S19988C1[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S19988C3[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19988C3D1Ev,_ZThn760_N8S19988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S19988C3D0Ev,_ZThn760_N8S19988C3D0Ev),
};
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZThn1168_N8S19988C3D1Ev,_ZThn764_N8S19988C3D1Ev)();
extern void ABISELECT(_ZThn1168_N8S19988C3D0Ev,_ZThn764_N8S19988C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19988C9__8S19988C3__8S19988C1[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S19988C3[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19988C3D1Ev,_ZThn764_N8S19988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S19988C3D0Ev,_ZThn764_N8S19988C3D0Ev),
};
extern void _ZN8S19988C22v1Ev();
extern void _ZN9S19988C10D1Ev();
extern void _ZN9S19988C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19988C10__8S19988C1[] = {
  ABISELECT(272,172),
  -40,
  ABISELECT(264,168),
  ABISELECT(264,168),
  ABISELECT(-1216,-808),
  ABISELECT(264,168),
  ABISELECT(232,136),
  -40,
  ABISELECT(144,92),
  ABISELECT(-1240,-824),
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN9S19988C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19988C10D0Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19988C159S19988C10__8S19988C1[] = {
  ABISELECT(-48,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C15[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C69S19988C159S19988C10__A1__8S19988C1[] = {
  ABISELECT(-96,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C6[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C6__9S19988C159S19988C10__8S19988C1[] = {
  ABISELECT(-96,-88),
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI9S19988C15[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19988C11__9S19988C10__8S19988C1[] = {
  ABISELECT(1200,784),
  ABISELECT(1384,916),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C6__9S19988C10__8S19988C1[] = {
  0,
  ABISELECT(-184,-132),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19988C10D1Ev,_ZTv0_n24_N9S19988C10D1Ev)();
extern void ABISELECT(_ZThn264_N9S19988C10D1Ev,_ZThn168_N9S19988C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19988C10D0Ev,_ZTv0_n24_N9S19988C10D0Ev)();
extern void ABISELECT(_ZThn264_N9S19988C10D0Ev,_ZThn168_N9S19988C10D0Ev)() __attribute__((weak));
extern void _ZN9S19988C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19988C13__9S19988C10__8S19988C1[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-304,-208),
  ABISELECT(-264,-168),
  ABISELECT(-1480,-976),
  ABISELECT(-304,-208),
  ABISELECT(-1480,-976),
  ABISELECT(-264,-168),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C10D1Ev,_ZTv0_n24_N9S19988C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C10D0Ev,_ZTv0_n24_N9S19988C10D0Ev),
  (VTBL_ENTRY)&_ZN9S19988C142v2Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__A2__9S19988C10__8S19988C1[] = {
  0,
  ABISELECT(1216,808),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C5__9S19988C10__8S19988C1[] = {
  ABISELECT(-1488,-980),
  ABISELECT(-1488,-980),
  ABISELECT(-272,-172),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19988C15__9S19988C10__8S19988C1[] = {
  ABISELECT(-48,-44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C69S19988C15__A1__9S19988C10__8S19988C1[] = {
  ABISELECT(-96,-88),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S19988C10[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19988C11__8S19988C1[] = {
  ABISELECT(1200,784),
  ABISELECT(1384,916),
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C11[0]),
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C6__9S19988C11__8S19988C1[] = {
  0,
  ABISELECT(-184,-132),
  ABISELECT(-1384,-916),
  (VTBL_ENTRY)&(_ZTI9S19988C11[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C6__8S19988C1[] = {
  ABISELECT(-184,-132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C6[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19988C13D1Ev,_ZTv0_n24_N9S19988C13D1Ev)();
extern void _ZN9S19988C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19988C13D0Ev,_ZTv0_n24_N9S19988C13D0Ev)();
extern void _ZN9S19988C13D0Ev() __attribute__((weak));
extern void _ZN9S19988C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19988C13__8S19988C1[] = {
  ABISELECT(8,4),
  0,
  -32,
  0,
  0,
  ABISELECT(-304,-208),
  0,
  ABISELECT(-1480,-976),
  ABISELECT(-304,-208),
  ABISELECT(-1480,-976),
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C13[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C13D1Ev,_ZTv0_n24_N9S19988C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C13D0Ev,_ZTv0_n24_N9S19988C13D0Ev),
  (VTBL_ENTRY)&_ZN9S19988C142v2Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__9S19988C13__8S19988C1[] = {
  0,
  ABISELECT(1480,976),
  (VTBL_ENTRY)&(_ZTI9S19988C13[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C5__9S19988C13__8S19988C1[] = {
  ABISELECT(-1488,-980),
  ABISELECT(-1488,-980),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19988C13[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void _ZN8S19988C8D1Ev();
extern void _ZN8S19988C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C8__A2__8S19988C1[] = {
  ABISELECT(-1480,-976),
  ABISELECT(-304,-208),
  ABISELECT(-1480,-976),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19988C8D0Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__8S19988C8__A2__8S19988C1[] = {
  0,
  ABISELECT(1480,976),
  (VTBL_ENTRY)&(_ZTI8S19988C8[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S19988C14D1Ev,_ZTv0_n24_N9S19988C14D1Ev)();
extern void _ZN9S19988C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S19988C14D0Ev,_ZTv0_n24_N9S19988C14D0Ev)();
extern void _ZN9S19988C14D0Ev() __attribute__((weak));
extern void _ZN9S19988C142v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19988C14__8S19988C1[] = {
  0,
  ABISELECT(-304,-208),
  0,
  ABISELECT(-1480,-976),
  ABISELECT(-304,-208),
  ABISELECT(-1480,-976),
  0,
  (VTBL_ENTRY)&(_ZTI9S19988C14[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C14D1Ev,_ZTv0_n24_N9S19988C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S19988C14D0Ev,_ZTv0_n24_N9S19988C14D0Ev),
  (VTBL_ENTRY)&_ZN9S19988C142v2Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__9S19988C14__8S19988C1[] = {
  0,
  ABISELECT(1480,976),
  (VTBL_ENTRY)&(_ZTI9S19988C14[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C5__A1__8S19988C1[] = {
  ABISELECT(-1488,-980),
  ABISELECT(-1488,-980),
  0,
  (VTBL_ENTRY)&(_ZTI8S19988C5[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
extern void _ZN8S19988C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19988C2__8S19988C5__A1__8S19988C1[] = {
  0,
  ABISELECT(1488,980),
  (VTBL_ENTRY)&(_ZTI8S19988C5[0]),
  (VTBL_ENTRY)&_ZN8S19988C22v1Ev,
};
static  VTT_ENTRY vtt_S19988C1[] = {
  {&(_ZTV8S19988C1[15]),  15,94},
  {&(_ZTV8S19988C1[24]),  24,94},
  {&(_ZTV8S19988C1[24]),  24,94},
  {&(_ZTV8S19988C1[32]),  32,94},
  {&(_ZTV8S19988C1[40]),  40,94},
  {&(_ZTV8S19988C1[57]),  57,94},
  {&(_ZTV8S19988C1[15]),  15,94},
  {&(_ZTV8S19988C1[72]),  72,94},
  {&(_ZTV8S19988C1[85]),  85,94},
  {&(_ZTV8S19988C1[85]),  85,94},
  {&(_ZTV8S19988C1[85]),  85,94},
  {&(_ZTV8S19988C1[93]),  93,94},
  {&(_ZTV8S19988C1[63]),  63,94},
  {&(_ZTV8S19988C1[67]),  67,94},
  {&(_tg__ZTV8S19988C3__8S19988C1[6]),  6,9},
  {&(_tg__ZTV8S19988C58S19988C3__8S19988C1[4]),  4,5},
  {&(_tg__ZTV8S19988C58S19988C3__8S19988C1[4]),  4,5},
  {&(_tg__ZTV8S19988C88S19988C3__8S19988C1[5]),  5,8},
  {&(_tg__ZTV8S19988C2__8S19988C88S19988C3__8S19988C1[3]),  3,4},
  {&(_tg__ZTV8S19988C98S19988C3__8S19988C1[5]),  5,8},
  {&(_tg__ZTV8S19988C88S19988C98S19988C3__A1__8S19988C1[5]),  5,8},
  {&(_tg__ZTV8S19988C2__8S19988C88S19988C98S19988C3__A1__8S19988C1[3]),  3,4},
  {&(_tg__ZTV8S19988C2__8S19988C98S19988C3__8S19988C1[3]),  3,4},
  {&(_tg__ZTV8S19988C3__8S19988C1[6]),  6,9},
  {&(_tg__ZTV8S19988C8__8S19988C3__8S19988C1[5]),  5,8},
  {&(_tg__ZTV8S19988C9__8S19988C3__8S19988C1[5]),  5,8},
  {&(_tg__ZTV9S19988C10__8S19988C1[12]),  12,15},
  {&(_tg__ZTV9S19988C159S19988C10__8S19988C1[3]),  3,4},
  {&(_tg__ZTV8S19988C69S19988C159S19988C10__A1__8S19988C1[3]),  3,4},
  {&(_tg__ZTV8S19988C6__9S19988C159S19988C10__8S19988C1[3]),  3,4},
  {&(_tg__ZTV9S19988C11__9S19988C10__8S19988C1[4]),  4,4},
  {&(_tg__ZTV8S19988C6__9S19988C10__8S19988C1[4]),  4,5},
  {&(_tg__ZTV9S19988C13__9S19988C10__8S19988C1[12]),  12,16},
  {&(_tg__ZTV8S19988C2__A2__9S19988C10__8S19988C1[3]),  3,4},
  {&(_tg__ZTV9S19988C13__9S19988C10__8S19988C1[12]),  12,16},
  {&(_tg__ZTV9S19988C13__9S19988C10__8S19988C1[12]),  12,16},
  {&(_tg__ZTV8S19988C5__9S19988C10__8S19988C1[4]),  4,5},
  {&(_tg__ZTV9S19988C15__9S19988C10__8S19988C1[3]),  3,4},
  {&(_tg__ZTV8S19988C69S19988C15__A1__9S19988C10__8S19988C1[3]),  3,4},
  {&(_tg__ZTV9S19988C11__8S19988C1[4]),  4,4},
  {&(_tg__ZTV8S19988C6__9S19988C11__8S19988C1[4]),  4,5},
  {&(_tg__ZTV8S19988C6__8S19988C1[3]),  3,4},
  {&(_tg__ZTV9S19988C13__8S19988C1[12]),  12,16},
  {&(_tg__ZTV8S19988C2__9S19988C13__8S19988C1[3]),  3,4},
  {&(_tg__ZTV9S19988C13__8S19988C1[12]),  12,16},
  {&(_tg__ZTV9S19988C13__8S19988C1[12]),  12,16},
  {&(_tg__ZTV8S19988C5__9S19988C13__8S19988C1[4]),  4,5},
  {&(_tg__ZTV8S19988C8__A2__8S19988C1[5]),  5,8},
  {&(_tg__ZTV8S19988C2__8S19988C8__A2__8S19988C1[3]),  3,4},
  {&(_tg__ZTV9S19988C14__8S19988C1[8]),  8,12},
  {&(_tg__ZTV9S19988C14__8S19988C1[8]),  8,12},
  {&(_tg__ZTV8S19988C2__9S19988C14__8S19988C1[3]),  3,4},
  {&(_tg__ZTV8S19988C5__A1__8S19988C1[4]),  4,5},
  {&(_tg__ZTV8S19988C2__8S19988C5__A1__8S19988C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19988C1[];
extern  VTBL_ENTRY _ZTV8S19988C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19988C1[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C14D0Ev,_ZTv0_n24_N9S19988C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S19988C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C14D1Ev,_ZTv0_n24_N9S19988C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S19988C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C13D0Ev,_ZTv0_n24_N9S19988C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S19988C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C13D1Ev,_ZTv0_n24_N9S19988C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S19988C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C10D0Ev,_ZTv0_n24_N9S19988C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19988C10D0Ev,_ZThn168_N9S19988C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S19988C10D1Ev,_ZTv0_n24_N9S19988C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19988C10D1Ev,_ZThn168_N9S19988C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19988C1D0Ev,_ZTv0_n24_N8S19988C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1504_N8S19988C1D0Ev,_ZThn992_N8S19988C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19988C1D1Ev,_ZTv0_n24_N8S19988C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1504_N8S19988C1D1Ev,_ZThn992_N8S19988C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19988C1D0Ev,_ZTv0_n56_N8S19988C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1240_N8S19988C1D0Ev,_ZThn824_N8S19988C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S19988C1D1Ev,_ZTv0_n56_N8S19988C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1240_N8S19988C1D1Ev,_ZThn824_N8S19988C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19988C1D0Ev,_ZTv0_n28_N8S19988C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19988C1D0Ev,_ZThn16_N8S19988C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19988C1D1Ev,_ZTv0_n28_N8S19988C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19988C1D1Ev,_ZThn16_N8S19988C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19988C1 = {  "S19988C1", // class name
  bases_S19988C1, 31,
  &(vtc_S19988C1[0]), // expected_vtbl_contents
  &(vtt_S19988C1[0]), // expected_vtt_contents
  ABISELECT(2672,1756), // object size
  NSPAIRA(_ZTI8S19988C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19988C1),94, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19988C1),54, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3155C3  {
  virtual void  v3(); // _ZN7S3155C32v3Ev
  virtual void  v4(); // _ZN7S3155C32v4Ev
  virtual void  v5(); // _ZN7S3155C32v5Ev
  virtual void  v6(); // _ZN7S3155C32v6Ev
  ~S3155C3(); // tgen
  S3155C3(); // tgen
};
//SIG(-1 S3155C3) C1{ v1 v2 v3 v4}


void  S3155C3 ::v3(){vfunc_called(this, "_ZN7S3155C32v3Ev");}
void  S3155C3 ::v4(){vfunc_called(this, "_ZN7S3155C32v4Ev");}
void  S3155C3 ::v5(){vfunc_called(this, "_ZN7S3155C32v5Ev");}
void  S3155C3 ::v6(){vfunc_called(this, "_ZN7S3155C32v6Ev");}
S3155C3 ::~S3155C3(){ note_dtor("S3155C3", this);} // tgen
S3155C3 ::S3155C3(){ note_ctor("S3155C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S3155C3C1Ev();
extern void _ZN7S3155C3D1Ev();
Name_Map name_map_S3155C3[] = {
  NSPAIR(_ZN7S3155C3C1Ev),
  NSPAIR(_ZN7S3155C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3155C3[];
extern void _ZN7S3155C32v3Ev();
extern void _ZN7S3155C32v4Ev();
extern void _ZN7S3155C32v5Ev();
extern void _ZN7S3155C32v6Ev();
static  VTBL_ENTRY vtc_S3155C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3155C3[0]),
  (VTBL_ENTRY)&_ZN7S3155C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3155C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3155C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3155C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S3155C3[];
extern  VTBL_ENTRY _ZTV7S3155C3[];
Class_Descriptor cd_S3155C3 = {  "S3155C3", // class name
  0,0,//no base classes
  &(vtc_S3155C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3155C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3155C3),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  S3155C4  {
  virtual void  v7(); // _ZN7S3155C42v7Ev
  ~S3155C4(); // tgen
  S3155C4(); // tgen
};
//SIG(-1 S3155C4) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S3155C4C1Ev();
extern void _ZN7S3155C4D1Ev();
Name_Map name_map_S3155C4[] = {
  NSPAIR(_ZN7S3155C4C1Ev),
  NSPAIR(_ZN7S3155C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3155C4[];
extern void _ZN7S3155C42v7Ev();
static  VTBL_ENTRY vtc_S3155C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3155C4[0]),
  (VTBL_ENTRY)&_ZN7S3155C42v7Ev,
};
extern VTBL_ENTRY _ZTI7S3155C4[];
extern  VTBL_ENTRY _ZTV7S3155C4[];
Class_Descriptor cd_S3155C4 = {  "S3155C4", // class name
  0,0,//no base classes
  &(vtc_S3155C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S3155C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3155C4),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  S3155C19_nt  : S9141C27_nt {
};
//SIG(-1 S3155C19_nt) C1{ BC2{ m FC3{ BC4{ m Fp Fi[2]}} Fp Fi}}



//skip512 S3155C19_nt

#else // __cplusplus

extern Class_Descriptor cd_S9141C27_nt;
static Base_Class bases_S3155C19_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9141C27_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S3155C5  {
  void *s3155c5f0[2];
  ::S9141C26 s3155c5f1;
  ::S9141C20_nt s3155c5f2;
  ::S675C20_nt s3155c5f3;
  ::S23C16_nt s3155c5f4;
  ::S3155C19_nt s3155c5f5;
};
//SIG(-1 S3155C5) C1{ Fp[2] FC2{ BC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp Fi}} FC6{ BC7{ m FC8{ BC5} Fp Fi}} FC9{ BC7} FC10{ BC7} FC11{ BC3}}



static void Test_S3155C5()
{
  {
    init_simple_test("S3155C5");
    S3155C5 lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S3155C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3155C5)");
    check_field_offset(lv, s3155c5f0, 0, "S3155C5.s3155c5f0");
    check_field_offset(lv, s3155c5f1, ABISELECT(16,8), "S3155C5.s3155c5f1");
    check_field_offset(lv, s3155c5f2, ABISELECT(48,28), "S3155C5.s3155c5f2");
    check_field_offset(lv, s3155c5f3, ABISELECT(80,48), "S3155C5.s3155c5f3");
    check_field_offset(lv, s3155c5f4, ABISELECT(112,68), "S3155C5.s3155c5f4");
    check_field_offset(lv, s3155c5f5, ABISELECT(144,88), "S3155C5.s3155c5f5");
  }
}
static Arrange_To_Call_Me vS3155C5(Test_S3155C5, "S3155C5", ABISELECT(176,108));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3155C2  : S3155C3 , S3155C4 {
  void *s3155c2f0;
  int s3155c2f1;
  ::S3155C5 s3155c2f2;
  void *s3155c2f3;
  virtual void  v8(); // _ZN7S3155C22v8Ev
  virtual void  v9(); // _ZN7S3155C22v9Ev
  virtual void  v10(); // _ZN7S3155C23v10Ev
  virtual void  v11(); // _ZN7S3155C23v11Ev
  virtual void  v12(); // _ZN7S3155C23v12Ev
  ~S3155C2(); // tgen
  S3155C2(); // tgen
};
//SIG(-1 S3155C2) C1{ BC2{ v6 v7 v8 v9} BC3{ v10} v1 v2 v3 v4 v5 Fp Fi FC4{ Fp[2] FC5{ BC6{ m FC7{ BC8{ m Fp Fi[2]}} Fp Fi}} FC9{ BC10{ m FC11{ BC8} Fp Fi}} FC12{ BC10} FC13{ BC10} FC14{ BC6}} Fp}


void  S3155C2 ::v8(){vfunc_called(this, "_ZN7S3155C22v8Ev");}
void  S3155C2 ::v9(){vfunc_called(this, "_ZN7S3155C22v9Ev");}
void  S3155C2 ::v10(){vfunc_called(this, "_ZN7S3155C23v10Ev");}
void  S3155C2 ::v11(){vfunc_called(this, "_ZN7S3155C23v11Ev");}
void  S3155C2 ::v12(){vfunc_called(this, "_ZN7S3155C23v12Ev");}
S3155C2 ::~S3155C2(){ note_dtor("S3155C2", this);} // tgen
S3155C2 ::S3155C2(){ note_ctor("S3155C2", this);} // tgen

static void Test_S3155C2()
{
  extern Class_Descriptor cd_S3155C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,33)];
    init_test(&cd_S3155C2, buf);
    S3155C2 *dp, &lv = *(dp=new (buf) S3155C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,128), "sizeof(S3155C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3155C2)");
    check_base_class_offset(lv, (S3155C3*), 0, "S3155C2");
    check_base_class_offset(lv, (S3155C4*), ABISELECT(8,4), "S3155C2");
    check_field_offset(lv, s3155c2f0, ABISELECT(16,8), "S3155C2.s3155c2f0");
    check_field_offset(lv, s3155c2f1, ABISELECT(24,12), "S3155C2.s3155c2f1");
    check_field_offset(lv, s3155c2f2, ABISELECT(32,16), "S3155C2.s3155c2f2");
    check_field_offset(lv, s3155c2f3, ABISELECT(208,124), "S3155C2.s3155c2f3");
    test_class_info(&lv, &cd_S3155C2);
    dp->~S3155C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3155C2(Test_S3155C2, "S3155C2", ABISELECT(216,128));

#else // __cplusplus

extern void _ZN7S3155C2C1Ev();
extern void _ZN7S3155C2D1Ev();
Name_Map name_map_S3155C2[] = {
  NSPAIR(_ZN7S3155C2C1Ev),
  NSPAIR(_ZN7S3155C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3155C3;
extern VTBL_ENTRY _ZTI7S3155C3[];
extern  VTBL_ENTRY _ZTV7S3155C3[];
extern Class_Descriptor cd_S3155C4;
extern VTBL_ENTRY _ZTI7S3155C4[];
extern  VTBL_ENTRY _ZTV7S3155C4[];
static Base_Class bases_S3155C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3155C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3155C4,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3155C2[];
extern void _ZN7S3155C32v3Ev();
extern void _ZN7S3155C32v4Ev();
extern void _ZN7S3155C32v5Ev();
extern void _ZN7S3155C32v6Ev();
extern void _ZN7S3155C22v8Ev();
extern void _ZN7S3155C22v9Ev();
extern void _ZN7S3155C23v10Ev();
extern void _ZN7S3155C23v11Ev();
extern void _ZN7S3155C23v12Ev();
extern void _ZN7S3155C42v7Ev();
static  VTBL_ENTRY vtc_S3155C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3155C2[0]),
  (VTBL_ENTRY)&_ZN7S3155C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3155C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3155C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3155C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3155C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3155C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3155C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3155C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3155C23v12Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3155C2[0]),
  (VTBL_ENTRY)&_ZN7S3155C42v7Ev,
};
extern VTBL_ENTRY _ZTI7S3155C2[];
extern  VTBL_ENTRY _ZTV7S3155C2[];
Class_Descriptor cd_S3155C2 = {  "S3155C2", // class name
  bases_S3155C2, 2,
  &(vtc_S3155C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,128), // object size
  NSPAIRA(_ZTI7S3155C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3155C2),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  S3155C1  : S3155C2 {
  virtual void  v1(); // _ZN7S3155C12v1Ev
  virtual void  v2(); // _ZN7S3155C12v2Ev
  ~S3155C1(); // tgen
  S3155C1(); // tgen
};
//SIG(1 S3155C1) C1{ BC2{ BC3{ v3 v4 v5 v6} BC4{ v7} v8 v9 v10 v11 v12 Fp Fi FC5{ Fp[2] FC6{ BC7{ m FC8{ BC9{ m Fp Fi[2]}} Fp Fi}} FC10{ BC11{ m FC12{ BC9} Fp Fi}} FC13{ BC11} FC14{ BC11} FC15{ BC7}} Fp} v1 v2}


void  S3155C1 ::v1(){vfunc_called(this, "_ZN7S3155C12v1Ev");}
void  S3155C1 ::v2(){vfunc_called(this, "_ZN7S3155C12v2Ev");}
S3155C1 ::~S3155C1(){ note_dtor("S3155C1", this);} // tgen
S3155C1 ::S3155C1(){ note_ctor("S3155C1", this);} // tgen

static void Test_S3155C1()
{
  extern Class_Descriptor cd_S3155C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,33)];
    init_test(&cd_S3155C1, buf);
    S3155C1 *dp, &lv = *(dp=new (buf) S3155C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,128), "sizeof(S3155C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3155C1)");
    check_base_class_offset(lv, (S3155C3*)(S3155C2*), 0, "S3155C1");
    check_base_class_offset(lv, (S3155C4*)(S3155C2*), ABISELECT(8,4), "S3155C1");
    check_base_class_offset(lv, (S3155C2*), 0, "S3155C1");
    test_class_info(&lv, &cd_S3155C1);
    dp->~S3155C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3155C1(Test_S3155C1, "S3155C1", ABISELECT(216,128));

#else // __cplusplus

extern void _ZN7S3155C1C1Ev();
extern void _ZN7S3155C1D1Ev();
Name_Map name_map_S3155C1[] = {
  NSPAIR(_ZN7S3155C1C1Ev),
  NSPAIR(_ZN7S3155C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3155C3;
extern VTBL_ENTRY _ZTI7S3155C3[];
extern  VTBL_ENTRY _ZTV7S3155C3[];
extern Class_Descriptor cd_S3155C4;
extern VTBL_ENTRY _ZTI7S3155C4[];
extern  VTBL_ENTRY _ZTV7S3155C4[];
extern Class_Descriptor cd_S3155C2;
extern VTBL_ENTRY _ZTI7S3155C2[];
extern  VTBL_ENTRY _ZTV7S3155C2[];
static Base_Class bases_S3155C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3155C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3155C4,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3155C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S3155C1[];
extern void _ZN7S3155C32v3Ev();
extern void _ZN7S3155C32v4Ev();
extern void _ZN7S3155C32v5Ev();
extern void _ZN7S3155C32v6Ev();
extern void _ZN7S3155C22v8Ev();
extern void _ZN7S3155C22v9Ev();
extern void _ZN7S3155C23v10Ev();
extern void _ZN7S3155C23v11Ev();
extern void _ZN7S3155C23v12Ev();
extern void _ZN7S3155C12v1Ev();
extern void _ZN7S3155C12v2Ev();
extern void _ZN7S3155C42v7Ev();
static  VTBL_ENTRY vtc_S3155C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3155C1[0]),
  (VTBL_ENTRY)&_ZN7S3155C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3155C32v4Ev,
  (VTBL_ENTRY)&_ZN7S3155C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3155C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3155C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3155C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3155C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3155C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3155C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3155C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3155C12v2Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3155C1[0]),
  (VTBL_ENTRY)&_ZN7S3155C42v7Ev,
};
extern VTBL_ENTRY _ZTI7S3155C1[];
extern  VTBL_ENTRY _ZTV7S3155C1[];
Class_Descriptor cd_S3155C1 = {  "S3155C1", // class name
  bases_S3155C1, 3,
  &(vtc_S3155C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,128), // object size
  NSPAIRA(_ZTI7S3155C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3155C1),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10033C2  {
  void *s10033c2f0;
  ::S4227C37 s10033c2f1;
  int s10033c2f2;
  ::S9141C28_nt s10033c2f3;
  unsigned int s10033c2f4:1;
  unsigned int s10033c2f5:1;
  unsigned int s10033c2f6:1;
  unsigned int s10033c2f7:1;
  unsigned int s10033c2f8:1;
  unsigned int s10033c2f9:1;
  unsigned int s10033c2f10:1;
  int s10033c2f11:3;
  int s10033c2f12:3;
  ::S5327C13_nt s10033c2f13;
  int s10033c2f14;
  virtual  ~S10033C2(); // _ZN8S10033C2D1Ev
  virtual void  v6(); // _ZN8S10033C22v6Ev
  virtual void  v7(); // _ZN8S10033C22v7Ev
  virtual void  v8(); // _ZN8S10033C22v8Ev
  virtual void  v9(); // _ZN8S10033C22v9Ev
  virtual void  v10(); // _ZN8S10033C23v10Ev
  virtual void  v11(); // _ZN8S10033C23v11Ev
  virtual void  v12(); // _ZN8S10033C23v12Ev
  virtual void  v13(); // _ZN8S10033C23v13Ev
  virtual void  v14(); // _ZN8S10033C23v14Ev
  virtual void  v15(); // _ZN8S10033C23v15Ev
  virtual void  v16(); // _ZN8S10033C23v16Ev
  virtual void  v17(); // _ZN8S10033C23v17Ev
  virtual void  v18(); // _ZN8S10033C23v18Ev
  virtual void  v19(); // _ZN8S10033C23v19Ev
  virtual void  v20(); // _ZN8S10033C23v20Ev
  virtual void  v21(); // _ZN8S10033C23v21Ev
  virtual void  v22(); // _ZN8S10033C23v22Ev
  virtual void  v23(); // _ZN8S10033C23v23Ev
  S10033C2(); // tgen
};
//SIG(-1 S10033C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S10033C2 ::~S10033C2(){ note_dtor("S10033C2", this);}
void  S10033C2 ::v6(){vfunc_called(this, "_ZN8S10033C22v6Ev");}
void  S10033C2 ::v7(){vfunc_called(this, "_ZN8S10033C22v7Ev");}
void  S10033C2 ::v8(){vfunc_called(this, "_ZN8S10033C22v8Ev");}
void  S10033C2 ::v9(){vfunc_called(this, "_ZN8S10033C22v9Ev");}
void  S10033C2 ::v10(){vfunc_called(this, "_ZN8S10033C23v10Ev");}
void  S10033C2 ::v11(){vfunc_called(this, "_ZN8S10033C23v11Ev");}
void  S10033C2 ::v12(){vfunc_called(this, "_ZN8S10033C23v12Ev");}
void  S10033C2 ::v13(){vfunc_called(this, "_ZN8S10033C23v13Ev");}
void  S10033C2 ::v14(){vfunc_called(this, "_ZN8S10033C23v14Ev");}
void  S10033C2 ::v15(){vfunc_called(this, "_ZN8S10033C23v15Ev");}
void  S10033C2 ::v16(){vfunc_called(this, "_ZN8S10033C23v16Ev");}
void  S10033C2 ::v17(){vfunc_called(this, "_ZN8S10033C23v17Ev");}
void  S10033C2 ::v18(){vfunc_called(this, "_ZN8S10033C23v18Ev");}
void  S10033C2 ::v19(){vfunc_called(this, "_ZN8S10033C23v19Ev");}
void  S10033C2 ::v20(){vfunc_called(this, "_ZN8S10033C23v20Ev");}
void  S10033C2 ::v21(){vfunc_called(this, "_ZN8S10033C23v21Ev");}
void  S10033C2 ::v22(){vfunc_called(this, "_ZN8S10033C23v22Ev");}
void  S10033C2 ::v23(){vfunc_called(this, "_ZN8S10033C23v23Ev");}
S10033C2 ::S10033C2(){ note_ctor("S10033C2", this);} // tgen

static void Test_S10033C2()
{
  extern Class_Descriptor cd_S10033C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S10033C2, buf);
    S10033C2 *dp, &lv = *(dp=new (buf) S10033C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S10033C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10033C2)");
    check_field_offset(lv, s10033c2f0, ABISELECT(8,4), "S10033C2.s10033c2f0");
    check_field_offset(lv, s10033c2f1, ABISELECT(16,8), "S10033C2.s10033c2f1");
    check_field_offset(lv, s10033c2f2, ABISELECT(20,12), "S10033C2.s10033c2f2");
    check_field_offset(lv, s10033c2f3, ABISELECT(24,16), "S10033C2.s10033c2f3");
    set_bf_and_test(lv, s10033c2f4, ABISELECT(40,28), 0, 1, 1, "S10033C2");
    set_bf_and_test(lv, s10033c2f5, ABISELECT(40,28), 1, 1, 1, "S10033C2");
    set_bf_and_test(lv, s10033c2f6, ABISELECT(40,28), 2, 1, 1, "S10033C2");
    set_bf_and_test(lv, s10033c2f7, ABISELECT(40,28), 3, 1, 1, "S10033C2");
    set_bf_and_test(lv, s10033c2f8, ABISELECT(40,28), 4, 1, 1, "S10033C2");
    set_bf_and_test(lv, s10033c2f9, ABISELECT(40,28), 5, 1, 1, "S10033C2");
    set_bf_and_test(lv, s10033c2f10, ABISELECT(40,28), 6, 1, 1, "S10033C2");
    set_bf_and_test(lv, s10033c2f11, ABISELECT(40,28), 7, 3, 1, "S10033C2");
    set_bf_and_test(lv, s10033c2f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S10033C2");
    set_bf_and_test(lv, s10033c2f12, ABISELECT(41,29), 2, 3, 1, "S10033C2");
    set_bf_and_test(lv, s10033c2f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S10033C2");
    check_field_offset(lv, s10033c2f13, ABISELECT(48,32), "S10033C2.s10033c2f13");
    check_field_offset(lv, s10033c2f14, ABISELECT(64,44), "S10033C2.s10033c2f14");
    test_class_info(&lv, &cd_S10033C2);
    dp->~S10033C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10033C2(Test_S10033C2, "S10033C2", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN8S10033C2C1Ev();
extern void _ZN8S10033C2D1Ev();
Name_Map name_map_S10033C2[] = {
  NSPAIR(_ZN8S10033C2C1Ev),
  NSPAIR(_ZN8S10033C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10033C2[];
extern void _ZN8S10033C2D1Ev();
extern void _ZN8S10033C2D0Ev();
extern void _ZN8S10033C22v6Ev();
extern void _ZN8S10033C22v7Ev();
extern void _ZN8S10033C22v8Ev();
extern void _ZN8S10033C22v9Ev();
extern void _ZN8S10033C23v10Ev();
extern void _ZN8S10033C23v11Ev();
extern void _ZN8S10033C23v12Ev();
extern void _ZN8S10033C23v13Ev();
extern void _ZN8S10033C23v14Ev();
extern void _ZN8S10033C23v15Ev();
extern void _ZN8S10033C23v16Ev();
extern void _ZN8S10033C23v17Ev();
extern void _ZN8S10033C23v18Ev();
extern void _ZN8S10033C23v19Ev();
extern void _ZN8S10033C23v20Ev();
extern void _ZN8S10033C23v21Ev();
extern void _ZN8S10033C23v22Ev();
extern void _ZN8S10033C23v23Ev();
static  VTBL_ENTRY vtc_S10033C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10033C2[0]),
  (VTBL_ENTRY)&_ZN8S10033C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10033C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10033C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10033C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10033C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10033C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v21Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v22Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v23Ev,
};
extern VTBL_ENTRY _ZTI8S10033C2[];
extern  VTBL_ENTRY _ZTV8S10033C2[];
Class_Descriptor cd_S10033C2 = {  "S10033C2", // class name
  0,0,//no base classes
  &(vtc_S10033C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI8S10033C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10033C2),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10033C1  : S10033C2 {
  ::S3214C13_nt s10033c1f0;
  int s10033c1f1[3];
  void *s10033c1f2;
  ::S4227C27 s10033c1f3;
  ::S4227C27 s10033c1f4;
  ::S4227C27 s10033c1f5;
  unsigned int s10033c1f6:1;
  virtual void  v1(); // _ZN8S10033C12v1Ev
  virtual void  v2(); // _ZN8S10033C12v2Ev
  virtual void  v3(); // _ZN8S10033C12v3Ev
  virtual void  v4(); // _ZN8S10033C12v4Ev
  virtual void  v5(); // _ZN8S10033C12v5Ev
  ~S10033C1(); // tgen
  S10033C1(); // tgen
};
//SIG(1 S10033C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} v1 v2 v3 v4 v5 FC7{ m Fi[3]} Fi[3] Fp FC8{ m} FC8 FC8 Fi:1}


void  S10033C1 ::v1(){vfunc_called(this, "_ZN8S10033C12v1Ev");}
void  S10033C1 ::v2(){vfunc_called(this, "_ZN8S10033C12v2Ev");}
void  S10033C1 ::v3(){vfunc_called(this, "_ZN8S10033C12v3Ev");}
void  S10033C1 ::v4(){vfunc_called(this, "_ZN8S10033C12v4Ev");}
void  S10033C1 ::v5(){vfunc_called(this, "_ZN8S10033C12v5Ev");}
S10033C1 ::~S10033C1(){ note_dtor("S10033C1", this);} // tgen
S10033C1 ::S10033C1(){ note_ctor("S10033C1", this);} // tgen

static void Test_S10033C1()
{
  extern Class_Descriptor cd_S10033C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,21)];
    init_test(&cd_S10033C1, buf);
    S10033C1 *dp, &lv = *(dp=new (buf) S10033C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,80), "sizeof(S10033C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10033C1)");
    check_base_class_offset(lv, (S10033C2*), 0, "S10033C1");
    check_field_offset(lv, s10033c1f0, ABISELECT(68,48), "S10033C1.s10033c1f0");
    check_field_offset(lv, s10033c1f1, ABISELECT(80,60), "S10033C1.s10033c1f1");
    check_field_offset(lv, s10033c1f2, ABISELECT(96,72), "S10033C1.s10033c1f2");
    check_field_offset(lv, s10033c1f3, ABISELECT(104,76), "S10033C1.s10033c1f3");
    check_field_offset(lv, s10033c1f4, ABISELECT(105,77), "S10033C1.s10033c1f4");
    check_field_offset(lv, s10033c1f5, ABISELECT(106,78), "S10033C1.s10033c1f5");
    set_bf_and_test(lv, s10033c1f6, ABISELECT(107,79), 0, 1, 1, "S10033C1");
    test_class_info(&lv, &cd_S10033C1);
    dp->~S10033C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10033C1(Test_S10033C1, "S10033C1", ABISELECT(112,80));

#else // __cplusplus

extern void _ZN8S10033C1C1Ev();
extern void _ZN8S10033C1D1Ev();
Name_Map name_map_S10033C1[] = {
  NSPAIR(_ZN8S10033C1C1Ev),
  NSPAIR(_ZN8S10033C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10033C2;
extern VTBL_ENTRY _ZTI8S10033C2[];
extern  VTBL_ENTRY _ZTV8S10033C2[];
static Base_Class bases_S10033C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10033C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10033C1[];
extern void _ZN8S10033C1D1Ev();
extern void _ZN8S10033C1D0Ev();
extern void _ZN8S10033C22v6Ev();
extern void _ZN8S10033C22v7Ev();
extern void _ZN8S10033C22v8Ev();
extern void _ZN8S10033C22v9Ev();
extern void _ZN8S10033C23v10Ev();
extern void _ZN8S10033C23v11Ev();
extern void _ZN8S10033C23v12Ev();
extern void _ZN8S10033C23v13Ev();
extern void _ZN8S10033C23v14Ev();
extern void _ZN8S10033C23v15Ev();
extern void _ZN8S10033C23v16Ev();
extern void _ZN8S10033C23v17Ev();
extern void _ZN8S10033C23v18Ev();
extern void _ZN8S10033C23v19Ev();
extern void _ZN8S10033C23v20Ev();
extern void _ZN8S10033C23v21Ev();
extern void _ZN8S10033C23v22Ev();
extern void _ZN8S10033C23v23Ev();
extern void _ZN8S10033C12v1Ev();
extern void _ZN8S10033C12v2Ev();
extern void _ZN8S10033C12v3Ev();
extern void _ZN8S10033C12v4Ev();
extern void _ZN8S10033C12v5Ev();
static  VTBL_ENTRY vtc_S10033C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10033C1[0]),
  (VTBL_ENTRY)&_ZN8S10033C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10033C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10033C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10033C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10033C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10033C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v21Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v22Ev,
  (VTBL_ENTRY)&_ZN8S10033C23v23Ev,
  (VTBL_ENTRY)&_ZN8S10033C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10033C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10033C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10033C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10033C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10033C1[];
extern  VTBL_ENTRY _ZTV8S10033C1[];
Class_Descriptor cd_S10033C1 = {  "S10033C1", // class name
  bases_S10033C1, 1,
  &(vtc_S10033C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,80), // object size
  NSPAIRA(_ZTI8S10033C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10033C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9916C2  {
  void *s9916c2f0;
  ::S4227C37 s9916c2f1;
  int s9916c2f2;
  ::S9141C28_nt s9916c2f3;
  unsigned int s9916c2f4:1;
  unsigned int s9916c2f5:1;
  unsigned int s9916c2f6:1;
  unsigned int s9916c2f7:1;
  unsigned int s9916c2f8:1;
  unsigned int s9916c2f9:1;
  unsigned int s9916c2f10:1;
  int s9916c2f11:3;
  int s9916c2f12:3;
  ::S5327C13_nt s9916c2f13;
  int s9916c2f14;
  virtual  ~S9916C2(); // _ZN7S9916C2D1Ev
  virtual void  v5(); // _ZN7S9916C22v5Ev
  virtual void  v6(); // _ZN7S9916C22v6Ev
  virtual void  v7(); // _ZN7S9916C22v7Ev
  virtual void  v8(); // _ZN7S9916C22v8Ev
  virtual void  v9(); // _ZN7S9916C22v9Ev
  virtual void  v10(); // _ZN7S9916C23v10Ev
  virtual void  v11(); // _ZN7S9916C23v11Ev
  virtual void  v12(); // _ZN7S9916C23v12Ev
  virtual void  v13(); // _ZN7S9916C23v13Ev
  virtual void  v14(); // _ZN7S9916C23v14Ev
  virtual void  v15(); // _ZN7S9916C23v15Ev
  virtual void  v16(); // _ZN7S9916C23v16Ev
  virtual void  v17(); // _ZN7S9916C23v17Ev
  virtual void  v18(); // _ZN7S9916C23v18Ev
  virtual void  v19(); // _ZN7S9916C23v19Ev
  virtual void  v20(); // _ZN7S9916C23v20Ev
  virtual void  v21(); // _ZN7S9916C23v21Ev
  virtual void  v22(); // _ZN7S9916C23v22Ev
  S9916C2(); // tgen
};
//SIG(-1 S9916C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S9916C2 ::~S9916C2(){ note_dtor("S9916C2", this);}
void  S9916C2 ::v5(){vfunc_called(this, "_ZN7S9916C22v5Ev");}
void  S9916C2 ::v6(){vfunc_called(this, "_ZN7S9916C22v6Ev");}
void  S9916C2 ::v7(){vfunc_called(this, "_ZN7S9916C22v7Ev");}
void  S9916C2 ::v8(){vfunc_called(this, "_ZN7S9916C22v8Ev");}
void  S9916C2 ::v9(){vfunc_called(this, "_ZN7S9916C22v9Ev");}
void  S9916C2 ::v10(){vfunc_called(this, "_ZN7S9916C23v10Ev");}
void  S9916C2 ::v11(){vfunc_called(this, "_ZN7S9916C23v11Ev");}
void  S9916C2 ::v12(){vfunc_called(this, "_ZN7S9916C23v12Ev");}
void  S9916C2 ::v13(){vfunc_called(this, "_ZN7S9916C23v13Ev");}
void  S9916C2 ::v14(){vfunc_called(this, "_ZN7S9916C23v14Ev");}
void  S9916C2 ::v15(){vfunc_called(this, "_ZN7S9916C23v15Ev");}
void  S9916C2 ::v16(){vfunc_called(this, "_ZN7S9916C23v16Ev");}
void  S9916C2 ::v17(){vfunc_called(this, "_ZN7S9916C23v17Ev");}
void  S9916C2 ::v18(){vfunc_called(this, "_ZN7S9916C23v18Ev");}
void  S9916C2 ::v19(){vfunc_called(this, "_ZN7S9916C23v19Ev");}
void  S9916C2 ::v20(){vfunc_called(this, "_ZN7S9916C23v20Ev");}
void  S9916C2 ::v21(){vfunc_called(this, "_ZN7S9916C23v21Ev");}
void  S9916C2 ::v22(){vfunc_called(this, "_ZN7S9916C23v22Ev");}
S9916C2 ::S9916C2(){ note_ctor("S9916C2", this);} // tgen

static void Test_S9916C2()
{
  extern Class_Descriptor cd_S9916C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S9916C2, buf);
    S9916C2 *dp, &lv = *(dp=new (buf) S9916C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S9916C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9916C2)");
    check_field_offset(lv, s9916c2f0, ABISELECT(8,4), "S9916C2.s9916c2f0");
    check_field_offset(lv, s9916c2f1, ABISELECT(16,8), "S9916C2.s9916c2f1");
    check_field_offset(lv, s9916c2f2, ABISELECT(20,12), "S9916C2.s9916c2f2");
    check_field_offset(lv, s9916c2f3, ABISELECT(24,16), "S9916C2.s9916c2f3");
    set_bf_and_test(lv, s9916c2f4, ABISELECT(40,28), 0, 1, 1, "S9916C2");
    set_bf_and_test(lv, s9916c2f5, ABISELECT(40,28), 1, 1, 1, "S9916C2");
    set_bf_and_test(lv, s9916c2f6, ABISELECT(40,28), 2, 1, 1, "S9916C2");
    set_bf_and_test(lv, s9916c2f7, ABISELECT(40,28), 3, 1, 1, "S9916C2");
    set_bf_and_test(lv, s9916c2f8, ABISELECT(40,28), 4, 1, 1, "S9916C2");
    set_bf_and_test(lv, s9916c2f9, ABISELECT(40,28), 5, 1, 1, "S9916C2");
    set_bf_and_test(lv, s9916c2f10, ABISELECT(40,28), 6, 1, 1, "S9916C2");
    set_bf_and_test(lv, s9916c2f11, ABISELECT(40,28), 7, 3, 1, "S9916C2");
    set_bf_and_test(lv, s9916c2f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S9916C2");
    set_bf_and_test(lv, s9916c2f12, ABISELECT(41,29), 2, 3, 1, "S9916C2");
    set_bf_and_test(lv, s9916c2f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S9916C2");
    check_field_offset(lv, s9916c2f13, ABISELECT(48,32), "S9916C2.s9916c2f13");
    check_field_offset(lv, s9916c2f14, ABISELECT(64,44), "S9916C2.s9916c2f14");
    test_class_info(&lv, &cd_S9916C2);
    dp->~S9916C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9916C2(Test_S9916C2, "S9916C2", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S9916C2C1Ev();
extern void _ZN7S9916C2D1Ev();
Name_Map name_map_S9916C2[] = {
  NSPAIR(_ZN7S9916C2C1Ev),
  NSPAIR(_ZN7S9916C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9916C2[];
extern void _ZN7S9916C2D1Ev();
extern void _ZN7S9916C2D0Ev();
extern void _ZN7S9916C22v5Ev();
extern void _ZN7S9916C22v6Ev();
extern void _ZN7S9916C22v7Ev();
extern void _ZN7S9916C22v8Ev();
extern void _ZN7S9916C22v9Ev();
extern void _ZN7S9916C23v10Ev();
extern void _ZN7S9916C23v11Ev();
extern void _ZN7S9916C23v12Ev();
extern void _ZN7S9916C23v13Ev();
extern void _ZN7S9916C23v14Ev();
extern void _ZN7S9916C23v15Ev();
extern void _ZN7S9916C23v16Ev();
extern void _ZN7S9916C23v17Ev();
extern void _ZN7S9916C23v18Ev();
extern void _ZN7S9916C23v19Ev();
extern void _ZN7S9916C23v20Ev();
extern void _ZN7S9916C23v21Ev();
extern void _ZN7S9916C23v22Ev();
static  VTBL_ENTRY vtc_S9916C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9916C2[0]),
  (VTBL_ENTRY)&_ZN7S9916C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9916C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9916C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9916C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9916C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9916C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9916C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S9916C2[];
extern  VTBL_ENTRY _ZTV7S9916C2[];
Class_Descriptor cd_S9916C2 = {  "S9916C2", // class name
  0,0,//no base classes
  &(vtc_S9916C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S9916C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9916C2),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9916C1  : S9916C2 {
  void *s9916c1f0;
  ::S4227C37 s9916c1f1;
  ::S4227C37 s9916c1f2;
  void *s9916c1f3;
  ::S9142C8_nt s9916c1f4;
  ::S9142C8_nt s9916c1f5;
  virtual void  v1(); // _ZN7S9916C12v1Ev
  virtual void  v2(); // _ZN7S9916C12v2Ev
  virtual void  v3(); // _ZN7S9916C12v3Ev
  virtual void  v4(); // _ZN7S9916C12v4Ev
  ~S9916C1(); // tgen
  S9916C1(); // tgen
};
//SIG(1 S9916C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} v1 v2 v3 v4 Fp FC3 FC3 Fp FC7{ m FC8{ m Fi[3]} FC8 Fc} FC7}


void  S9916C1 ::v1(){vfunc_called(this, "_ZN7S9916C12v1Ev");}
void  S9916C1 ::v2(){vfunc_called(this, "_ZN7S9916C12v2Ev");}
void  S9916C1 ::v3(){vfunc_called(this, "_ZN7S9916C12v3Ev");}
void  S9916C1 ::v4(){vfunc_called(this, "_ZN7S9916C12v4Ev");}
S9916C1 ::~S9916C1(){ note_dtor("S9916C1", this);} // tgen
S9916C1 ::S9916C1(){ note_ctor("S9916C1", this);} // tgen

static void Test_S9916C1()
{
  extern Class_Descriptor cd_S9916C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,30)];
    init_test(&cd_S9916C1, buf);
    S9916C1 *dp, &lv = *(dp=new (buf) S9916C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,116), "sizeof(S9916C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9916C1)");
    check_base_class_offset(lv, (S9916C2*), 0, "S9916C1");
    check_field_offset(lv, s9916c1f0, ABISELECT(72,48), "S9916C1.s9916c1f0");
    check_field_offset(lv, s9916c1f1, ABISELECT(80,52), "S9916C1.s9916c1f1");
    check_field_offset(lv, s9916c1f2, ABISELECT(81,53), "S9916C1.s9916c1f2");
    check_field_offset(lv, s9916c1f3, ABISELECT(88,56), "S9916C1.s9916c1f3");
    check_field_offset(lv, s9916c1f4, ABISELECT(96,60), "S9916C1.s9916c1f4");
    check_field_offset(lv, s9916c1f5, ABISELECT(124,88), "S9916C1.s9916c1f5");
    test_class_info(&lv, &cd_S9916C1);
    dp->~S9916C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9916C1(Test_S9916C1, "S9916C1", ABISELECT(152,116));

#else // __cplusplus

extern void _ZN7S9916C1C1Ev();
extern void _ZN7S9916C1D1Ev();
Name_Map name_map_S9916C1[] = {
  NSPAIR(_ZN7S9916C1C1Ev),
  NSPAIR(_ZN7S9916C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9916C2;
extern VTBL_ENTRY _ZTI7S9916C2[];
extern  VTBL_ENTRY _ZTV7S9916C2[];
static Base_Class bases_S9916C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9916C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9916C1[];
extern void _ZN7S9916C1D1Ev();
extern void _ZN7S9916C1D0Ev();
extern void _ZN7S9916C22v5Ev();
extern void _ZN7S9916C22v6Ev();
extern void _ZN7S9916C22v7Ev();
extern void _ZN7S9916C22v8Ev();
extern void _ZN7S9916C22v9Ev();
extern void _ZN7S9916C23v10Ev();
extern void _ZN7S9916C23v11Ev();
extern void _ZN7S9916C23v12Ev();
extern void _ZN7S9916C23v13Ev();
extern void _ZN7S9916C23v14Ev();
extern void _ZN7S9916C23v15Ev();
extern void _ZN7S9916C23v16Ev();
extern void _ZN7S9916C23v17Ev();
extern void _ZN7S9916C23v18Ev();
extern void _ZN7S9916C23v19Ev();
extern void _ZN7S9916C23v20Ev();
extern void _ZN7S9916C23v21Ev();
extern void _ZN7S9916C23v22Ev();
extern void _ZN7S9916C12v1Ev();
extern void _ZN7S9916C12v2Ev();
extern void _ZN7S9916C12v3Ev();
extern void _ZN7S9916C12v4Ev();
static  VTBL_ENTRY vtc_S9916C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9916C1[0]),
  (VTBL_ENTRY)&_ZN7S9916C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9916C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9916C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9916C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9916C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9916C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9916C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9916C23v22Ev,
  (VTBL_ENTRY)&_ZN7S9916C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9916C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9916C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9916C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9916C1[];
extern  VTBL_ENTRY _ZTV7S9916C1[];
Class_Descriptor cd_S9916C1 = {  "S9916C1", // class name
  bases_S9916C1, 1,
  &(vtc_S9916C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,116), // object size
  NSPAIRA(_ZTI7S9916C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9916C1),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN7S7529C3C1Ev();
extern void _ZN7S7529C3D1Ev();
Name_Map name_map_S7529C3[] = {
  NSPAIR(_ZN7S7529C3C1Ev),
  NSPAIR(_ZN7S7529C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7529C3[];
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY vtc_S7529C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C3[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
Class_Descriptor cd_S7529C3 = {  "S7529C3", // class name
  0,0,//no base classes
  &(vtc_S7529C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7529C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7529C3),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  S7529C4  : virtual S20997C6 , virtual S7529C3 , S4227C37 {
  virtual  ~S7529C4(); // _ZN7S7529C4D2Ev
  S7529C4(); // tgen
};
//SIG(-1 S7529C4) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S7529C4()
{
  extern Class_Descriptor cd_S7529C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7529C4, buf);
    S7529C4 *dp, &lv = *(dp=new (buf) S7529C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S7529C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7529C4)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S7529C4");
    check_base_class_offset(lv, (S7529C3*), 0, "S7529C4");
    check_base_class_offset(lv, (S4227C37*), 0, "S7529C4");
    test_class_info(&lv, &cd_S7529C4);
    dp->~S7529C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7529C4(Test_S7529C4, "S7529C4", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S7529C4C1Ev();
extern void _ZN7S7529C4D2Ev();
Name_Map name_map_S7529C4[] = {
  NSPAIR(_ZN7S7529C4C1Ev),
  NSPAIR(_ZN7S7529C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S7529C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7529C3,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7529C4[];
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C4D1Ev();
extern void _ZN7S7529C4D0Ev();
static  VTBL_ENTRY vtc_S7529C4[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D0Ev,
};
extern VTBL_ENTRY _ZTV7S7529C4[];
static  VTT_ENTRY vtt_S7529C4[] = {
  {&(_ZTV7S7529C4[5]),  5,8},
  {&(_ZTV7S7529C4[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7529C4[];
extern  VTBL_ENTRY _ZTV7S7529C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C4[];
Class_Descriptor cd_S7529C4 = {  "S7529C4", // class name
  bases_S7529C4, 3,
  &(vtc_S7529C4[0]), // expected_vtbl_contents
  &(vtt_S7529C4[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S7529C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7529C4),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7529C4),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  S7529C8  : virtual S4227C37 , virtual S7529C4 {
  virtual void  v2(); // _ZN7S7529C82v2Ev
  ~S7529C8(); // tgen
  S7529C8(); // tgen
};
//SIG(-1 S7529C8) C1{ VBC2{ m} VBC3{ VBC4{ m FL[5]} VBC5{ v2} BC2 vd} v1}


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

static void Test_S7529C8()
{
  extern Class_Descriptor cd_S7529C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7529C8, buf);
    S7529C8 *dp, &lv = *(dp=new (buf) S7529C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S7529C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7529C8)");
    /*is_ambiguous_... S7529C8::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), ABISELECT(8,4), "S7529C8");
    check_base_class_offset(lv, (S20997C6*)(S7529C4*), ABISELECT(8,4), "S7529C8");
    check_base_class_offset(lv, (S7529C3*)(S7529C4*), 0, "S7529C8");
    check_base_class_offset(lv, (S4227C37*)(S7529C4*), 0, "S7529C8");
    check_base_class_offset(lv, (S7529C4*), 0, "S7529C8");
    test_class_info(&lv, &cd_S7529C8);
    dp->~S7529C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7529C8(Test_S7529C8, "S7529C8", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S7529C8C1Ev();
extern void _ZN7S7529C8D1Ev();
Name_Map name_map_S7529C8[] = {
  NSPAIR(_ZN7S7529C8C1Ev),
  NSPAIR(_ZN7S7529C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C4;
extern VTBL_ENTRY _ZTI7S7529C4[];
extern  VTBL_ENTRY _ZTV7S7529C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C4[];
static Base_Class bases_S7529C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7529C3,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7529C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7529C8[];
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C8D1Ev();
extern void _ZN7S7529C8D0Ev();
extern void _ZN7S7529C82v2Ev();
static  VTBL_ENTRY vtc_S7529C8[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C8[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7529C82v2Ev,
};
extern VTBL_ENTRY _ZTV7S7529C8[];
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C4D1Ev();
extern void _ZN7S7529C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C4__7S7529C8[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D0Ev,
};
static  VTT_ENTRY vtt_S7529C8[] = {
  {&(_ZTV7S7529C8[8]),  8,12},
  {&(_ZTV7S7529C8[8]),  8,12},
  {&(_ZTV7S7529C8[8]),  8,12},
  {&(_tg__ZTV7S7529C4__7S7529C8[5]),  5,8},
  {&(_tg__ZTV7S7529C4__7S7529C8[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7529C8[];
extern  VTBL_ENTRY _ZTV7S7529C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C8[];
Class_Descriptor cd_S7529C8 = {  "S7529C8", // class name
  bases_S7529C8, 5,
  &(vtc_S7529C8[0]), // expected_vtbl_contents
  &(vtt_S7529C8[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S7529C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7529C8),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7529C8),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7529C10  : S7529C3 , virtual S20997C6 , S4227C37 {
  void *s7529c10f0[10];
  ~S7529C10(); // tgen
  S7529C10(); // tgen
};
//SIG(-1 S7529C10) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S7529C10()
{
  extern Class_Descriptor cd_S7529C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S7529C10, buf);
    S7529C10 *dp, &lv = *(dp=new (buf) S7529C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S7529C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7529C10)");
    check_base_class_offset(lv, (S7529C3*), 0, "S7529C10");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S7529C10");
    check_base_class_offset(lv, (S4227C37*), 0, "S7529C10");
    check_field_offset(lv, s7529c10f0, ABISELECT(8,4), "S7529C10.s7529c10f0");
    test_class_info(&lv, &cd_S7529C10);
    dp->~S7529C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7529C10(Test_S7529C10, "S7529C10", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN8S7529C10C1Ev();
extern void _ZN8S7529C10D1Ev();
Name_Map name_map_S7529C10[] = {
  NSPAIR(_ZN8S7529C10C1Ev),
  NSPAIR(_ZN8S7529C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S7529C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7529C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7529C10[];
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY vtc_S7529C10[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C10[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern VTBL_ENTRY _ZTV8S7529C10[];
static  VTT_ENTRY vtt_S7529C10[] = {
  {&(_ZTV8S7529C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7529C10[];
extern  VTBL_ENTRY _ZTV8S7529C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C10[];
Class_Descriptor cd_S7529C10 = {  "S7529C10", // class name
  bases_S7529C10, 3,
  &(vtc_S7529C10[0]), // expected_vtbl_contents
  &(vtt_S7529C10[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI8S7529C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7529C10),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7529C10),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  S7529C9  : virtual S7529C3 {
  ::S7529C10 s7529c9f0[9];
  ~S7529C9(); // tgen
  S7529C9(); // tgen
};
//SIG(-1 S7529C9) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S7529C9()
{
  extern Class_Descriptor cd_S7529C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S7529C9, buf);
    S7529C9 *dp, &lv = *(dp=new (buf) S7529C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S7529C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7529C9)");
    check_base_class_offset(lv, (S7529C3*), 0, "S7529C9");
    check_field_offset(lv, s7529c9f0, ABISELECT(8,4), "S7529C9.s7529c9f0");
    test_class_info(&lv, &cd_S7529C9);
    dp->~S7529C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7529C9(Test_S7529C9, "S7529C9", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN7S7529C9C1Ev();
extern void _ZN7S7529C9D1Ev();
Name_Map name_map_S7529C9[] = {
  NSPAIR(_ZN7S7529C9C1Ev),
  NSPAIR(_ZN7S7529C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
static Base_Class bases_S7529C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7529C3,    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 _ZTI7S7529C9[];
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY vtc_S7529C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C9[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern VTBL_ENTRY _ZTV7S7529C9[];
static  VTT_ENTRY vtt_S7529C9[] = {
  {&(_ZTV7S7529C9[4]),  4,5},
  {&(_ZTV7S7529C9[4]),  4,5},
};
extern VTBL_ENTRY _ZTI7S7529C9[];
extern  VTBL_ENTRY _ZTV7S7529C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C9[];
Class_Descriptor cd_S7529C9 = {  "S7529C9", // class name
  bases_S7529C9, 1,
  &(vtc_S7529C9[0]), // expected_vtbl_contents
  &(vtt_S7529C9[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI7S7529C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7529C9),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7529C9),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  S7529C2  : virtual S7529C3 , virtual S7529C4 , virtual S10258C6_nt , virtual S7529C8 , virtual S7529C9 {
  virtual  ~S7529C2(); // _ZN7S7529C2D2Ev
  S7529C2(); // tgen
};
//SIG(-1 S7529C2) C1{ VBC2{ v1} VBC3{ VBC4{ m FL[5]} VBC2 BC5{ m} vd} VBC6{ m FL[4]} VBC7{ VBC5 VBC3 v2} VBC8{ VBC2 FC9{ BC2 VBC4 BC5 Fp[10]}[9]} vd}


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

static void Test_S7529C2()
{
  extern Class_Descriptor cd_S7529C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(156,210)];
    init_test(&cd_S7529C2, buf);
    S7529C2 *dp, &lv = *(dp=new (buf) S7529C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1240,836), "sizeof(S7529C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7529C2)");
    check_base_class_offset(lv, (S7529C3*), 0, "S7529C2");
    check_base_class_offset(lv, (S7529C3*)(S7529C4*), 0, "S7529C2");
    check_base_class_offset(lv, (S7529C3*)(S7529C9*), 0, "S7529C2");
    check_base_class_offset(lv, (S20997C6*)(S7529C4*), ABISELECT(8,4), "S7529C2");
    check_base_class_offset(lv, (S4227C37*)(S7529C4*), 0, "S7529C2");
    check_base_class_offset(lv, (S7529C4*), 0, "S7529C2");
    check_base_class_offset(lv, (S7529C4*)(S7529C8*), 0, "S7529C2");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(48,44), "S7529C2");
    /*is_ambiguous_... S7529C8::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7529C8*), ABISELECT(80,76), "S7529C2");
    check_base_class_offset(lv, (S7529C8*), 0, "S7529C2");
    check_base_class_offset(lv, (S7529C9*), ABISELECT(80,76), "S7529C2");
    test_class_info(&lv, &cd_S7529C2);
    dp->~S7529C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7529C2(Test_S7529C2, "S7529C2", ABISELECT(1240,836));

#else // __cplusplus

extern void _ZN7S7529C2C1Ev();
extern void _ZN7S7529C2D2Ev();
Name_Map name_map_S7529C2[] = {
  NSPAIR(_ZN7S7529C2C1Ev),
  NSPAIR(_ZN7S7529C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C4;
extern VTBL_ENTRY _ZTI7S7529C4[];
extern  VTBL_ENTRY _ZTV7S7529C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C4[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C8;
extern VTBL_ENTRY _ZTI7S7529C8[];
extern  VTBL_ENTRY _ZTV7S7529C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C8[];
extern Class_Descriptor cd_S7529C9;
extern VTBL_ENTRY _ZTI7S7529C9[];
extern  VTBL_ENTRY _ZTV7S7529C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C9[];
static Base_Class bases_S7529C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7529C3,    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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7529C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(80,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7529C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7529C9,    ABISELECT(80,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7529C2[];
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C2D1Ev();
extern void _ZN7S7529C2D0Ev();
extern void _ZN7S7529C82v2Ev();
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY vtc_S7529C2[] = {
  ABISELECT(80,76),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C2[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7529C82v2Ev,
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  (VTBL_ENTRY)&(_ZTI7S7529C2[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern VTBL_ENTRY _ZTV7S7529C2[];
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C4D1Ev();
extern void _ZN7S7529C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C4__7S7529C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D0Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7529C8D1Ev,_ZTv0_n24_N7S7529C8D1Ev)();
extern void _ZN7S7529C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7529C8D0Ev,_ZTv0_n24_N7S7529C8D0Ev)();
extern void _ZN7S7529C8D0Ev() __attribute__((weak));
extern void _ZN7S7529C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C8__7S7529C2[] = {
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C8[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7529C8D1Ev,_ZTv0_n24_N7S7529C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7529C8D0Ev,_ZTv0_n24_N7S7529C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7529C82v2Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C9__7S7529C2[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C9[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__7S7529C9__7S7529C2[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI7S7529C9[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
static  VTT_ENTRY vtt_S7529C2[] = {
  {&(_ZTV7S7529C2[12]),  12,21},
  {&(_ZTV7S7529C2[12]),  12,21},
  {&(_ZTV7S7529C2[12]),  12,21},
  {&(_ZTV7S7529C2[12]),  12,21},
  {&(_ZTV7S7529C2[20]),  20,21},
  {&(_tg__ZTV7S7529C4__7S7529C2[5]),  5,8},
  {&(_tg__ZTV7S7529C4__7S7529C2[5]),  5,8},
  {&(_tg__ZTV7S7529C8__7S7529C2[8]),  8,12},
  {&(_tg__ZTV7S7529C8__7S7529C2[8]),  8,12},
  {&(_tg__ZTV7S7529C8__7S7529C2[8]),  8,12},
  {&(_tg__ZTV7S7529C9__7S7529C2[4]),  4,5},
  {&(_tg__ZTV7S7529C3__7S7529C9__7S7529C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7529C2[];
extern  VTBL_ENTRY _ZTV7S7529C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C2[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7529C8D0Ev,_ZTv0_n24_N7S7529C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7529C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7529C8D1Ev,_ZTv0_n24_N7S7529C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7529C8D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7529C2 = {  "S7529C2", // class name
  bases_S7529C2, 8,
  &(vtc_S7529C2[0]), // expected_vtbl_contents
  &(vtt_S7529C2[0]), // expected_vtt_contents
  ABISELECT(1240,836), // object size
  NSPAIRA(_ZTI7S7529C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7529C2),21, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7529C2),12, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7529C12  : S7529C4 {
  virtual  ~S7529C12(); // _ZN8S7529C12D2Ev
  S7529C12(); // tgen
};
//SIG(-1 S7529C12) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S7529C12()
{
  extern Class_Descriptor cd_S7529C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7529C12, buf);
    S7529C12 *dp, &lv = *(dp=new (buf) S7529C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S7529C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7529C12)");
    check_base_class_offset(lv, (S20997C6*)(S7529C4*), ABISELECT(8,4), "S7529C12");
    check_base_class_offset(lv, (S7529C3*)(S7529C4*), 0, "S7529C12");
    check_base_class_offset(lv, (S4227C37*)(S7529C4*), 0, "S7529C12");
    check_base_class_offset(lv, (S7529C4*), 0, "S7529C12");
    test_class_info(&lv, &cd_S7529C12);
    dp->~S7529C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7529C12(Test_S7529C12, "S7529C12", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S7529C12C1Ev();
extern void _ZN8S7529C12D2Ev();
Name_Map name_map_S7529C12[] = {
  NSPAIR(_ZN8S7529C12C1Ev),
  NSPAIR(_ZN8S7529C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C4;
extern VTBL_ENTRY _ZTI7S7529C4[];
extern  VTBL_ENTRY _ZTV7S7529C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C4[];
static Base_Class bases_S7529C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7529C3,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7529C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7529C12[];
extern void _ZN7S7529C32v1Ev();
extern void _ZN8S7529C12D1Ev();
extern void _ZN8S7529C12D0Ev();
static  VTBL_ENTRY vtc_S7529C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C12[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN8S7529C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7529C12D0Ev,
};
extern VTBL_ENTRY _ZTV8S7529C12[];
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C4D1Ev();
extern void _ZN7S7529C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C4__8S7529C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D0Ev,
};
static  VTT_ENTRY vtt_S7529C12[] = {
  {&(_ZTV8S7529C12[5]),  5,8},
  {&(_tg__ZTV7S7529C4__8S7529C12[5]),  5,8},
  {&(_tg__ZTV7S7529C4__8S7529C12[5]),  5,8},
  {&(_ZTV8S7529C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S7529C12[];
extern  VTBL_ENTRY _ZTV8S7529C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C12[];
Class_Descriptor cd_S7529C12 = {  "S7529C12", // class name
  bases_S7529C12, 4,
  &(vtc_S7529C12[0]), // expected_vtbl_contents
  &(vtt_S7529C12[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S7529C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7529C12),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7529C12),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  S7529C11  : virtual S4227C37 , S7529C9 , S7529C4 , S7529C12 {
  ~S7529C11(); // tgen
  S7529C11(); // tgen
};
//SIG(-1 S7529C11) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S7529C11()
{
  extern Class_Descriptor cd_S7529C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S7529C11, buf);
    S7529C11 *dp, &lv = *(dp=new (buf) S7529C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S7529C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7529C11)");
    /*is_ambiguous_... S7529C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S7529C11");
    check_base_class_offset(lv, (S7529C3*)(S7529C9*), 0, "S7529C11");
    /*is_ambiguous_... S7529C11::S7529C4 */ AMB_check_base_class_offset(lv, (S7529C3*)(S7529C4*), 0, "S7529C11");
    check_base_class_offset(lv, (S7529C3*)(S7529C4*)(S7529C12*), 0, "S7529C11");
    check_base_class_offset(lv, (S7529C9*), 0, "S7529C11");
    /*is_ambiguous_... S7529C11::S7529C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7529C4*), ABISELECT(1176,768), "S7529C11");
    check_base_class_offset(lv, (S20997C6*)(S7529C4*)(S7529C12*), ABISELECT(1176,768), "S7529C11");
    /*is_ambiguous_... S7529C11::S7529C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7529C4*), ABISELECT(1160,760), "S7529C11");
    /*is_ambiguous_... S7529C11::S7529C4 */ AMB_check_base_class_offset(lv, (S7529C4*), ABISELECT(1160,760), "S7529C11");
    check_base_class_offset(lv, (S4227C37*)(S7529C4*)(S7529C12*), ABISELECT(1168,764), "S7529C11");
    check_base_class_offset(lv, (S7529C4*)(S7529C12*), ABISELECT(1168,764), "S7529C11");
    check_base_class_offset(lv, (S7529C12*), ABISELECT(1168,764), "S7529C11");
    test_class_info(&lv, &cd_S7529C11);
    dp->~S7529C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7529C11(Test_S7529C11, "S7529C11", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN8S7529C11C1Ev();
extern void _ZN8S7529C11D1Ev();
Name_Map name_map_S7529C11[] = {
  NSPAIR(_ZN8S7529C11C1Ev),
  NSPAIR(_ZN8S7529C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S7529C9;
extern VTBL_ENTRY _ZTI7S7529C9[];
extern  VTBL_ENTRY _ZTV7S7529C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C9[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C4;
extern VTBL_ENTRY _ZTI7S7529C4[];
extern  VTBL_ENTRY _ZTV7S7529C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C4;
extern VTBL_ENTRY _ZTI7S7529C4[];
extern  VTBL_ENTRY _ZTV7S7529C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C4[];
extern Class_Descriptor cd_S7529C12;
extern VTBL_ENTRY _ZTI8S7529C12[];
extern  VTBL_ENTRY _ZTV8S7529C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C12[];
static Base_Class bases_S7529C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7529C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7529C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7529C4,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7529C4,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7529C12,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7529C11[];
extern void _ZN7S7529C32v1Ev();
extern void _ZN8S7529C11D1Ev();
extern void _ZN8S7529C11D0Ev();
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZThn1160_N8S7529C11D1Ev,_ZThn760_N8S7529C11D1Ev)();
extern void ABISELECT(_ZThn1160_N8S7529C11D0Ev,_ZThn760_N8S7529C11D0Ev)();
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZThn1168_N8S7529C11D1Ev,_ZThn764_N8S7529C11D1Ev)();
extern void ABISELECT(_ZThn1168_N8S7529C11D0Ev,_ZThn764_N8S7529C11D0Ev)();
static  VTBL_ENTRY vtc_S7529C11[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C11[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN8S7529C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7529C11D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S7529C11[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7529C11D1Ev,_ZThn760_N8S7529C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7529C11D0Ev,_ZThn760_N8S7529C11D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S7529C11[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7529C11D1Ev,_ZThn764_N8S7529C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7529C11D0Ev,_ZThn764_N8S7529C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S7529C11[];
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C9__8S7529C11[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C9[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C4D1Ev();
extern void _ZN7S7529C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C4__8S7529C11[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D0Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__7S7529C4__8S7529C11[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN8S7529C12D1Ev();
extern void _ZN8S7529C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7529C12__8S7529C11[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C12[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN8S7529C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7529C12D0Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C4D1Ev();
extern void _ZN7S7529C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C48S7529C12__A1__8S7529C11[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D0Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__7S7529C48S7529C12__A1__8S7529C11[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__8S7529C12__8S7529C11[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S7529C12[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
static  VTT_ENTRY vtt_S7529C11[] = {
  {&(_ZTV8S7529C11[6]),  6,25},
  {&(_tg__ZTV7S7529C9__8S7529C11[4]),  4,5},
  {&(_tg__ZTV7S7529C9__8S7529C11[4]),  4,5},
  {&(_tg__ZTV7S7529C4__8S7529C11[5]),  5,8},
  {&(_tg__ZTV7S7529C3__7S7529C4__8S7529C11[3]),  3,4},
  {&(_tg__ZTV8S7529C12__8S7529C11[5]),  5,8},
  {&(_tg__ZTV7S7529C48S7529C12__A1__8S7529C11[5]),  5,8},
  {&(_tg__ZTV7S7529C3__7S7529C48S7529C12__A1__8S7529C11[3]),  3,4},
  {&(_tg__ZTV7S7529C3__8S7529C12__8S7529C11[3]),  3,4},
  {&(_ZTV8S7529C11[6]),  6,25},
  {&(_ZTV8S7529C11[14]),  14,25},
  {&(_ZTV8S7529C11[22]),  22,25},
};
extern VTBL_ENTRY _ZTI8S7529C11[];
extern  VTBL_ENTRY _ZTV8S7529C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C11[];
Class_Descriptor cd_S7529C11 = {  "S7529C11", // class name
  bases_S7529C11, 9,
  &(vtc_S7529C11[0]), // expected_vtbl_contents
  &(vtt_S7529C11[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI8S7529C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7529C11),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7529C11),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  S7529C13  : virtual S7529C3 , S7529C10 , virtual S7529C11 {
  virtual  ~S7529C13(); // _ZN8S7529C13D2Ev
  S7529C13(); // tgen
};
//SIG(-1 S7529C13) C1{ VBC2{ v1} BC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC5 BC7{ VBC2 FC3[9]} BC8{ VBC4 VBC2 BC5 vd} BC9{ BC8 vd}} vd}


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

static void Test_S7529C13()
{
  extern Class_Descriptor cd_S7529C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(165,215)];
    init_test(&cd_S7529C13, buf);
    S7529C13 *dp, &lv = *(dp=new (buf) S7529C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1312,856), "sizeof(S7529C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7529C13)");
    /*is_ambiguous_... S7529C13::S7529C3 */ AMB_check_base_class_offset(lv, (S7529C3*), ABISELECT(128,84), "S7529C13");
    check_base_class_offset(lv, (S7529C3*)(S7529C9*)(S7529C11*), ABISELECT(128,84), "S7529C13");
    /*is_ambiguous_... S7529C11::S7529C4 */ AMB_check_base_class_offset(lv, (S7529C3*)(S7529C4*)(S7529C11*), ABISELECT(128,84), "S7529C13");
    check_base_class_offset(lv, (S7529C3*)(S7529C4*)(S7529C12*)(S7529C11*), ABISELECT(128,84), "S7529C13");
    check_base_class_offset(lv, (S7529C3*)(S7529C10*), 0, "S7529C13");
    check_base_class_offset(lv, (S20997C6*)(S7529C10*), ABISELECT(88,44), "S7529C13");
    /*is_ambiguous_... S7529C11::S7529C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7529C4*)(S7529C11*), ABISELECT(88,44), "S7529C13");
    check_base_class_offset(lv, (S20997C6*)(S7529C4*)(S7529C12*)(S7529C11*), ABISELECT(88,44), "S7529C13");
    check_base_class_offset(lv, (S4227C37*)(S7529C10*), 0, "S7529C13");
    check_base_class_offset(lv, (S7529C10*), 0, "S7529C13");
    /*is_ambiguous_... S7529C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7529C11*), ABISELECT(1304,852), "S7529C13");
    check_base_class_offset(lv, (S7529C9*)(S7529C11*), ABISELECT(128,84), "S7529C13");
    /*is_ambiguous_... S7529C11::S7529C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7529C4*)(S7529C11*), ABISELECT(1288,844), "S7529C13");
    /*is_ambiguous_... S7529C11::S7529C4 */ AMB_check_base_class_offset(lv, (S7529C4*)(S7529C11*), ABISELECT(1288,844), "S7529C13");
    check_base_class_offset(lv, (S4227C37*)(S7529C4*)(S7529C12*)(S7529C11*), ABISELECT(1296,848), "S7529C13");
    check_base_class_offset(lv, (S7529C4*)(S7529C12*)(S7529C11*), ABISELECT(1296,848), "S7529C13");
    check_base_class_offset(lv, (S7529C12*)(S7529C11*), ABISELECT(1296,848), "S7529C13");
    check_base_class_offset(lv, (S7529C11*), ABISELECT(128,84), "S7529C13");
    test_class_info(&lv, &cd_S7529C13);
    dp->~S7529C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7529C13(Test_S7529C13, "S7529C13", ABISELECT(1312,856));

#else // __cplusplus

extern void _ZN8S7529C13C1Ev();
extern void _ZN8S7529C13D2Ev();
Name_Map name_map_S7529C13[] = {
  NSPAIR(_ZN8S7529C13C1Ev),
  NSPAIR(_ZN8S7529C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C10;
extern VTBL_ENTRY _ZTI8S7529C10[];
extern  VTBL_ENTRY _ZTV8S7529C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C9;
extern VTBL_ENTRY _ZTI7S7529C9[];
extern  VTBL_ENTRY _ZTV7S7529C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C9[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C4;
extern VTBL_ENTRY _ZTI7S7529C4[];
extern  VTBL_ENTRY _ZTV7S7529C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C4;
extern VTBL_ENTRY _ZTI7S7529C4[];
extern  VTBL_ENTRY _ZTV7S7529C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C4[];
extern Class_Descriptor cd_S7529C12;
extern VTBL_ENTRY _ZTI8S7529C12[];
extern  VTBL_ENTRY _ZTV8S7529C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C12[];
extern Class_Descriptor cd_S7529C11;
extern VTBL_ENTRY _ZTI8S7529C11[];
extern  VTBL_ENTRY _ZTV8S7529C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C11[];
static Base_Class bases_S7529C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7529C3,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7529C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7529C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7529C9,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1288,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7529C4,    ABISELECT(1288,844), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7529C4,    ABISELECT(1296,848), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7529C12,    ABISELECT(1296,848), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S7529C11,    ABISELECT(128,84), //bcp->offset
    9, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7529C13[];
extern void _ZN7S7529C32v1Ev();
extern void _ZN8S7529C13D1Ev();
extern void _ZN8S7529C13D0Ev();
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S7529C13D1Ev,_ZTv0_n28_N8S7529C13D1Ev)();
extern void ABISELECT(_ZThn128_N8S7529C13D1Ev,_ZThn84_N8S7529C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7529C13D0Ev,_ZTv0_n28_N8S7529C13D0Ev)();
extern void ABISELECT(_ZThn128_N8S7529C13D0Ev,_ZThn84_N8S7529C13D0Ev)() __attribute__((weak));
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S7529C13D1Ev,_ZTvn760_n28_N8S7529C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S7529C13D0Ev,_ZTvn760_n28_N8S7529C13D0Ev)();
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S7529C13D1Ev,_ZTvn764_n28_N8S7529C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S7529C13D0Ev,_ZTvn764_n28_N8S7529C13D0Ev)();
static  VTBL_ENTRY vtc_S7529C13[] = {
  ABISELECT(1304,852),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C13[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN8S7529C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7529C13D0Ev,
  ABISELECT(-128,-84),
  -40,
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S7529C13[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7529C13D1Ev,_ZTv0_n28_N8S7529C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7529C13D0Ev,_ZTv0_n28_N8S7529C13D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S7529C13[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S7529C13D1Ev,_ZTvn760_n28_N8S7529C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S7529C13D0Ev,_ZTvn760_n28_N8S7529C13D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S7529C13[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S7529C13D1Ev,_ZTvn764_n28_N8S7529C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S7529C13D0Ev,_ZTvn764_n28_N8S7529C13D0Ev),
};
extern VTBL_ENTRY _ZTV8S7529C13[];
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7529C10__8S7529C13[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C10[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN8S7529C11D1Ev();
extern void _ZN8S7529C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7529C11__8S7529C13[] = {
  -40,
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C11[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN8S7529C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7529C11D0Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C98S7529C11__8S7529C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C9[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C4D1Ev();
extern void _ZN7S7529C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C48S7529C11__8S7529C13[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D0Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__7S7529C48S7529C11__8S7529C13[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN8S7529C12D1Ev();
extern void _ZN8S7529C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7529C128S7529C11__8S7529C13[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C12[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN8S7529C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7529C12D0Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C4D1Ev();
extern void _ZN7S7529C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C48S7529C128S7529C11__A1__8S7529C13[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D0Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__7S7529C48S7529C128S7529C11__A1__8S7529C13[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__8S7529C128S7529C11__8S7529C13[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S7529C12[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZThn1160_N8S7529C11D1Ev,_ZThn760_N8S7529C11D1Ev)();
extern void ABISELECT(_ZThn1160_N8S7529C11D0Ev,_ZThn760_N8S7529C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7529C4__8S7529C11__8S7529C13[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S7529C11[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7529C11D1Ev,_ZThn760_N8S7529C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7529C11D0Ev,_ZThn760_N8S7529C11D0Ev),
};
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZThn1168_N8S7529C11D1Ev,_ZThn764_N8S7529C11D1Ev)();
extern void ABISELECT(_ZThn1168_N8S7529C11D0Ev,_ZThn764_N8S7529C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7529C12__8S7529C11__8S7529C13[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S7529C11[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7529C11D1Ev,_ZThn764_N8S7529C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7529C11D0Ev,_ZThn764_N8S7529C11D0Ev),
};
static  VTT_ENTRY vtt_S7529C13[] = {
  {&(_ZTV8S7529C13[6]),  6,35},
  {&(_tg__ZTV8S7529C10__8S7529C13[3]),  3,4},
  {&(_ZTV8S7529C13[16]),  16,35},
  {&(_ZTV8S7529C13[16]),  16,35},
  {&(_ZTV8S7529C13[24]),  24,35},
  {&(_ZTV8S7529C13[32]),  32,35},
  {&(_tg__ZTV8S7529C11__8S7529C13[6]),  6,9},
  {&(_tg__ZTV7S7529C98S7529C11__8S7529C13[4]),  4,5},
  {&(_tg__ZTV7S7529C98S7529C11__8S7529C13[4]),  4,5},
  {&(_tg__ZTV7S7529C48S7529C11__8S7529C13[5]),  5,8},
  {&(_tg__ZTV7S7529C3__7S7529C48S7529C11__8S7529C13[3]),  3,4},
  {&(_tg__ZTV8S7529C128S7529C11__8S7529C13[5]),  5,8},
  {&(_tg__ZTV7S7529C48S7529C128S7529C11__A1__8S7529C13[5]),  5,8},
  {&(_tg__ZTV7S7529C3__7S7529C48S7529C128S7529C11__A1__8S7529C13[3]),  3,4},
  {&(_tg__ZTV7S7529C3__8S7529C128S7529C11__8S7529C13[3]),  3,4},
  {&(_tg__ZTV8S7529C11__8S7529C13[6]),  6,9},
  {&(_tg__ZTV7S7529C4__8S7529C11__8S7529C13[5]),  5,8},
  {&(_tg__ZTV8S7529C12__8S7529C11__8S7529C13[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S7529C13[];
extern  VTBL_ENTRY _ZTV8S7529C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C13[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7529C13D0Ev,_ZTv0_n28_N8S7529C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7529C13D0Ev,_ZThn84_N8S7529C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7529C13D1Ev,_ZTv0_n28_N8S7529C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7529C13D1Ev,_ZThn84_N8S7529C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7529C13 = {  "S7529C13", // class name
  bases_S7529C13, 13,
  &(vtc_S7529C13[0]), // expected_vtbl_contents
  &(vtt_S7529C13[0]), // expected_vtt_contents
  ABISELECT(1312,856), // object size
  NSPAIRA(_ZTI8S7529C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7529C13),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7529C13),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7529C14_nt  {
  void  mf7529c14(); // _ZN11S7529C14_nt9mf7529c14Ev
  virtual  ~S7529C14_nt(); // _ZN11S7529C14_ntD1Ev
  S7529C14_nt(); // tgen
};
//SIG(-1 S7529C14_nt) C1{ vd m}


void  S7529C14_nt ::mf7529c14(){}
 S7529C14_nt ::~S7529C14_nt(){ note_dtor("S7529C14_nt", this);}
S7529C14_nt ::S7529C14_nt(){ note_ctor("S7529C14_nt", this);} // tgen

//skip512 S7529C14_nt

#else // __cplusplus

extern void _ZN11S7529C14_ntC1Ev();
extern void _ZN11S7529C14_ntD1Ev();
Name_Map name_map_S7529C14_nt[] = {
  NSPAIR(_ZN11S7529C14_ntC1Ev),
  NSPAIR(_ZN11S7529C14_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S7529C14_nt[];
extern void _ZN11S7529C14_ntD1Ev();
extern void _ZN11S7529C14_ntD0Ev();
static  VTBL_ENTRY vtc_S7529C14_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S7529C14_nt[0]),
  (VTBL_ENTRY)&_ZN11S7529C14_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S7529C14_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S7529C14_nt[];
VTBL_ENTRY *P__ZTI11S7529C14_nt = _ZTI11S7529C14_nt; 
extern  VTBL_ENTRY _ZTV11S7529C14_nt[];
Class_Descriptor cd_S7529C14_nt = {  "S7529C14_nt", // class name
  0,0,//no base classes
  &(vtc_S7529C14_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S7529C14_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S7529C14_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  S7529C16  : S20997C6 , S7529C3 {
  ~S7529C16(); // tgen
  S7529C16(); // tgen
};
//SIG(-1 S7529C16) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S7529C16()
{
  extern Class_Descriptor cd_S7529C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7529C16, buf);
    S7529C16 *dp, &lv = *(dp=new (buf) S7529C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S7529C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7529C16)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S7529C16");
    check_base_class_offset(lv, (S7529C3*), 0, "S7529C16");
    test_class_info(&lv, &cd_S7529C16);
    dp->~S7529C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7529C16(Test_S7529C16, "S7529C16", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S7529C16C1Ev();
extern void _ZN8S7529C16D1Ev();
Name_Map name_map_S7529C16[] = {
  NSPAIR(_ZN8S7529C16C1Ev),
  NSPAIR(_ZN8S7529C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
static Base_Class bases_S7529C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7529C3,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7529C16[];
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY vtc_S7529C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C16[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern VTBL_ENTRY _ZTI8S7529C16[];
extern  VTBL_ENTRY _ZTV8S7529C16[];
Class_Descriptor cd_S7529C16 = {  "S7529C16", // class name
  bases_S7529C16, 2,
  &(vtc_S7529C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S7529C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7529C16),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7529C15  : S7529C10 , S7529C16 {
  virtual  ~S7529C15(); // _ZN8S7529C15D2Ev
  S7529C15(); // tgen
};
//SIG(-1 S7529C15) C1{ BC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} BC6{ BC4 BC3} vd}


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

static void Test_S7529C15()
{
  extern Class_Descriptor cd_S7529C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S7529C15, buf);
    S7529C15 *dp, &lv = *(dp=new (buf) S7529C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S7529C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7529C15)");
    check_base_class_offset(lv, (S7529C3*)(S7529C10*), 0, "S7529C15");
    check_base_class_offset(lv, (S20997C6*)(S7529C10*), ABISELECT(136,88), "S7529C15");
    check_base_class_offset(lv, (S4227C37*)(S7529C10*), 0, "S7529C15");
    check_base_class_offset(lv, (S7529C10*), 0, "S7529C15");
    check_base_class_offset(lv, (S20997C6*)(S7529C16*), ABISELECT(96,48), "S7529C15");
    check_base_class_offset(lv, (S7529C3*)(S7529C16*), ABISELECT(88,44), "S7529C15");
    check_base_class_offset(lv, (S7529C16*), ABISELECT(88,44), "S7529C15");
    test_class_info(&lv, &cd_S7529C15);
    dp->~S7529C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7529C15(Test_S7529C15, "S7529C15", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN8S7529C15C1Ev();
extern void _ZN8S7529C15D2Ev();
Name_Map name_map_S7529C15[] = {
  NSPAIR(_ZN8S7529C15C1Ev),
  NSPAIR(_ZN8S7529C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C10;
extern VTBL_ENTRY _ZTI8S7529C10[];
extern  VTBL_ENTRY _ZTV8S7529C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S7529C16;
extern VTBL_ENTRY _ZTI8S7529C16[];
extern  VTBL_ENTRY _ZTV8S7529C16[];
static Base_Class bases_S7529C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7529C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7529C10,    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_S20997C6,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7529C3,    ABISELECT(88,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7529C16,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7529C15[];
extern void _ZN7S7529C32v1Ev();
extern void _ZN8S7529C15D1Ev();
extern void _ZN8S7529C15D0Ev();
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY vtc_S7529C15[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C15[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN8S7529C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7529C15D0Ev,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7529C15[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern VTBL_ENTRY _ZTV8S7529C15[];
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7529C10__8S7529C15[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C10[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
static  VTT_ENTRY vtt_S7529C15[] = {
  {&(_ZTV8S7529C15[3]),  3,9},
  {&(_tg__ZTV8S7529C10__8S7529C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7529C15[];
extern  VTBL_ENTRY _ZTV8S7529C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C15[];
Class_Descriptor cd_S7529C15 = {  "S7529C15", // class name
  bases_S7529C15, 7,
  &(vtc_S7529C15[0]), // expected_vtbl_contents
  &(vtt_S7529C15[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI8S7529C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7529C15),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7529C15),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7529C1  : S7529C2 , virtual S7529C11 , virtual S7529C13 , virtual S7529C14_nt , S7529C15 {
  virtual  ~S7529C1(); // _ZN7S7529C1D2Ev
  S7529C1(); // tgen
};
//SIG(1 S7529C1) C1{ BC2{ VBC3{ v1} VBC4{ VBC5{ m FL[5]} VBC3 BC6{ m} vd} VBC7{ m FL[4]} VBC8{ VBC6 VBC4 v2} VBC9{ VBC3 FC10{ BC3 VBC5 BC6 Fp[10]}[9]} vd} VBC11{ VBC6 BC9 BC4 BC12{ BC4 vd}} VBC13{ VBC3 BC10 VBC11 vd} VBC14{ vd m} BC15{ BC10 BC16{ BC5 BC3} vd} vd}


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

static void Test_S7529C1()
{
  extern Class_Descriptor cd_S7529C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(332,436)];
    init_test(&cd_S7529C1, buf);
    S7529C1 *dp, &lv = *(dp=new (buf) S7529C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2648,1740), "sizeof(S7529C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7529C1)");
    check_base_class_offset(lv, (S7529C3*)(S7529C2*), 0, "S7529C1");
    /*is_ambiguous_... S7529C1::S7529C4 */ AMB_check_base_class_offset(lv, (S7529C3*)(S7529C4*), 0, "S7529C1");
    /*is_ambiguous_... S7529C1::S7529C9 */ AMB_check_base_class_offset(lv, (S7529C3*)(S7529C9*), 0, "S7529C1");
    check_base_class_offset(lv, (S7529C3*)(S7529C9*)(S7529C11*), 0, "S7529C1");
    /*is_ambiguous_... S7529C11::S7529C4 */ AMB_check_base_class_offset(lv, (S7529C3*)(S7529C4*)(S7529C11*), 0, "S7529C1");
    check_base_class_offset(lv, (S7529C3*)(S7529C4*)(S7529C12*)(S7529C11*), 0, "S7529C1");
    /*is_ambiguous_... S7529C13::S7529C3 */ AMB_check_base_class_offset(lv, (S7529C3*)(S7529C13*), 0, "S7529C1");
    /*is_ambiguous_... S7529C1::S7529C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7529C4*), ABISELECT(144,92), "S7529C1");
    /*is_ambiguous_... S7529C11::S7529C4 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7529C4*)(S7529C11*), ABISELECT(144,92), "S7529C1");
    check_base_class_offset(lv, (S20997C6*)(S7529C4*)(S7529C12*)(S7529C11*), ABISELECT(144,92), "S7529C1");
    check_base_class_offset(lv, (S20997C6*)(S7529C10*)(S7529C13*), ABISELECT(144,92), "S7529C1");
    check_base_class_offset(lv, (S20997C6*)(S7529C10*)(S7529C15*), ABISELECT(144,92), "S7529C1");
    /*is_ambiguous_... S7529C1::S7529C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7529C4*), 0, "S7529C1");
    check_base_class_offset(lv, (S7529C4*)(S7529C2*), 0, "S7529C1");
    check_base_class_offset(lv, (S7529C4*)(S7529C8*), 0, "S7529C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S7529C2*), ABISELECT(184,132), "S7529C1");
    /*is_ambiguous_... S7529C8::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7529C8*), ABISELECT(216,164), "S7529C1");
    /*is_ambiguous_... S7529C11::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7529C11*), ABISELECT(216,164), "S7529C1");
    check_base_class_offset(lv, (S7529C8*)(S7529C2*), 0, "S7529C1");
    check_base_class_offset(lv, (S7529C9*)(S7529C2*), ABISELECT(216,164), "S7529C1");
    check_base_class_offset(lv, (S7529C2*), 0, "S7529C1");
    check_base_class_offset(lv, (S7529C9*)(S7529C11*), ABISELECT(1376,924), "S7529C1");
    /*is_ambiguous_... S7529C11::S7529C4 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7529C4*)(S7529C11*), ABISELECT(2536,1684), "S7529C1");
    /*is_ambiguous_... S7529C11::S7529C4 */ AMB_check_base_class_offset(lv, (S7529C4*)(S7529C11*), ABISELECT(2536,1684), "S7529C1");
    check_base_class_offset(lv, (S4227C37*)(S7529C4*)(S7529C12*)(S7529C11*), ABISELECT(2544,1688), "S7529C1");
    check_base_class_offset(lv, (S7529C4*)(S7529C12*)(S7529C11*), ABISELECT(2544,1688), "S7529C1");
    check_base_class_offset(lv, (S7529C12*)(S7529C11*), ABISELECT(2544,1688), "S7529C1");
    check_base_class_offset(lv, (S7529C11*), ABISELECT(1376,924), "S7529C1");
    check_base_class_offset(lv, (S7529C11*)(S7529C13*), ABISELECT(1376,924), "S7529C1");
    check_base_class_offset(lv, (S7529C3*)(S7529C10*)(S7529C13*), ABISELECT(2552,1692), "S7529C1");
    check_base_class_offset(lv, (S4227C37*)(S7529C10*)(S7529C13*), ABISELECT(2552,1692), "S7529C1");
    check_base_class_offset(lv, (S7529C10*)(S7529C13*), ABISELECT(2552,1692), "S7529C1");
    check_base_class_offset(lv, (S7529C13*), ABISELECT(2552,1692), "S7529C1");
    check_base_class_offset(lv, (S7529C14_nt*), ABISELECT(2640,1736), "S7529C1");
    check_base_class_offset(lv, (S7529C3*)(S7529C10*)(S7529C15*), ABISELECT(8,4), "S7529C1");
    check_base_class_offset(lv, (S4227C37*)(S7529C10*)(S7529C15*), ABISELECT(8,4), "S7529C1");
    check_base_class_offset(lv, (S7529C10*)(S7529C15*), ABISELECT(8,4), "S7529C1");
    check_base_class_offset(lv, (S20997C6*)(S7529C16*)(S7529C15*), ABISELECT(104,52), "S7529C1");
    check_base_class_offset(lv, (S7529C3*)(S7529C16*)(S7529C15*), ABISELECT(96,48), "S7529C1");
    check_base_class_offset(lv, (S7529C16*)(S7529C15*), ABISELECT(96,48), "S7529C1");
    check_base_class_offset(lv, (S7529C15*), ABISELECT(8,4), "S7529C1");
    test_class_info(&lv, &cd_S7529C1);
    dp->~S7529C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7529C1(Test_S7529C1, "S7529C1", ABISELECT(2648,1740));

#else // __cplusplus

extern void _ZN7S7529C1C1Ev();
extern void _ZN7S7529C1D2Ev();
Name_Map name_map_S7529C1[] = {
  NSPAIR(_ZN7S7529C1C1Ev),
  NSPAIR(_ZN7S7529C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C4;
extern VTBL_ENTRY _ZTI7S7529C4[];
extern  VTBL_ENTRY _ZTV7S7529C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C4[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C8;
extern VTBL_ENTRY _ZTI7S7529C8[];
extern  VTBL_ENTRY _ZTV7S7529C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C8[];
extern Class_Descriptor cd_S7529C9;
extern VTBL_ENTRY _ZTI7S7529C9[];
extern  VTBL_ENTRY _ZTV7S7529C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C9[];
extern Class_Descriptor cd_S7529C2;
extern VTBL_ENTRY _ZTI7S7529C2[];
extern  VTBL_ENTRY _ZTV7S7529C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C2[];
extern Class_Descriptor cd_S7529C9;
extern VTBL_ENTRY _ZTI7S7529C9[];
extern  VTBL_ENTRY _ZTV7S7529C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C9[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C4;
extern VTBL_ENTRY _ZTI7S7529C4[];
extern  VTBL_ENTRY _ZTV7S7529C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C4;
extern VTBL_ENTRY _ZTI7S7529C4[];
extern  VTBL_ENTRY _ZTV7S7529C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C4[];
extern Class_Descriptor cd_S7529C12;
extern VTBL_ENTRY _ZTI8S7529C12[];
extern  VTBL_ENTRY _ZTV8S7529C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C12[];
extern Class_Descriptor cd_S7529C11;
extern VTBL_ENTRY _ZTI8S7529C11[];
extern  VTBL_ENTRY _ZTV8S7529C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C11[];
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C10;
extern VTBL_ENTRY _ZTI8S7529C10[];
extern  VTBL_ENTRY _ZTV8S7529C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C10[];
extern Class_Descriptor cd_S7529C13;
extern VTBL_ENTRY _ZTI8S7529C13[];
extern  VTBL_ENTRY _ZTV8S7529C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C13[];
extern Class_Descriptor cd_S7529C14_nt;
extern VTBL_ENTRY _ZTI11S7529C14_nt[];
extern  VTBL_ENTRY _ZTV11S7529C14_nt[];
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7529C10;
extern VTBL_ENTRY _ZTI8S7529C10[];
extern  VTBL_ENTRY _ZTV8S7529C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7529C3;
extern VTBL_ENTRY _ZTI7S7529C3[];
extern  VTBL_ENTRY _ZTV7S7529C3[];
extern Class_Descriptor cd_S7529C16;
extern VTBL_ENTRY _ZTI8S7529C16[];
extern  VTBL_ENTRY _ZTV8S7529C16[];
extern Class_Descriptor cd_S7529C15;
extern VTBL_ENTRY _ZTI8S7529C15[];
extern  VTBL_ENTRY _ZTV8S7529C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7529C15[];
static Base_Class bases_S7529C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7529C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7529C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S10258C6_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
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(216,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
    6, //immediately_derived
  0, 1},
  {&cd_S7529C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7529C9,    ABISELECT(216,164), //bcp->offset
    28, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7529C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7529C9,    ABISELECT(1376,924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2536,1684), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7529C4,    ABISELECT(2536,1684), //bcp->offset
    43, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2544,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7529C4,    ABISELECT(2544,1688), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7529C12,    ABISELECT(2544,1688), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7529C11,    ABISELECT(1376,924), //bcp->offset
    33, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7529C3,    ABISELECT(2552,1692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(2552,1692), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7529C10,    ABISELECT(2552,1692), //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
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7529C13,    ABISELECT(2552,1692), //bcp->offset
    59, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7529C14_nt,    ABISELECT(2640,1736), //bcp->offset
    70, //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
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7529C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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
    23, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7529C10,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    26, //immediately_derived
  0, 0},
  {&cd_S7529C3,    ABISELECT(96,48), //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
    17, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7529C16,    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
    18, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7529C15,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7529C1[];
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7529C1D1Ev,_ZTv0_n24_N7S7529C1D1Ev)();
extern void _ZN7S7529C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7529C1D0Ev,_ZTv0_n24_N7S7529C1D0Ev)();
extern void _ZN7S7529C1D0Ev() __attribute__((weak));
extern void _ZN7S7529C82v2Ev();
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZThn8_N7S7529C1D1Ev,_ZThn4_N7S7529C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S7529C1D0Ev,_ZThn4_N7S7529C1D0Ev)();
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTv0_n56_N7S7529C1D1Ev,_ZTv0_n28_N7S7529C1D1Ev)();
extern void ABISELECT(_ZThn1376_N7S7529C1D1Ev,_ZThn924_N7S7529C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7529C1D0Ev,_ZTv0_n28_N7S7529C1D0Ev)();
extern void ABISELECT(_ZThn1376_N7S7529C1D0Ev,_ZThn924_N7S7529C1D0Ev)() __attribute__((weak));
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S7529C1D1Ev,_ZTvn760_n28_N7S7529C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S7529C1D0Ev,_ZTvn760_n28_N7S7529C1D0Ev)();
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S7529C1D1Ev,_ZTvn764_n28_N7S7529C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S7529C1D0Ev,_ZTvn764_n28_N7S7529C1D0Ev)();
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTv0_n64_N7S7529C1D1Ev,_ZTv0_n32_N7S7529C1D1Ev)();
extern void ABISELECT(_ZThn2552_N7S7529C1D1Ev,_ZThn1692_N7S7529C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N7S7529C1D0Ev,_ZTv0_n32_N7S7529C1D0Ev)();
extern void ABISELECT(_ZThn2552_N7S7529C1D0Ev,_ZThn1692_N7S7529C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7529C1D1Ev,_ZTv0_n12_N7S7529C1D1Ev)();
extern void ABISELECT(_ZThn2640_N7S7529C1D1Ev,_ZThn1736_N7S7529C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7529C1D0Ev,_ZTv0_n12_N7S7529C1D0Ev)();
extern void ABISELECT(_ZThn2640_N7S7529C1D0Ev,_ZThn1736_N7S7529C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7529C1[] = {
  ABISELECT(2640,1736),
  ABISELECT(2552,1692),
  ABISELECT(1376,924),
  ABISELECT(216,164),
  0,
  ABISELECT(184,132),
  0,
  0,
  ABISELECT(216,164),
  0,
  0,
  ABISELECT(144,92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C1[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7529C1D1Ev,_ZTv0_n24_N7S7529C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7529C1D0Ev,_ZTv0_n24_N7S7529C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7529C82v2Ev,
  ABISELECT(136,88),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7529C1[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7529C1D1Ev,_ZThn4_N7S7529C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S7529C1D0Ev,_ZThn4_N7S7529C1D0Ev),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S7529C1[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  ABISELECT(-216,-164),
  ABISELECT(-216,-164),
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI7S7529C1[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  ABISELECT(-1376,-924),
  ABISELECT(-1232,-832),
  ABISELECT(-1160,-760),
  ABISELECT(-1376,-924),
  ABISELECT(-1376,-924),
  ABISELECT(-1376,-924),
  (VTBL_ENTRY)&(_ZTI7S7529C1[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7529C1D1Ev,_ZTv0_n28_N7S7529C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7529C1D0Ev,_ZTv0_n28_N7S7529C1D0Ev),
  ABISELECT(-2536,-1684),
  ABISELECT(-2392,-1592),
  ABISELECT(-2536,-1684),
  ABISELECT(-2536,-1684),
  (VTBL_ENTRY)&(_ZTI7S7529C1[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7529C1D1Ev,_ZTvn760_n28_N7S7529C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7529C1D0Ev,_ZTvn760_n28_N7S7529C1D0Ev),
  ABISELECT(-2544,-1688),
  ABISELECT(-2400,-1596),
  ABISELECT(-2544,-1688),
  ABISELECT(-2544,-1688),
  (VTBL_ENTRY)&(_ZTI7S7529C1[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7529C1D1Ev,_ZTvn764_n28_N7S7529C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7529C1D0Ev,_ZTvn764_n28_N7S7529C1D0Ev),
  ABISELECT(-2552,-1692),
  0,
  ABISELECT(-2336,-1528),
  ABISELECT(-1176,-768),
  ABISELECT(-2552,-1692),
  ABISELECT(-2408,-1600),
  ABISELECT(-2552,-1692),
  (VTBL_ENTRY)&(_ZTI7S7529C1[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7529C1D1Ev,_ZTv0_n32_N7S7529C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N7S7529C1D0Ev,_ZTv0_n32_N7S7529C1D0Ev),
  ABISELECT(-2640,-1736),
  ABISELECT(-2640,-1736),
  (VTBL_ENTRY)&(_ZTI7S7529C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7529C1D1Ev,_ZTv0_n12_N7S7529C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7529C1D0Ev,_ZTv0_n12_N7S7529C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7529C1[];
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7529C2D1Ev,_ZTv0_n24_N7S7529C2D1Ev)();
extern void _ZN7S7529C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7529C2D0Ev,_ZTv0_n24_N7S7529C2D0Ev)();
extern void _ZN7S7529C2D0Ev() __attribute__((weak));
extern void _ZN7S7529C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C2__7S7529C1[] = {
  ABISELECT(216,164),
  0,
  ABISELECT(184,132),
  0,
  0,
  ABISELECT(216,164),
  0,
  0,
  ABISELECT(144,92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C2[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7529C2D1Ev,_ZTv0_n24_N7S7529C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7529C2D0Ev,_ZTv0_n24_N7S7529C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7529C82v2Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C9__7S7529C2__7S7529C1[] = {
  ABISELECT(-216,-164),
  ABISELECT(-216,-164),
  ABISELECT(-216,-164),
  (VTBL_ENTRY)&(_ZTI7S7529C2[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN8S7529C15D1Ev();
extern void _ZN8S7529C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7529C15__7S7529C1[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C15[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN8S7529C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7529C15D0Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7529C108S7529C15__A1__7S7529C1[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C10[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C4D1Ev();
extern void _ZN7S7529C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C4__7S7529C1[] = {
  0,
  ABISELECT(144,92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D0Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7529C8D1Ev,_ZTv0_n24_N7S7529C8D1Ev)();
extern void _ZN7S7529C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7529C8D0Ev,_ZTv0_n24_N7S7529C8D0Ev)();
extern void _ZN7S7529C8D0Ev() __attribute__((weak));
extern void _ZN7S7529C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C8__7S7529C1[] = {
  0,
  ABISELECT(216,164),
  0,
  0,
  ABISELECT(144,92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C8[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7529C8D1Ev,_ZTv0_n24_N7S7529C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7529C8D0Ev,_ZTv0_n24_N7S7529C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7529C82v2Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C9__7S7529C1[] = {
  ABISELECT(-216,-164),
  ABISELECT(-216,-164),
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C9[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__7S7529C9__7S7529C1[] = {
  0,
  ABISELECT(216,164),
  (VTBL_ENTRY)&(_ZTI7S7529C9[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN8S7529C11D1Ev();
extern void _ZN8S7529C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7529C11__7S7529C1[] = {
  ABISELECT(-1232,-832),
  ABISELECT(-1160,-760),
  ABISELECT(-1376,-924),
  ABISELECT(-1376,-924),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C11[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN8S7529C11D1Ev,
  (VTBL_ENTRY)&_ZN8S7529C11D0Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C98S7529C11__A1__7S7529C1[] = {
  ABISELECT(-1376,-924),
  ABISELECT(-1376,-924),
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C9[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__7S7529C98S7529C11__A1__7S7529C1[] = {
  0,
  ABISELECT(1376,924),
  (VTBL_ENTRY)&(_ZTI7S7529C9[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C4D1Ev();
extern void _ZN7S7529C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C48S7529C11__A1__7S7529C1[] = {
  ABISELECT(-2536,-1684),
  ABISELECT(-2392,-1592),
  ABISELECT(-2536,-1684),
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D0Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__7S7529C48S7529C11__A1__7S7529C1[] = {
  0,
  ABISELECT(2536,1684),
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN8S7529C12D1Ev();
extern void _ZN8S7529C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7529C128S7529C11__7S7529C1[] = {
  ABISELECT(-2544,-1688),
  ABISELECT(-2400,-1596),
  ABISELECT(-2544,-1688),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C12[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN8S7529C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7529C12D0Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN7S7529C4D1Ev();
extern void _ZN7S7529C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C48S7529C128S7529C11__A2__7S7529C1[] = {
  ABISELECT(-2544,-1688),
  ABISELECT(-2400,-1596),
  ABISELECT(-2544,-1688),
  0,
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7529C4D0Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__7S7529C48S7529C128S7529C11__A2__7S7529C1[] = {
  0,
  ABISELECT(2544,1688),
  (VTBL_ENTRY)&(_ZTI7S7529C4[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__8S7529C128S7529C11__7S7529C1[] = {
  0,
  ABISELECT(2544,1688),
  (VTBL_ENTRY)&(_ZTI8S7529C12[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__8S7529C11__7S7529C1[] = {
  0,
  ABISELECT(1376,924),
  (VTBL_ENTRY)&(_ZTI8S7529C11[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZThn1160_N8S7529C11D1Ev,_ZThn760_N8S7529C11D1Ev)();
extern void ABISELECT(_ZThn1160_N8S7529C11D0Ev,_ZThn760_N8S7529C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7529C4__8S7529C11__7S7529C1[] = {
  ABISELECT(-2536,-1684),
  ABISELECT(-2392,-1592),
  ABISELECT(-2536,-1684),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S7529C11[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7529C11D1Ev,_ZThn760_N8S7529C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7529C11D0Ev,_ZThn760_N8S7529C11D0Ev),
};
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZThn1168_N8S7529C11D1Ev,_ZThn764_N8S7529C11D1Ev)();
extern void ABISELECT(_ZThn1168_N8S7529C11D0Ev,_ZThn764_N8S7529C11D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7529C12__8S7529C11__7S7529C1[] = {
  ABISELECT(-2544,-1688),
  ABISELECT(-2400,-1596),
  ABISELECT(-2544,-1688),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S7529C11[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7529C11D1Ev,_ZThn764_N8S7529C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7529C11D0Ev,_ZThn764_N8S7529C11D0Ev),
};
extern void _ZN7S7529C32v1Ev();
extern void _ZN8S7529C13D1Ev();
extern void _ZN8S7529C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7529C13__7S7529C1[] = {
  ABISELECT(-2336,-1528),
  ABISELECT(-1176,-768),
  ABISELECT(-2552,-1692),
  ABISELECT(-2408,-1600),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C13[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&_ZN8S7529C13D1Ev,
  (VTBL_ENTRY)&_ZN8S7529C13D0Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7529C108S7529C13__7S7529C1[] = {
  ABISELECT(-2408,-1600),
  0,
  (VTBL_ENTRY)&(_ZTI8S7529C10[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7529C3__8S7529C13__7S7529C1[] = {
  0,
  ABISELECT(2552,1692),
  (VTBL_ENTRY)&(_ZTI8S7529C13[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
};
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S7529C13D1Ev,_ZTv0_n28_N8S7529C13D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S7529C13D0Ev,_ZTv0_n28_N8S7529C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7529C11__8S7529C13__7S7529C1[] = {
  ABISELECT(1176,768),
  ABISELECT(-1232,-832),
  ABISELECT(-1160,-760),
  ABISELECT(-1376,-924),
  ABISELECT(-1376,-924),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI8S7529C13[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7529C13D1Ev,_ZTv0_n28_N8S7529C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7529C13D0Ev,_ZTv0_n28_N8S7529C13D0Ev),
};
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S7529C13D1Ev,_ZTvn760_n28_N8S7529C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S7529C13D0Ev,_ZTvn760_n28_N8S7529C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7529C48S7529C11__8S7529C13__7S7529C1[] = {
  ABISELECT(-2536,-1684),
  ABISELECT(-2392,-1592),
  ABISELECT(-2536,-1684),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S7529C13[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S7529C13D1Ev,_ZTvn760_n28_N8S7529C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S7529C13D0Ev,_ZTvn760_n28_N8S7529C13D0Ev),
};
extern void _ZN7S7529C32v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S7529C13D1Ev,_ZTvn764_n28_N8S7529C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S7529C13D0Ev,_ZTvn764_n28_N8S7529C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7529C128S7529C11__8S7529C13__7S7529C1[] = {
  ABISELECT(-2544,-1688),
  ABISELECT(-2400,-1596),
  ABISELECT(-2544,-1688),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S7529C13[0]),
  (VTBL_ENTRY)&_ZN7S7529C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S7529C13D1Ev,_ZTvn764_n28_N8S7529C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S7529C13D0Ev,_ZTvn764_n28_N8S7529C13D0Ev),
};
static  VTT_ENTRY vtt_S7529C1[] = {
  {&(_ZTV7S7529C1[15]),  15,75},
  {&(_tg__ZTV7S7529C2__7S7529C1[12]),  12,16},
  {&(_tg__ZTV7S7529C2__7S7529C1[12]),  12,16},
  {&(_tg__ZTV7S7529C2__7S7529C1[12]),  12,16},
  {&(_tg__ZTV7S7529C2__7S7529C1[12]),  12,16},
  {&(_tg__ZTV7S7529C9__7S7529C2__7S7529C1[4]),  4,5},
  {&(_tg__ZTV8S7529C15__7S7529C1[3]),  3,6},
  {&(_tg__ZTV8S7529C108S7529C15__A1__7S7529C1[3]),  3,4},
  {&(_ZTV7S7529C1[15]),  15,75},
  {&(_ZTV7S7529C1[15]),  15,75},
  {&(_ZTV7S7529C1[15]),  15,75},
  {&(_ZTV7S7529C1[32]),  32,75},
  {&(_ZTV7S7529C1[40]),  40,75},
  {&(_ZTV7S7529C1[48]),  48,75},
  {&(_ZTV7S7529C1[56]),  56,75},
  {&(_ZTV7S7529C1[67]),  67,75},
  {&(_ZTV7S7529C1[73]),  73,75},
  {&(_ZTV7S7529C1[22]),  22,75},
  {&(_tg__ZTV7S7529C4__7S7529C1[5]),  5,8},
  {&(_tg__ZTV7S7529C4__7S7529C1[5]),  5,8},
  {&(_tg__ZTV7S7529C8__7S7529C1[8]),  8,12},
  {&(_tg__ZTV7S7529C8__7S7529C1[8]),  8,12},
  {&(_tg__ZTV7S7529C8__7S7529C1[8]),  8,12},
  {&(_tg__ZTV7S7529C9__7S7529C1[4]),  4,5},
  {&(_tg__ZTV7S7529C3__7S7529C9__7S7529C1[3]),  3,4},
  {&(_tg__ZTV8S7529C11__7S7529C1[6]),  6,9},
  {&(_tg__ZTV7S7529C98S7529C11__A1__7S7529C1[4]),  4,5},
  {&(_tg__ZTV7S7529C3__7S7529C98S7529C11__A1__7S7529C1[3]),  3,4},
  {&(_tg__ZTV7S7529C48S7529C11__A1__7S7529C1[5]),  5,8},
  {&(_tg__ZTV7S7529C3__7S7529C48S7529C11__A1__7S7529C1[3]),  3,4},
  {&(_tg__ZTV8S7529C128S7529C11__7S7529C1[5]),  5,8},
  {&(_tg__ZTV7S7529C48S7529C128S7529C11__A2__7S7529C1[5]),  5,8},
  {&(_tg__ZTV7S7529C3__7S7529C48S7529C128S7529C11__A2__7S7529C1[3]),  3,4},
  {&(_tg__ZTV7S7529C3__8S7529C128S7529C11__7S7529C1[3]),  3,4},
  {&(_tg__ZTV7S7529C3__8S7529C11__7S7529C1[3]),  3,4},
  {&(_tg__ZTV7S7529C4__8S7529C11__7S7529C1[5]),  5,8},
  {&(_tg__ZTV8S7529C12__8S7529C11__7S7529C1[5]),  5,8},
  {&(_tg__ZTV8S7529C13__7S7529C1[6]),  6,9},
  {&(_tg__ZTV8S7529C108S7529C13__7S7529C1[3]),  3,4},
  {&(_tg__ZTV7S7529C3__8S7529C13__7S7529C1[3]),  3,4},
  {&(_tg__ZTV8S7529C11__8S7529C13__7S7529C1[7]),  7,10},
  {&(_tg__ZTV7S7529C48S7529C11__8S7529C13__7S7529C1[5]),  5,8},
  {&(_tg__ZTV8S7529C128S7529C11__8S7529C13__7S7529C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7529C1[];
extern  VTBL_ENTRY _ZTV7S7529C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7529C1[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7529C8D0Ev,_ZTv0_n24_N7S7529C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7529C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7529C8D1Ev,_ZTv0_n24_N7S7529C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7529C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7529C2D0Ev,_ZTv0_n24_N7S7529C2D0Ev), // 
  (VTBL_ENTRY)_ZN7S7529C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7529C2D1Ev,_ZTv0_n24_N7S7529C2D1Ev), // 
  (VTBL_ENTRY)_ZN7S7529C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7529C1D0Ev,_ZTv0_n12_N7S7529C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N7S7529C1D0Ev,_ZThn1736_N7S7529C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7529C1D1Ev,_ZTv0_n12_N7S7529C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2640_N7S7529C1D1Ev,_ZThn1736_N7S7529C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7529C1D0Ev,_ZTv0_n32_N7S7529C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2552_N7S7529C1D0Ev,_ZThn1692_N7S7529C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N7S7529C1D1Ev,_ZTv0_n32_N7S7529C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn2552_N7S7529C1D1Ev,_ZThn1692_N7S7529C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7529C1D0Ev,_ZTv0_n28_N7S7529C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N7S7529C1D0Ev,_ZThn924_N7S7529C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7529C1D1Ev,_ZTv0_n28_N7S7529C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1376_N7S7529C1D1Ev,_ZThn924_N7S7529C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7529C1D0Ev,_ZTv0_n24_N7S7529C1D0Ev), // 
  (VTBL_ENTRY)_ZN7S7529C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7529C1D1Ev,_ZTv0_n24_N7S7529C1D1Ev), // 
  (VTBL_ENTRY)_ZN7S7529C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7529C1 = {  "S7529C1", // class name
  bases_S7529C1, 28,
  &(vtc_S7529C1[0]), // expected_vtbl_contents
  &(vtt_S7529C1[0]), // expected_vtt_contents
  ABISELECT(2648,1740), // object size
  NSPAIRA(_ZTI7S7529C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7529C1),75, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7529C1),43, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2989C3  {
  virtual void  v1(); // _ZN7S2989C32v1Ev
  virtual void  v2(); // _ZN7S2989C32v2Ev
  virtual void  v3(); // _ZN7S2989C32v3Ev
  virtual void  v4(); // _ZN7S2989C32v4Ev
  ~S2989C3(); // tgen
  S2989C3(); // tgen
};
//SIG(-1 S2989C3) C1{ v1 v2 v3 v4}


void  S2989C3 ::v1(){vfunc_called(this, "_ZN7S2989C32v1Ev");}
void  S2989C3 ::v2(){vfunc_called(this, "_ZN7S2989C32v2Ev");}
void  S2989C3 ::v3(){vfunc_called(this, "_ZN7S2989C32v3Ev");}
void  S2989C3 ::v4(){vfunc_called(this, "_ZN7S2989C32v4Ev");}
S2989C3 ::~S2989C3(){ note_dtor("S2989C3", this);} // tgen
S2989C3 ::S2989C3(){ note_ctor("S2989C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S2989C3C1Ev();
extern void _ZN7S2989C3D1Ev();
Name_Map name_map_S2989C3[] = {
  NSPAIR(_ZN7S2989C3C1Ev),
  NSPAIR(_ZN7S2989C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2989C3[];
extern void _ZN7S2989C32v1Ev();
extern void _ZN7S2989C32v2Ev();
extern void _ZN7S2989C32v3Ev();
extern void _ZN7S2989C32v4Ev();
static  VTBL_ENTRY vtc_S2989C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2989C3[0]),
  (VTBL_ENTRY)&_ZN7S2989C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2989C32v2Ev,
  (VTBL_ENTRY)&_ZN7S2989C32v3Ev,
  (VTBL_ENTRY)&_ZN7S2989C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S2989C3[];
extern  VTBL_ENTRY _ZTV7S2989C3[];
Class_Descriptor cd_S2989C3 = {  "S2989C3", // class name
  0,0,//no base classes
  &(vtc_S2989C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2989C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2989C3),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  S2989C4  {
  virtual void  v5(); // _ZN7S2989C42v5Ev
  ~S2989C4(); // tgen
  S2989C4(); // tgen
};
//SIG(-1 S2989C4) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S2989C4C1Ev();
extern void _ZN7S2989C4D1Ev();
Name_Map name_map_S2989C4[] = {
  NSPAIR(_ZN7S2989C4C1Ev),
  NSPAIR(_ZN7S2989C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2989C4[];
extern void _ZN7S2989C42v5Ev();
static  VTBL_ENTRY vtc_S2989C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2989C4[0]),
  (VTBL_ENTRY)&_ZN7S2989C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2989C4[];
extern  VTBL_ENTRY _ZTV7S2989C4[];
Class_Descriptor cd_S2989C4 = {  "S2989C4", // class name
  0,0,//no base classes
  &(vtc_S2989C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2989C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2989C4),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  S2989C2  : S2989C3 , S2989C4 {
  void *s2989c2f0;
  int s2989c2f1;
  ::S3155C5 s2989c2f2;
  void *s2989c2f3;
  virtual void  v6(); // _ZN7S2989C22v6Ev
  virtual void  v7(); // _ZN7S2989C22v7Ev
  virtual void  v8(); // _ZN7S2989C22v8Ev
  virtual void  v9(); // _ZN7S2989C22v9Ev
  virtual void  v10(); // _ZN7S2989C23v10Ev
  ~S2989C2(); // tgen
  S2989C2(); // tgen
};
//SIG(-1 S2989C2) C1{ BC2{ v6 v7 v8 v9} BC3{ v10} v1 v2 v3 v4 v5 Fp Fi FC4{ Fp[2] FC5{ BC6{ m FC7{ BC8{ m Fp Fi[2]}} Fp Fi}} FC9{ BC10{ m FC11{ BC8} Fp Fi}} FC12{ BC10} FC13{ BC10} FC14{ BC6}} Fp}


void  S2989C2 ::v6(){vfunc_called(this, "_ZN7S2989C22v6Ev");}
void  S2989C2 ::v7(){vfunc_called(this, "_ZN7S2989C22v7Ev");}
void  S2989C2 ::v8(){vfunc_called(this, "_ZN7S2989C22v8Ev");}
void  S2989C2 ::v9(){vfunc_called(this, "_ZN7S2989C22v9Ev");}
void  S2989C2 ::v10(){vfunc_called(this, "_ZN7S2989C23v10Ev");}
S2989C2 ::~S2989C2(){ note_dtor("S2989C2", this);} // tgen
S2989C2 ::S2989C2(){ note_ctor("S2989C2", this);} // tgen

static void Test_S2989C2()
{
  extern Class_Descriptor cd_S2989C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,33)];
    init_test(&cd_S2989C2, buf);
    S2989C2 *dp, &lv = *(dp=new (buf) S2989C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,128), "sizeof(S2989C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2989C2)");
    check_base_class_offset(lv, (S2989C3*), 0, "S2989C2");
    check_base_class_offset(lv, (S2989C4*), ABISELECT(8,4), "S2989C2");
    check_field_offset(lv, s2989c2f0, ABISELECT(16,8), "S2989C2.s2989c2f0");
    check_field_offset(lv, s2989c2f1, ABISELECT(24,12), "S2989C2.s2989c2f1");
    check_field_offset(lv, s2989c2f2, ABISELECT(32,16), "S2989C2.s2989c2f2");
    check_field_offset(lv, s2989c2f3, ABISELECT(208,124), "S2989C2.s2989c2f3");
    test_class_info(&lv, &cd_S2989C2);
    dp->~S2989C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2989C2(Test_S2989C2, "S2989C2", ABISELECT(216,128));

#else // __cplusplus

extern void _ZN7S2989C2C1Ev();
extern void _ZN7S2989C2D1Ev();
Name_Map name_map_S2989C2[] = {
  NSPAIR(_ZN7S2989C2C1Ev),
  NSPAIR(_ZN7S2989C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2989C3;
extern VTBL_ENTRY _ZTI7S2989C3[];
extern  VTBL_ENTRY _ZTV7S2989C3[];
extern Class_Descriptor cd_S2989C4;
extern VTBL_ENTRY _ZTI7S2989C4[];
extern  VTBL_ENTRY _ZTV7S2989C4[];
static Base_Class bases_S2989C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2989C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2989C4,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2989C2[];
extern void _ZN7S2989C32v1Ev();
extern void _ZN7S2989C32v2Ev();
extern void _ZN7S2989C32v3Ev();
extern void _ZN7S2989C32v4Ev();
extern void _ZN7S2989C22v6Ev();
extern void _ZN7S2989C22v7Ev();
extern void _ZN7S2989C22v8Ev();
extern void _ZN7S2989C22v9Ev();
extern void _ZN7S2989C23v10Ev();
extern void _ZN7S2989C42v5Ev();
static  VTBL_ENTRY vtc_S2989C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2989C2[0]),
  (VTBL_ENTRY)&_ZN7S2989C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2989C32v2Ev,
  (VTBL_ENTRY)&_ZN7S2989C32v3Ev,
  (VTBL_ENTRY)&_ZN7S2989C32v4Ev,
  (VTBL_ENTRY)&_ZN7S2989C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2989C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2989C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2989C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2989C23v10Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2989C2[0]),
  (VTBL_ENTRY)&_ZN7S2989C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2989C2[];
extern  VTBL_ENTRY _ZTV7S2989C2[];
Class_Descriptor cd_S2989C2 = {  "S2989C2", // class name
  bases_S2989C2, 2,
  &(vtc_S2989C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,128), // object size
  NSPAIRA(_ZTI7S2989C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2989C2),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  S2989C1  : S2989C2 {
  ~S2989C1(); // tgen
  S2989C1(); // tgen
};
//SIG(1 S2989C1) C1{ BC2{ BC3{ v1 v2 v3 v4} BC4{ v5} v6 v7 v8 v9 v10 Fp Fi FC5{ Fp[2] FC6{ BC7{ m FC8{ BC9{ m Fp Fi[2]}} Fp Fi}} FC10{ BC11{ m FC12{ BC9} Fp Fi}} FC13{ BC11} FC14{ BC11} FC15{ BC7}} Fp}}


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

static void Test_S2989C1()
{
  extern Class_Descriptor cd_S2989C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,33)];
    init_test(&cd_S2989C1, buf);
    S2989C1 *dp, &lv = *(dp=new (buf) S2989C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,128), "sizeof(S2989C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2989C1)");
    check_base_class_offset(lv, (S2989C3*)(S2989C2*), 0, "S2989C1");
    check_base_class_offset(lv, (S2989C4*)(S2989C2*), ABISELECT(8,4), "S2989C1");
    check_base_class_offset(lv, (S2989C2*), 0, "S2989C1");
    test_class_info(&lv, &cd_S2989C1);
    dp->~S2989C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2989C1(Test_S2989C1, "S2989C1", ABISELECT(216,128));

#else // __cplusplus

extern void _ZN7S2989C1C1Ev();
extern void _ZN7S2989C1D1Ev();
Name_Map name_map_S2989C1[] = {
  NSPAIR(_ZN7S2989C1C1Ev),
  NSPAIR(_ZN7S2989C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2989C3;
extern VTBL_ENTRY _ZTI7S2989C3[];
extern  VTBL_ENTRY _ZTV7S2989C3[];
extern Class_Descriptor cd_S2989C4;
extern VTBL_ENTRY _ZTI7S2989C4[];
extern  VTBL_ENTRY _ZTV7S2989C4[];
extern Class_Descriptor cd_S2989C2;
extern VTBL_ENTRY _ZTI7S2989C2[];
extern  VTBL_ENTRY _ZTV7S2989C2[];
static Base_Class bases_S2989C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2989C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2989C4,    ABISELECT(8,4), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S2989C2,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2989C1[];
extern void _ZN7S2989C32v1Ev();
extern void _ZN7S2989C32v2Ev();
extern void _ZN7S2989C32v3Ev();
extern void _ZN7S2989C32v4Ev();
extern void _ZN7S2989C22v6Ev();
extern void _ZN7S2989C22v7Ev();
extern void _ZN7S2989C22v8Ev();
extern void _ZN7S2989C22v9Ev();
extern void _ZN7S2989C23v10Ev();
extern void _ZN7S2989C42v5Ev();
static  VTBL_ENTRY vtc_S2989C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2989C1[0]),
  (VTBL_ENTRY)&_ZN7S2989C32v1Ev,
  (VTBL_ENTRY)&_ZN7S2989C32v2Ev,
  (VTBL_ENTRY)&_ZN7S2989C32v3Ev,
  (VTBL_ENTRY)&_ZN7S2989C32v4Ev,
  (VTBL_ENTRY)&_ZN7S2989C22v6Ev,
  (VTBL_ENTRY)&_ZN7S2989C22v7Ev,
  (VTBL_ENTRY)&_ZN7S2989C22v8Ev,
  (VTBL_ENTRY)&_ZN7S2989C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2989C23v10Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S2989C1[0]),
  (VTBL_ENTRY)&_ZN7S2989C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S2989C1[];
extern  VTBL_ENTRY _ZTV7S2989C1[];
Class_Descriptor cd_S2989C1 = {  "S2989C1", // class name
  bases_S2989C1, 3,
  &(vtc_S2989C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(216,128), // object size
  NSPAIRA(_ZTI7S2989C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2989C1),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S21125C5C1Ev();
extern void _ZN8S21125C5D1Ev();
Name_Map name_map_S21125C5[] = {
  NSPAIR(_ZN8S21125C5C1Ev),
  NSPAIR(_ZN8S21125C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21125C5[];
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY vtc_S21125C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C5[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
Class_Descriptor cd_S21125C5 = {  "S21125C5", // class name
  0,0,//no base classes
  &(vtc_S21125C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21125C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21125C5),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  S21125C6  : S21125C5 , virtual S20997C6 , S4227C37 {
  void *s21125c6f0[10];
  ~S21125C6(); // tgen
  S21125C6(); // tgen
};
//SIG(-1 S21125C6) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S21125C6()
{
  extern Class_Descriptor cd_S21125C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S21125C6, buf);
    S21125C6 *dp, &lv = *(dp=new (buf) S21125C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S21125C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21125C6)");
    check_base_class_offset(lv, (S21125C5*), 0, "S21125C6");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S21125C6");
    check_base_class_offset(lv, (S4227C37*), 0, "S21125C6");
    check_field_offset(lv, s21125c6f0, ABISELECT(8,4), "S21125C6.s21125c6f0");
    test_class_info(&lv, &cd_S21125C6);
    dp->~S21125C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C6(Test_S21125C6, "S21125C6", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN8S21125C6C1Ev();
extern void _ZN8S21125C6D1Ev();
Name_Map name_map_S21125C6[] = {
  NSPAIR(_ZN8S21125C6C1Ev),
  NSPAIR(_ZN8S21125C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S21125C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21125C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21125C6[];
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY vtc_S21125C6[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C6[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S21125C6[];
static  VTT_ENTRY vtt_S21125C6[] = {
  {&(_ZTV8S21125C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21125C6[];
extern  VTBL_ENTRY _ZTV8S21125C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C6[];
Class_Descriptor cd_S21125C6 = {  "S21125C6", // class name
  bases_S21125C6, 3,
  &(vtc_S21125C6[0]), // expected_vtbl_contents
  &(vtt_S21125C6[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI8S21125C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21125C6),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21125C6),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  S21125C10  : virtual S21125C5 {
  ::S21125C6 s21125c10f0[9];
  ~S21125C10(); // tgen
  S21125C10(); // tgen
};
//SIG(-1 S21125C10) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S21125C10()
{
  extern Class_Descriptor cd_S21125C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S21125C10, buf);
    S21125C10 *dp, &lv = *(dp=new (buf) S21125C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S21125C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21125C10)");
    check_base_class_offset(lv, (S21125C5*), 0, "S21125C10");
    check_field_offset(lv, s21125c10f0, ABISELECT(8,4), "S21125C10.s21125c10f0");
    test_class_info(&lv, &cd_S21125C10);
    dp->~S21125C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C10(Test_S21125C10, "S21125C10", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN9S21125C10C1Ev();
extern void _ZN9S21125C10D1Ev();
Name_Map name_map_S21125C10[] = {
  NSPAIR(_ZN9S21125C10C1Ev),
  NSPAIR(_ZN9S21125C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
static Base_Class bases_S21125C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21125C5,    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 _ZTI9S21125C10[];
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY vtc_S21125C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S21125C10[];
static  VTT_ENTRY vtt_S21125C10[] = {
  {&(_ZTV9S21125C10[4]),  4,5},
  {&(_ZTV9S21125C10[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S21125C10[];
extern  VTBL_ENTRY _ZTV9S21125C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C10[];
Class_Descriptor cd_S21125C10 = {  "S21125C10", // class name
  bases_S21125C10, 1,
  &(vtc_S21125C10[0]), // expected_vtbl_contents
  &(vtt_S21125C10[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI9S21125C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21125C10),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21125C10),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  S21125C11  : virtual S20997C6 , virtual S21125C5 , S4227C37 {
  virtual  ~S21125C11(); // _ZN9S21125C11D2Ev
  S21125C11(); // tgen
};
//SIG(-1 S21125C11) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S21125C11()
{
  extern Class_Descriptor cd_S21125C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S21125C11, buf);
    S21125C11 *dp, &lv = *(dp=new (buf) S21125C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S21125C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21125C11)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S21125C11");
    check_base_class_offset(lv, (S21125C5*), 0, "S21125C11");
    check_base_class_offset(lv, (S4227C37*), 0, "S21125C11");
    test_class_info(&lv, &cd_S21125C11);
    dp->~S21125C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C11(Test_S21125C11, "S21125C11", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S21125C11C1Ev();
extern void _ZN9S21125C11D2Ev();
Name_Map name_map_S21125C11[] = {
  NSPAIR(_ZN9S21125C11C1Ev),
  NSPAIR(_ZN9S21125C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S21125C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21125C5,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21125C11[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY vtc_S21125C11[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern VTBL_ENTRY _ZTV9S21125C11[];
static  VTT_ENTRY vtt_S21125C11[] = {
  {&(_ZTV9S21125C11[5]),  5,8},
  {&(_ZTV9S21125C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
Class_Descriptor cd_S21125C11 = {  "S21125C11", // class name
  bases_S21125C11, 3,
  &(vtc_S21125C11[0]), // expected_vtbl_contents
  &(vtt_S21125C11[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S21125C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21125C11),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21125C11),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  S21125C12  : S21125C11 {
  virtual  ~S21125C12(); // _ZN9S21125C12D2Ev
  S21125C12(); // tgen
};
//SIG(-1 S21125C12) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S21125C12()
{
  extern Class_Descriptor cd_S21125C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S21125C12, buf);
    S21125C12 *dp, &lv = *(dp=new (buf) S21125C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S21125C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21125C12)");
    check_base_class_offset(lv, (S20997C6*)(S21125C11*), ABISELECT(8,4), "S21125C12");
    check_base_class_offset(lv, (S21125C5*)(S21125C11*), 0, "S21125C12");
    check_base_class_offset(lv, (S4227C37*)(S21125C11*), 0, "S21125C12");
    check_base_class_offset(lv, (S21125C11*), 0, "S21125C12");
    test_class_info(&lv, &cd_S21125C12);
    dp->~S21125C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C12(Test_S21125C12, "S21125C12", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S21125C12C1Ev();
extern void _ZN9S21125C12D2Ev();
Name_Map name_map_S21125C12[] = {
  NSPAIR(_ZN9S21125C12C1Ev),
  NSPAIR(_ZN9S21125C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
static Base_Class bases_S21125C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C5,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21125C12[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C12D1Ev();
extern void _ZN9S21125C12D0Ev();
static  VTBL_ENTRY vtc_S21125C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S21125C12[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C11__9S21125C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
static  VTT_ENTRY vtt_S21125C12[] = {
  {&(_ZTV9S21125C12[5]),  5,8},
  {&(_tg__ZTV9S21125C11__9S21125C12[5]),  5,8},
  {&(_tg__ZTV9S21125C11__9S21125C12[5]),  5,8},
  {&(_ZTV9S21125C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21125C12[];
extern  VTBL_ENTRY _ZTV9S21125C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C12[];
Class_Descriptor cd_S21125C12 = {  "S21125C12", // class name
  bases_S21125C12, 4,
  &(vtc_S21125C12[0]), // expected_vtbl_contents
  &(vtt_S21125C12[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S21125C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21125C12),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21125C12),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  S21125C9  : virtual S4227C37 , S21125C10 , S21125C11 , S21125C12 {
  ~S21125C9(); // tgen
  S21125C9(); // tgen
};
//SIG(-1 S21125C9) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S21125C9()
{
  extern Class_Descriptor cd_S21125C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S21125C9, buf);
    S21125C9 *dp, &lv = *(dp=new (buf) S21125C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S21125C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21125C9)");
    /*is_ambiguous_... S21125C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S21125C9");
    check_base_class_offset(lv, (S21125C5*)(S21125C10*), 0, "S21125C9");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C11*), 0, "S21125C9");
    check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C12*), 0, "S21125C9");
    check_base_class_offset(lv, (S21125C10*), 0, "S21125C9");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C11*), ABISELECT(1176,768), "S21125C9");
    check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C12*), ABISELECT(1176,768), "S21125C9");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C11*), ABISELECT(1160,760), "S21125C9");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C11*), ABISELECT(1160,760), "S21125C9");
    check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C12*), ABISELECT(1168,764), "S21125C9");
    check_base_class_offset(lv, (S21125C11*)(S21125C12*), ABISELECT(1168,764), "S21125C9");
    check_base_class_offset(lv, (S21125C12*), ABISELECT(1168,764), "S21125C9");
    test_class_info(&lv, &cd_S21125C9);
    dp->~S21125C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C9(Test_S21125C9, "S21125C9", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN8S21125C9C1Ev();
extern void _ZN8S21125C9D1Ev();
Name_Map name_map_S21125C9[] = {
  NSPAIR(_ZN8S21125C9C1Ev),
  NSPAIR(_ZN8S21125C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C10;
extern VTBL_ENTRY _ZTI9S21125C10[];
extern  VTBL_ENTRY _ZTV9S21125C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S21125C12;
extern VTBL_ENTRY _ZTI9S21125C12[];
extern  VTBL_ENTRY _ZTV9S21125C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C12[];
static Base_Class bases_S21125C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21125C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21125C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21125C12,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21125C9[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C9D1Ev();
extern void _ZN8S21125C9D0Ev();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev)();
static  VTBL_ENTRY vtc_S21125C9[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21125C9[];
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C10__8S21125C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C11__8S21125C9[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C11__8S21125C9[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C12D1Ev();
extern void _ZN9S21125C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C12__8S21125C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C119S21125C12__A1__8S21125C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C119S21125C12__A1__8S21125C9[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C12__8S21125C9[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
static  VTT_ENTRY vtt_S21125C9[] = {
  {&(_ZTV8S21125C9[6]),  6,25},
  {&(_tg__ZTV9S21125C10__8S21125C9[4]),  4,5},
  {&(_tg__ZTV9S21125C10__8S21125C9[4]),  4,5},
  {&(_tg__ZTV9S21125C11__8S21125C9[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C11__8S21125C9[3]),  3,4},
  {&(_tg__ZTV9S21125C12__8S21125C9[5]),  5,8},
  {&(_tg__ZTV9S21125C119S21125C12__A1__8S21125C9[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C119S21125C12__A1__8S21125C9[3]),  3,4},
  {&(_tg__ZTV8S21125C5__9S21125C12__8S21125C9[3]),  3,4},
  {&(_ZTV8S21125C9[6]),  6,25},
  {&(_ZTV8S21125C9[14]),  14,25},
  {&(_ZTV8S21125C9[22]),  22,25},
};
extern VTBL_ENTRY _ZTI8S21125C9[];
extern  VTBL_ENTRY _ZTV8S21125C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C9[];
Class_Descriptor cd_S21125C9 = {  "S21125C9", // class name
  bases_S21125C9, 9,
  &(vtc_S21125C9[0]), // expected_vtbl_contents
  &(vtt_S21125C9[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI8S21125C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21125C9),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21125C9),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  S21125C4  : virtual S21125C5 , S21125C6 , virtual S21125C9 {
  virtual  ~S21125C4(); // _ZN8S21125C4D2Ev
  S21125C4(); // tgen
};
//SIG(-1 S21125C4) C1{ VBC2{ v1} BC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC5 BC7{ VBC2 FC3[9]} BC8{ VBC4 VBC2 BC5 vd} BC9{ BC8 vd}} vd}


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

static void Test_S21125C4()
{
  extern Class_Descriptor cd_S21125C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(165,215)];
    init_test(&cd_S21125C4, buf);
    S21125C4 *dp, &lv = *(dp=new (buf) S21125C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1312,856), "sizeof(S21125C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21125C4)");
    /*is_ambiguous_... S21125C4::S21125C5 */ AMB_check_base_class_offset(lv, (S21125C5*), ABISELECT(128,84), "S21125C4");
    check_base_class_offset(lv, (S21125C5*)(S21125C10*)(S21125C9*), ABISELECT(128,84), "S21125C4");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C9*), ABISELECT(128,84), "S21125C4");
    check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(128,84), "S21125C4");
    check_base_class_offset(lv, (S21125C5*)(S21125C6*), 0, "S21125C4");
    check_base_class_offset(lv, (S20997C6*)(S21125C6*), ABISELECT(88,44), "S21125C4");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C9*), ABISELECT(88,44), "S21125C4");
    check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(88,44), "S21125C4");
    check_base_class_offset(lv, (S4227C37*)(S21125C6*), 0, "S21125C4");
    check_base_class_offset(lv, (S21125C6*), 0, "S21125C4");
    /*is_ambiguous_... S21125C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C9*), ABISELECT(1304,852), "S21125C4");
    check_base_class_offset(lv, (S21125C10*)(S21125C9*), ABISELECT(128,84), "S21125C4");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C9*), ABISELECT(1288,844), "S21125C4");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C11*)(S21125C9*), ABISELECT(1288,844), "S21125C4");
    check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1296,848), "S21125C4");
    check_base_class_offset(lv, (S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1296,848), "S21125C4");
    check_base_class_offset(lv, (S21125C12*)(S21125C9*), ABISELECT(1296,848), "S21125C4");
    check_base_class_offset(lv, (S21125C9*), ABISELECT(128,84), "S21125C4");
    test_class_info(&lv, &cd_S21125C4);
    dp->~S21125C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C4(Test_S21125C4, "S21125C4", ABISELECT(1312,856));

#else // __cplusplus

extern void _ZN8S21125C4C1Ev();
extern void _ZN8S21125C4D2Ev();
Name_Map name_map_S21125C4[] = {
  NSPAIR(_ZN8S21125C4C1Ev),
  NSPAIR(_ZN8S21125C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C6;
extern VTBL_ENTRY _ZTI8S21125C6[];
extern  VTBL_ENTRY _ZTV8S21125C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C10;
extern VTBL_ENTRY _ZTI9S21125C10[];
extern  VTBL_ENTRY _ZTV9S21125C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S21125C12;
extern VTBL_ENTRY _ZTI9S21125C12[];
extern  VTBL_ENTRY _ZTV9S21125C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C12[];
extern Class_Descriptor cd_S21125C9;
extern VTBL_ENTRY _ZTI8S21125C9[];
extern  VTBL_ENTRY _ZTV8S21125C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C9[];
static Base_Class bases_S21125C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21125C5,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21125C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21125C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C10,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1288,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1288,844), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1296,848), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21125C12,    ABISELECT(1296,848), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S21125C9,    ABISELECT(128,84), //bcp->offset
    9, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21125C4[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C4D1Ev();
extern void _ZN8S21125C4D0Ev();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21125C4D1Ev,_ZThn84_N8S21125C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21125C4D0Ev,_ZThn84_N8S21125C4D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY vtc_S21125C4[] = {
  ABISELECT(1304,852),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D0Ev,
  ABISELECT(-128,-84),
  -40,
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21125C4[];
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C6__8S21125C4[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C6[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C9D1Ev();
extern void _ZN8S21125C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C4[] = {
  -40,
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C108S21125C9__8S21125C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C4[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C118S21125C9__8S21125C4[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C12D1Ev();
extern void _ZN9S21125C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C4[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C119S21125C128S21125C9__A1__8S21125C4[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__8S21125C4[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C128S21125C9__8S21125C4[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C11__8S21125C9__8S21125C4[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C12__8S21125C9__8S21125C4[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev),
};
static  VTT_ENTRY vtt_S21125C4[] = {
  {&(_ZTV8S21125C4[6]),  6,35},
  {&(_tg__ZTV8S21125C6__8S21125C4[3]),  3,4},
  {&(_ZTV8S21125C4[16]),  16,35},
  {&(_ZTV8S21125C4[16]),  16,35},
  {&(_ZTV8S21125C4[24]),  24,35},
  {&(_ZTV8S21125C4[32]),  32,35},
  {&(_tg__ZTV8S21125C9__8S21125C4[6]),  6,9},
  {&(_tg__ZTV9S21125C108S21125C9__8S21125C4[4]),  4,5},
  {&(_tg__ZTV9S21125C108S21125C9__8S21125C4[4]),  4,5},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C4[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C118S21125C9__8S21125C4[3]),  3,4},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C4[5]),  5,8},
  {&(_tg__ZTV9S21125C119S21125C128S21125C9__A1__8S21125C4[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__8S21125C4[3]),  3,4},
  {&(_tg__ZTV8S21125C5__9S21125C128S21125C9__8S21125C4[3]),  3,4},
  {&(_tg__ZTV8S21125C9__8S21125C4[6]),  6,9},
  {&(_tg__ZTV9S21125C11__8S21125C9__8S21125C4[5]),  5,8},
  {&(_tg__ZTV9S21125C12__8S21125C9__8S21125C4[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21125C4[];
extern  VTBL_ENTRY _ZTV8S21125C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C4[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21125C4D0Ev,_ZThn84_N8S21125C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21125C4D1Ev,_ZThn84_N8S21125C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21125C4 = {  "S21125C4", // class name
  bases_S21125C4, 13,
  &(vtc_S21125C4[0]), // expected_vtbl_contents
  &(vtt_S21125C4[0]), // expected_vtt_contents
  ABISELECT(1312,856), // object size
  NSPAIRA(_ZTI8S21125C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21125C4),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21125C4),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21125C3  : virtual S21125C4 {
  int s21125c3f0;
  ~S21125C3(); // tgen
  S21125C3(); // tgen
};
//SIG(-1 S21125C3) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} Fi}


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

static void Test_S21125C3()
{
  extern Class_Descriptor cd_S21125C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(166,216)];
    init_test(&cd_S21125C3, buf);
    S21125C3 *dp, &lv = *(dp=new (buf) S21125C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1320,860), "sizeof(S21125C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21125C3)");
    /*is_ambiguous_... S21125C4::S21125C5 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C4*), 0, "S21125C3");
    check_base_class_offset(lv, (S21125C5*)(S21125C10*)(S21125C9*), 0, "S21125C3");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C9*), 0, "S21125C3");
    check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C12*)(S21125C9*), 0, "S21125C3");
    check_base_class_offset(lv, (S21125C5*)(S21125C6*)(S21125C4*), ABISELECT(16,8), "S21125C3");
    check_base_class_offset(lv, (S20997C6*)(S21125C6*)(S21125C4*), ABISELECT(104,52), "S21125C3");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C9*), ABISELECT(104,52), "S21125C3");
    check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(104,52), "S21125C3");
    check_base_class_offset(lv, (S4227C37*)(S21125C6*)(S21125C4*), ABISELECT(16,8), "S21125C3");
    check_base_class_offset(lv, (S21125C6*)(S21125C4*), ABISELECT(16,8), "S21125C3");
    /*is_ambiguous_... S21125C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C9*), 0, "S21125C3");
    check_base_class_offset(lv, (S21125C10*)(S21125C9*), ABISELECT(144,92), "S21125C3");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C9*), ABISELECT(1304,852), "S21125C3");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C11*)(S21125C9*), ABISELECT(1304,852), "S21125C3");
    check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1312,856), "S21125C3");
    check_base_class_offset(lv, (S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1312,856), "S21125C3");
    check_base_class_offset(lv, (S21125C12*)(S21125C9*), ABISELECT(1312,856), "S21125C3");
    check_base_class_offset(lv, (S21125C9*)(S21125C4*), ABISELECT(144,92), "S21125C3");
    check_base_class_offset(lv, (S21125C4*), ABISELECT(16,8), "S21125C3");
    check_field_offset(lv, s21125c3f0, ABISELECT(8,4), "S21125C3.s21125c3f0");
    test_class_info(&lv, &cd_S21125C3);
    dp->~S21125C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C3(Test_S21125C3, "S21125C3", ABISELECT(1320,860));

#else // __cplusplus

extern void _ZN8S21125C3C1Ev();
extern void _ZN8S21125C3D1Ev();
Name_Map name_map_S21125C3[] = {
  NSPAIR(_ZN8S21125C3C1Ev),
  NSPAIR(_ZN8S21125C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C6;
extern VTBL_ENTRY _ZTI8S21125C6[];
extern  VTBL_ENTRY _ZTV8S21125C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C10;
extern VTBL_ENTRY _ZTI9S21125C10[];
extern  VTBL_ENTRY _ZTV9S21125C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S21125C12;
extern VTBL_ENTRY _ZTI9S21125C12[];
extern  VTBL_ENTRY _ZTV9S21125C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C12[];
extern Class_Descriptor cd_S21125C9;
extern VTBL_ENTRY _ZTI8S21125C9[];
extern  VTBL_ENTRY _ZTV8S21125C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C9[];
extern Class_Descriptor cd_S21125C4;
extern VTBL_ENTRY _ZTI8S21125C4[];
extern  VTBL_ENTRY _ZTV8S21125C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C4[];
static Base_Class bases_S21125C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21125C5,    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
    6, //immediately_derived
  0, 1},
  {&cd_S21125C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21125C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C10,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1304,852), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1312,856), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21125C12,    ABISELECT(1312,856), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21125C9,    ABISELECT(144,92), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21125C4,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21125C3[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C3D1Ev();
extern void _ZN8S21125C3D0Ev();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21125C3D1Ev,_ZTv0_n32_N8S21125C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21125C3D1Ev,_ZThn8_N8S21125C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21125C3D0Ev,_ZTv0_n32_N8S21125C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21125C3D0Ev,_ZThn8_N8S21125C3D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C3D1Ev,_ZTv0_n28_N8S21125C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S21125C3D1Ev,_ZThn92_N8S21125C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21125C3D0Ev,_ZTv0_n28_N8S21125C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S21125C3D0Ev,_ZThn92_N8S21125C3D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C3D1Ev,_ZTvn760_n28_N8S21125C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C3D0Ev,_ZTvn760_n28_N8S21125C3D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C3D1Ev,_ZTvn764_n28_N8S21125C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C3D0Ev,_ZTvn764_n28_N8S21125C3D0Ev)();
static  VTBL_ENTRY vtc_S21125C3[] = {
  0,
  ABISELECT(144,92),
  ABISELECT(104,52),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C3D0Ev,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21125C3D1Ev,_ZTv0_n32_N8S21125C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21125C3D0Ev,_ZTv0_n32_N8S21125C3D0Ev),
  ABISELECT(-144,-92),
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C3D1Ev,_ZTv0_n28_N8S21125C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C3D0Ev,_ZTv0_n28_N8S21125C3D0Ev),
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1304,-852),
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C3D1Ev,_ZTvn760_n28_N8S21125C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C3D0Ev,_ZTvn760_n28_N8S21125C3D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C3D1Ev,_ZTvn764_n28_N8S21125C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C3D0Ev,_ZTvn764_n28_N8S21125C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21125C3[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C4D1Ev();
extern void _ZN8S21125C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C4__8S21125C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C68S21125C4__8S21125C3[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C6[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__8S21125C4__8S21125C3[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21125C4D1Ev,_ZThn84_N8S21125C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21125C4D0Ev,_ZThn84_N8S21125C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C4__8S21125C3[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C4__8S21125C3[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C4__8S21125C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C9D1Ev();
extern void _ZN8S21125C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C3[] = {
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C108S21125C9__8S21125C3[] = {
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C108S21125C9__8S21125C3[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C3[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C118S21125C9__8S21125C3[] = {
  0,
  ABISELECT(1304,852),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C12D1Ev();
extern void _ZN9S21125C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C119S21125C128S21125C9__A1__8S21125C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__8S21125C3[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C128S21125C9__8S21125C3[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__8S21125C9__8S21125C3[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C11__8S21125C9__8S21125C3[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C12__8S21125C9__8S21125C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev),
};
static  VTT_ENTRY vtt_S21125C3[] = {
  {&(_ZTV8S21125C3[8]),  8,48},
  {&(_ZTV8S21125C3[19]),  19,48},
  {&(_ZTV8S21125C3[8]),  8,48},
  {&(_ZTV8S21125C3[29]),  29,48},
  {&(_ZTV8S21125C3[37]),  37,48},
  {&(_ZTV8S21125C3[45]),  45,48},
  {&(_tg__ZTV8S21125C4__8S21125C3[6]),  6,9},
  {&(_tg__ZTV8S21125C68S21125C4__8S21125C3[3]),  3,4},
  {&(_tg__ZTV8S21125C5__8S21125C4__8S21125C3[3]),  3,4},
  {&(_tg__ZTV8S21125C9__8S21125C4__8S21125C3[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C4__8S21125C3[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C4__8S21125C3[5]),  5,8},
  {&(_tg__ZTV8S21125C9__8S21125C3[6]),  6,9},
  {&(_tg__ZTV9S21125C108S21125C9__8S21125C3[4]),  4,5},
  {&(_tg__ZTV8S21125C5__9S21125C108S21125C9__8S21125C3[3]),  3,4},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C3[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C118S21125C9__8S21125C3[3]),  3,4},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C3[5]),  5,8},
  {&(_tg__ZTV9S21125C119S21125C128S21125C9__A1__8S21125C3[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__8S21125C3[3]),  3,4},
  {&(_tg__ZTV8S21125C5__9S21125C128S21125C9__8S21125C3[3]),  3,4},
  {&(_tg__ZTV8S21125C5__8S21125C9__8S21125C3[3]),  3,4},
  {&(_tg__ZTV9S21125C11__8S21125C9__8S21125C3[5]),  5,8},
  {&(_tg__ZTV9S21125C12__8S21125C9__8S21125C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21125C3[];
extern  VTBL_ENTRY _ZTV8S21125C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C3[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21125C4D0Ev,_ZThn84_N8S21125C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21125C4D1Ev,_ZThn84_N8S21125C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C3D0Ev,_ZTv0_n28_N8S21125C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21125C3D0Ev,_ZThn92_N8S21125C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C3D1Ev,_ZTv0_n28_N8S21125C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21125C3D1Ev,_ZThn92_N8S21125C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21125C3D0Ev,_ZTv0_n32_N8S21125C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21125C3D0Ev,_ZThn8_N8S21125C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21125C3D1Ev,_ZTv0_n32_N8S21125C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21125C3D1Ev,_ZThn8_N8S21125C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21125C3 = {  "S21125C3", // class name
  bases_S21125C3, 14,
  &(vtc_S21125C3[0]), // expected_vtbl_contents
  &(vtt_S21125C3[0]), // expected_vtt_contents
  ABISELECT(1320,860), // object size
  NSPAIRA(_ZTI8S21125C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21125C3),48, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21125C3),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names106,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21125C17  : S20997C6 , S21125C5 {
  ~S21125C17(); // tgen
  S21125C17(); // tgen
};
//SIG(-1 S21125C17) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S21125C17()
{
  extern Class_Descriptor cd_S21125C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S21125C17, buf);
    S21125C17 *dp, &lv = *(dp=new (buf) S21125C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S21125C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21125C17)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S21125C17");
    check_base_class_offset(lv, (S21125C5*), 0, "S21125C17");
    test_class_info(&lv, &cd_S21125C17);
    dp->~S21125C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C17(Test_S21125C17, "S21125C17", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S21125C17C1Ev();
extern void _ZN9S21125C17D1Ev();
Name_Map name_map_S21125C17[] = {
  NSPAIR(_ZN9S21125C17C1Ev),
  NSPAIR(_ZN9S21125C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
static Base_Class bases_S21125C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S21125C5,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21125C17[];
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY vtc_S21125C17[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C17[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern VTBL_ENTRY _ZTI9S21125C17[];
extern  VTBL_ENTRY _ZTV9S21125C17[];
Class_Descriptor cd_S21125C17 = {  "S21125C17", // class name
  bases_S21125C17, 2,
  &(vtc_S21125C17[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S21125C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21125C17),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21125C16  : S21125C17 {
  long double s21125c16f0;
  ~S21125C16(); // tgen
  S21125C16(); // tgen
};
//SIG(-1 S21125C16) C1{ BC2{ BC3{ m FL[5]} BC4{ v1}} FD}


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

static void Test_S21125C16()
{
  extern Class_Descriptor cd_S21125C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,15)];
    init_test(&cd_S21125C16, buf);
    S21125C16 *dp, &lv = *(dp=new (buf) S21125C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,56), "sizeof(S21125C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21125C16)");
    check_base_class_offset(lv, (S20997C6*)(S21125C17*), ABISELECT(8,4), "S21125C16");
    check_base_class_offset(lv, (S21125C5*)(S21125C17*), 0, "S21125C16");
    check_base_class_offset(lv, (S21125C17*), 0, "S21125C16");
    check_field_offset(lv, s21125c16f0, ABISELECT(48,44), "S21125C16.s21125c16f0");
    test_class_info(&lv, &cd_S21125C16);
    dp->~S21125C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C16(Test_S21125C16, "S21125C16", ABISELECT(64,56));

#else // __cplusplus

extern void _ZN9S21125C16C1Ev();
extern void _ZN9S21125C16D1Ev();
Name_Map name_map_S21125C16[] = {
  NSPAIR(_ZN9S21125C16C1Ev),
  NSPAIR(_ZN9S21125C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C17;
extern VTBL_ENTRY _ZTI9S21125C17[];
extern  VTBL_ENTRY _ZTV9S21125C17[];
static Base_Class bases_S21125C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21125C5,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21125C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S21125C16[];
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY vtc_S21125C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C16[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern VTBL_ENTRY _ZTI9S21125C16[];
extern  VTBL_ENTRY _ZTV9S21125C16[];
Class_Descriptor cd_S21125C16 = {  "S21125C16", // class name
  bases_S21125C16, 3,
  &(vtc_S21125C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,56), // object size
  NSPAIRA(_ZTI9S21125C16),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21125C16),3, //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  S21125C15  : virtual S21125C4 , S21125C16 {
  ~S21125C15(); // tgen
  S21125C15(); // tgen
};
//SIG(-1 S21125C15) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} BC11{ BC12{ BC5 BC3} FD}}


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

static void Test_S21125C15()
{
  extern Class_Descriptor cd_S21125C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(87,228)];
    init_test(&cd_S21125C15, buf);
    S21125C15 *dp, &lv = *(dp=new (buf) S21125C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1376,908), "sizeof(S21125C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21125C15)");
    /*is_ambiguous_... S21125C4::S21125C5 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C4*), ABISELECT(192,140), "S21125C15");
    check_base_class_offset(lv, (S21125C5*)(S21125C10*)(S21125C9*), ABISELECT(192,140), "S21125C15");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C9*), ABISELECT(192,140), "S21125C15");
    check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(192,140), "S21125C15");
    check_base_class_offset(lv, (S21125C5*)(S21125C6*)(S21125C4*), ABISELECT(64,56), "S21125C15");
    check_base_class_offset(lv, (S20997C6*)(S21125C6*)(S21125C4*), ABISELECT(152,100), "S21125C15");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C9*), ABISELECT(152,100), "S21125C15");
    check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(152,100), "S21125C15");
    check_base_class_offset(lv, (S4227C37*)(S21125C6*)(S21125C4*), ABISELECT(64,56), "S21125C15");
    check_base_class_offset(lv, (S21125C6*)(S21125C4*), ABISELECT(64,56), "S21125C15");
    /*is_ambiguous_... S21125C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C9*), 0, "S21125C15");
    check_base_class_offset(lv, (S21125C10*)(S21125C9*), ABISELECT(192,140), "S21125C15");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C9*), ABISELECT(1352,900), "S21125C15");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C11*)(S21125C9*), ABISELECT(1352,900), "S21125C15");
    check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1360,904), "S21125C15");
    check_base_class_offset(lv, (S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1360,904), "S21125C15");
    check_base_class_offset(lv, (S21125C12*)(S21125C9*), ABISELECT(1360,904), "S21125C15");
    check_base_class_offset(lv, (S21125C9*)(S21125C4*), ABISELECT(192,140), "S21125C15");
    check_base_class_offset(lv, (S21125C4*), ABISELECT(64,56), "S21125C15");
    check_base_class_offset(lv, (S20997C6*)(S21125C17*)(S21125C16*), ABISELECT(8,4), "S21125C15");
    check_base_class_offset(lv, (S21125C5*)(S21125C17*)(S21125C16*), 0, "S21125C15");
    check_base_class_offset(lv, (S21125C17*)(S21125C16*), 0, "S21125C15");
    check_base_class_offset(lv, (S21125C16*), 0, "S21125C15");
    test_class_info(&lv, &cd_S21125C15);
    dp->~S21125C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C15(Test_S21125C15, "S21125C15", ABISELECT(1376,908));

#else // __cplusplus

extern void _ZN9S21125C15C1Ev();
extern void _ZN9S21125C15D1Ev();
Name_Map name_map_S21125C15[] = {
  NSPAIR(_ZN9S21125C15C1Ev),
  NSPAIR(_ZN9S21125C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C6;
extern VTBL_ENTRY _ZTI8S21125C6[];
extern  VTBL_ENTRY _ZTV8S21125C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C10;
extern VTBL_ENTRY _ZTI9S21125C10[];
extern  VTBL_ENTRY _ZTV9S21125C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S21125C12;
extern VTBL_ENTRY _ZTI9S21125C12[];
extern  VTBL_ENTRY _ZTV9S21125C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C12[];
extern Class_Descriptor cd_S21125C9;
extern VTBL_ENTRY _ZTI8S21125C9[];
extern  VTBL_ENTRY _ZTV8S21125C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C9[];
extern Class_Descriptor cd_S21125C4;
extern VTBL_ENTRY _ZTI8S21125C4[];
extern  VTBL_ENTRY _ZTV8S21125C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C17;
extern VTBL_ENTRY _ZTI9S21125C17[];
extern  VTBL_ENTRY _ZTV9S21125C17[];
extern Class_Descriptor cd_S21125C16;
extern VTBL_ENTRY _ZTI9S21125C16[];
extern  VTBL_ENTRY _ZTV9S21125C16[];
static Base_Class bases_S21125C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21125C5,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21125C5,    ABISELECT(64,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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(64,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
    4, //immediately_derived
  0, 0},
  {&cd_S21125C6,    ABISELECT(64,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C10,    ABISELECT(192,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1352,900), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21125C11,    ABISELECT(1352,900), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1360,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1360,904), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21125C12,    ABISELECT(1360,904), //bcp->offset
    39, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21125C9,    ABISELECT(192,140), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21125C4,    ABISELECT(64,56), //bcp->offset
    10, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S21125C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21125C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21125C15[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C15D1Ev();
extern void _ZN9S21125C15D0Ev();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S21125C15D1Ev,_ZThn56_N9S21125C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S21125C15D0Ev,_ZThn56_N9S21125C15D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZThn192_N9S21125C15D1Ev,_ZThn140_N9S21125C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev)();
extern void ABISELECT(_ZThn192_N9S21125C15D0Ev,_ZThn140_N9S21125C15D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C15D1Ev,_ZTvn760_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C15D0Ev,_ZTvn760_n28_N9S21125C15D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C15D1Ev,_ZTvn764_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C15D0Ev,_ZTvn764_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY vtc_S21125C15[] = {
  0,
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(192,140),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C15D0Ev,
  ABISELECT(-64,-56),
  0,
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev),
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C15D1Ev,_ZTvn760_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C15D0Ev,_ZTvn760_n28_N9S21125C15D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C15D1Ev,_ZTvn764_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C15D0Ev,_ZTvn764_n28_N9S21125C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S21125C15[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C4D1Ev();
extern void _ZN8S21125C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C15[] = {
  ABISELECT(-64,-56),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C68S21125C4__9S21125C15[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C6[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21125C4D1Ev,_ZThn84_N8S21125C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21125C4D0Ev,_ZThn84_N8S21125C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C4__9S21125C15[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C4__9S21125C15[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C4__9S21125C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C9D1Ev();
extern void _ZN8S21125C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C15[] = {
  -40,
  ABISELECT(-192,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C108S21125C9__9S21125C15[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C15[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C118S21125C9__9S21125C15[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C12D1Ev();
extern void _ZN9S21125C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C119S21125C128S21125C9__A1__9S21125C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__9S21125C15[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C128S21125C9__9S21125C15[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C11__8S21125C9__9S21125C15[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C12__8S21125C9__9S21125C15[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev),
};
static  VTT_ENTRY vtt_S21125C15[] = {
  {&(_ZTV9S21125C15[7]),  7,47},
  {&(_ZTV9S21125C15[18]),  18,47},
  {&(_ZTV9S21125C15[28]),  28,47},
  {&(_ZTV9S21125C15[28]),  28,47},
  {&(_ZTV9S21125C15[36]),  36,47},
  {&(_ZTV9S21125C15[44]),  44,47},
  {&(_tg__ZTV8S21125C4__9S21125C15[6]),  6,9},
  {&(_tg__ZTV8S21125C68S21125C4__9S21125C15[3]),  3,4},
  {&(_tg__ZTV8S21125C9__8S21125C4__9S21125C15[7]),  7,10},
  {&(_tg__ZTV8S21125C9__8S21125C4__9S21125C15[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C4__9S21125C15[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C4__9S21125C15[5]),  5,8},
  {&(_tg__ZTV8S21125C9__9S21125C15[6]),  6,9},
  {&(_tg__ZTV9S21125C108S21125C9__9S21125C15[4]),  4,5},
  {&(_tg__ZTV9S21125C108S21125C9__9S21125C15[4]),  4,5},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C15[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C118S21125C9__9S21125C15[3]),  3,4},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C15[5]),  5,8},
  {&(_tg__ZTV9S21125C119S21125C128S21125C9__A1__9S21125C15[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__9S21125C15[3]),  3,4},
  {&(_tg__ZTV8S21125C5__9S21125C128S21125C9__9S21125C15[3]),  3,4},
  {&(_tg__ZTV8S21125C9__9S21125C15[6]),  6,9},
  {&(_tg__ZTV9S21125C11__8S21125C9__9S21125C15[5]),  5,8},
  {&(_tg__ZTV9S21125C12__8S21125C9__9S21125C15[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21125C15[];
extern  VTBL_ENTRY _ZTV9S21125C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C15[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21125C4D0Ev,_ZThn84_N8S21125C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21125C4D1Ev,_ZThn84_N8S21125C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21125C15D0Ev,_ZThn140_N9S21125C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21125C15D1Ev,_ZThn140_N9S21125C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21125C15D0Ev,_ZThn56_N9S21125C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21125C15D1Ev,_ZThn56_N9S21125C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21125C15 = {  "S21125C15", // class name
  bases_S21125C15, 18,
  &(vtc_S21125C15[0]), // expected_vtbl_contents
  &(vtt_S21125C15[0]), // expected_vtt_contents
  ABISELECT(1376,908), // object size
  NSPAIRA(_ZTI9S21125C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21125C15),47, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21125C15),24, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21125C14  : virtual S20997C6 , virtual S21125C9 , virtual S21125C15 {
  void *s21125c14f0;
  virtual  ~S21125C14(); // _ZN9S21125C14D2Ev
  S21125C14(); // tgen
};
//SIG(-1 S21125C14) C1{ VBC2{ m FL[5]} VBC3{ VBC4{ m} BC5{ VBC6{ v1} FC7{ BC6 VBC2 BC4 Fp[10]}[9]} BC8{ VBC2 VBC6 BC4 vd} BC9{ BC8 vd}} VBC10{ VBC11{ VBC6 BC7 VBC3 vd} BC12{ BC13{ BC2 BC6} FD}} vd Fp}


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

static void Test_S21125C14()
{
  extern Class_Descriptor cd_S21125C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,230)];
    init_test(&cd_S21125C14, buf);
    S21125C14 *dp, &lv = *(dp=new (buf) S21125C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,916), "sizeof(S21125C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21125C14)");
    /*is_ambiguous_... S21125C14::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(16,8), "S21125C14");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C9*), ABISELECT(16,8), "S21125C14");
    check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(16,8), "S21125C14");
    check_base_class_offset(lv, (S20997C6*)(S21125C6*)(S21125C4*), ABISELECT(16,8), "S21125C14");
    /*is_ambiguous_... S21125C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C9*), 0, "S21125C14");
    check_base_class_offset(lv, (S21125C5*)(S21125C10*)(S21125C9*), 0, "S21125C14");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C9*), 0, "S21125C14");
    check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C12*)(S21125C9*), 0, "S21125C14");
    /*is_ambiguous_... S21125C4::S21125C5 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C4*), 0, "S21125C14");
    check_base_class_offset(lv, (S21125C10*)(S21125C9*), ABISELECT(56,48), "S21125C14");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C9*), ABISELECT(1216,808), "S21125C14");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C11*)(S21125C9*), ABISELECT(1216,808), "S21125C14");
    check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1224,812), "S21125C14");
    check_base_class_offset(lv, (S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1224,812), "S21125C14");
    check_base_class_offset(lv, (S21125C12*)(S21125C9*), ABISELECT(1224,812), "S21125C14");
    check_base_class_offset(lv, (S21125C9*), ABISELECT(56,48), "S21125C14");
    check_base_class_offset(lv, (S21125C9*)(S21125C4*), ABISELECT(56,48), "S21125C14");
    check_base_class_offset(lv, (S21125C5*)(S21125C6*)(S21125C4*), ABISELECT(1296,872), "S21125C14");
    check_base_class_offset(lv, (S4227C37*)(S21125C6*)(S21125C4*), ABISELECT(1296,872), "S21125C14");
    check_base_class_offset(lv, (S21125C6*)(S21125C4*), ABISELECT(1296,872), "S21125C14");
    check_base_class_offset(lv, (S21125C4*)(S21125C15*), ABISELECT(1296,872), "S21125C14");
    check_base_class_offset(lv, (S20997C6*)(S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(1240,820), "S21125C14");
    check_base_class_offset(lv, (S21125C5*)(S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(1232,816), "S21125C14");
    check_base_class_offset(lv, (S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(1232,816), "S21125C14");
    check_base_class_offset(lv, (S21125C16*)(S21125C15*), ABISELECT(1232,816), "S21125C14");
    check_base_class_offset(lv, (S21125C15*), ABISELECT(1232,816), "S21125C14");
    check_field_offset(lv, s21125c14f0, ABISELECT(8,4), "S21125C14.s21125c14f0");
    test_class_info(&lv, &cd_S21125C14);
    dp->~S21125C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C14(Test_S21125C14, "S21125C14", ABISELECT(1392,916));

#else // __cplusplus

extern void _ZN9S21125C14C1Ev();
extern void _ZN9S21125C14D2Ev();
Name_Map name_map_S21125C14[] = {
  NSPAIR(_ZN9S21125C14C1Ev),
  NSPAIR(_ZN9S21125C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C10;
extern VTBL_ENTRY _ZTI9S21125C10[];
extern  VTBL_ENTRY _ZTV9S21125C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S21125C12;
extern VTBL_ENTRY _ZTI9S21125C12[];
extern  VTBL_ENTRY _ZTV9S21125C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C12[];
extern Class_Descriptor cd_S21125C9;
extern VTBL_ENTRY _ZTI8S21125C9[];
extern  VTBL_ENTRY _ZTV8S21125C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C9[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C6;
extern VTBL_ENTRY _ZTI8S21125C6[];
extern  VTBL_ENTRY _ZTV8S21125C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C6[];
extern Class_Descriptor cd_S21125C4;
extern VTBL_ENTRY _ZTI8S21125C4[];
extern  VTBL_ENTRY _ZTV8S21125C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C17;
extern VTBL_ENTRY _ZTI9S21125C17[];
extern  VTBL_ENTRY _ZTV9S21125C17[];
extern Class_Descriptor cd_S21125C16;
extern VTBL_ENTRY _ZTI9S21125C16[];
extern  VTBL_ENTRY _ZTV9S21125C16[];
extern Class_Descriptor cd_S21125C15;
extern VTBL_ENTRY _ZTI9S21125C15[];
extern  VTBL_ENTRY _ZTV9S21125C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C15[];
static Base_Class bases_S21125C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S21125C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21125C10,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1216,808), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S21125C11,    ABISELECT(1216,808), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1224,812), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1224,812), //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
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21125C12,    ABISELECT(1224,812), //bcp->offset
    30, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S21125C9,    ABISELECT(56,48), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21125C5,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_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_S4227C37,    ABISELECT(1296,872), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C6,    ABISELECT(1296,872), //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
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S21125C4,    ABISELECT(1296,872), //bcp->offset
    50, //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
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1240,820), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C5,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21125C17,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21125C16,    ABISELECT(1232,816), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21125C15,    ABISELECT(1232,816), //bcp->offset
    38, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21125C14[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C14D1Ev();
extern void _ZN9S21125C14D0Ev();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C14D1Ev,_ZTv0_n28_N9S21125C14D1Ev)();
extern void ABISELECT(_ZThn56_N9S21125C14D1Ev,_ZThn48_N9S21125C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21125C14D0Ev,_ZTv0_n28_N9S21125C14D0Ev)();
extern void ABISELECT(_ZThn56_N9S21125C14D0Ev,_ZThn48_N9S21125C14D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C14D1Ev,_ZTvn760_n28_N9S21125C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C14D0Ev,_ZTvn760_n28_N9S21125C14D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C14D1Ev,_ZTvn764_n28_N9S21125C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C14D0Ev,_ZTvn764_n28_N9S21125C14D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21125C14D1Ev,_ZTv0_n36_N9S21125C14D1Ev)();
extern void ABISELECT(_ZThn1232_N9S21125C14D1Ev,_ZThn816_N9S21125C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21125C14D0Ev,_ZTv0_n36_N9S21125C14D0Ev)();
extern void ABISELECT(_ZThn1232_N9S21125C14D0Ev,_ZThn816_N9S21125C14D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C14D1Ev,_ZTv0_n32_N9S21125C14D1Ev)();
extern void ABISELECT(_ZThn1296_N9S21125C14D1Ev,_ZThn872_N9S21125C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21125C14D0Ev,_ZTv0_n32_N9S21125C14D0Ev)();
extern void ABISELECT(_ZThn1296_N9S21125C14D0Ev,_ZThn872_N9S21125C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21125C14[] = {
  ABISELECT(1296,872),
  ABISELECT(1232,816),
  0,
  0,
  ABISELECT(56,48),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C14D0Ev,
  ABISELECT(-56,-48),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C14D1Ev,_ZTv0_n28_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C14D0Ev,_ZTv0_n28_N9S21125C14D0Ev),
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(-1216,-808),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C14D1Ev,_ZTvn760_n28_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C14D0Ev,_ZTvn760_n28_N9S21125C14D0Ev),
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(-1224,-812),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C14D1Ev,_ZTvn764_n28_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C14D0Ev,_ZTvn764_n28_N9S21125C14D0Ev),
  ABISELECT(-1232,-816),
  0,
  ABISELECT(-1232,-816),
  ABISELECT(-1176,-768),
  ABISELECT(-1216,-808),
  ABISELECT(-1232,-816),
  ABISELECT(64,56),
  ABISELECT(-1232,-816),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C14D1Ev,_ZTv0_n36_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C14D0Ev,_ZTv0_n36_N9S21125C14D0Ev),
  ABISELECT(-1296,-872),
  0,
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  ABISELECT(-1296,-872),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C14D1Ev,_ZTv0_n32_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C14D0Ev,_ZTv0_n32_N9S21125C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S21125C14[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C9D1Ev();
extern void _ZN8S21125C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C14[] = {
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C108S21125C9__9S21125C14[] = {
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C108S21125C9__9S21125C14[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C14[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C118S21125C9__9S21125C14[] = {
  0,
  ABISELECT(1216,808),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C12D1Ev();
extern void _ZN9S21125C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C14[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C119S21125C128S21125C9__A1__9S21125C14[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__9S21125C14[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C128S21125C9__9S21125C14[] = {
  0,
  ABISELECT(1224,812),
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__8S21125C9__9S21125C14[] = {
  0,
  ABISELECT(56,48),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C11__8S21125C9__9S21125C14[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C12__8S21125C9__9S21125C14[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C15D1Ev();
extern void _ZN9S21125C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C15__9S21125C14[] = {
  ABISELECT(-1232,-816),
  ABISELECT(-1176,-768),
  ABISELECT(-1216,-808),
  ABISELECT(-1232,-816),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C15D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S21125C15D1Ev,_ZThn56_N9S21125C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S21125C15D0Ev,_ZThn56_N9S21125C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C15__9S21125C14[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C15__9S21125C14[] = {
  0,
  ABISELECT(1232,816),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C15__9S21125C14[] = {
  ABISELECT(1176,768),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C15D1Ev,_ZTvn760_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C15D0Ev,_ZTvn760_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C15__9S21125C14[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C15D1Ev,_ZTvn760_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C15D0Ev,_ZTvn760_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C15D1Ev,_ZTvn764_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C15D0Ev,_ZTvn764_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C15__9S21125C14[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C15D1Ev,_ZTvn764_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C15D0Ev,_ZTvn764_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C4D1Ev();
extern void _ZN8S21125C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C14[] = {
  ABISELECT(-1296,-872),
  ABISELECT(-1240,-824),
  ABISELECT(-1296,-872),
  ABISELECT(-1280,-864),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C68S21125C4__9S21125C14[] = {
  ABISELECT(-1280,-864),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C6[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__8S21125C4__9S21125C14[] = {
  0,
  ABISELECT(1296,872),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C4__9S21125C14[] = {
  ABISELECT(1240,824),
  -40,
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(-56,-48),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C4__9S21125C14[] = {
  ABISELECT(-1216,-808),
  ABISELECT(-1200,-800),
  ABISELECT(-1216,-808),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C4__9S21125C14[] = {
  ABISELECT(-1224,-812),
  ABISELECT(-1208,-804),
  ABISELECT(-1224,-812),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev),
};
static  VTT_ENTRY vtt_S21125C14[] = {
  {&(_ZTV9S21125C14[9]),  9,61},
  {&(_ZTV9S21125C14[19]),  19,61},
  {&(_ZTV9S21125C14[9]),  9,61},
  {&(_ZTV9S21125C14[27]),  27,61},
  {&(_ZTV9S21125C14[35]),  35,61},
  {&(_ZTV9S21125C14[47]),  47,61},
  {&(_ZTV9S21125C14[58]),  58,61},
  {&(_tg__ZTV8S21125C9__9S21125C14[6]),  6,9},
  {&(_tg__ZTV9S21125C108S21125C9__9S21125C14[4]),  4,5},
  {&(_tg__ZTV8S21125C5__9S21125C108S21125C9__9S21125C14[3]),  3,4},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C14[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C118S21125C9__9S21125C14[3]),  3,4},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C14[5]),  5,8},
  {&(_tg__ZTV9S21125C119S21125C128S21125C9__A1__9S21125C14[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__9S21125C14[3]),  3,4},
  {&(_tg__ZTV8S21125C5__9S21125C128S21125C9__9S21125C14[3]),  3,4},
  {&(_tg__ZTV8S21125C5__8S21125C9__9S21125C14[3]),  3,4},
  {&(_tg__ZTV9S21125C11__8S21125C9__9S21125C14[5]),  5,8},
  {&(_tg__ZTV9S21125C12__8S21125C9__9S21125C14[5]),  5,8},
  {&(_tg__ZTV9S21125C15__9S21125C14[7]),  7,10},
  {&(_tg__ZTV8S21125C4__9S21125C15__9S21125C14[8]),  8,11},
  {&(_tg__ZTV8S21125C5__9S21125C15__9S21125C14[3]),  3,4},
  {&(_tg__ZTV8S21125C9__9S21125C15__9S21125C14[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C15__9S21125C14[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C15__9S21125C14[5]),  5,8},
  {&(_tg__ZTV8S21125C4__9S21125C14[6]),  6,9},
  {&(_tg__ZTV8S21125C68S21125C4__9S21125C14[3]),  3,4},
  {&(_tg__ZTV8S21125C5__8S21125C4__9S21125C14[3]),  3,4},
  {&(_tg__ZTV8S21125C9__8S21125C4__9S21125C14[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C4__9S21125C14[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C4__9S21125C14[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21125C14[];
extern  VTBL_ENTRY _ZTV9S21125C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C14[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21125C15D0Ev,_ZThn56_N9S21125C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21125C15D1Ev,_ZThn56_N9S21125C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C14D0Ev,_ZTv0_n32_N9S21125C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N9S21125C14D0Ev,_ZThn872_N9S21125C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C14D1Ev,_ZTv0_n32_N9S21125C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1296_N9S21125C14D1Ev,_ZThn872_N9S21125C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C14D0Ev,_ZTv0_n36_N9S21125C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N9S21125C14D0Ev,_ZThn816_N9S21125C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C14D1Ev,_ZTv0_n36_N9S21125C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1232_N9S21125C14D1Ev,_ZThn816_N9S21125C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C14D0Ev,_ZTv0_n28_N9S21125C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21125C14D0Ev,_ZThn48_N9S21125C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C14D1Ev,_ZTv0_n28_N9S21125C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N9S21125C14D1Ev,_ZThn48_N9S21125C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21125C14 = {  "S21125C14", // class name
  bases_S21125C14, 19,
  &(vtc_S21125C14[0]), // expected_vtbl_contents
  &(vtt_S21125C14[0]), // expected_vtt_contents
  ABISELECT(1392,916), // object size
  NSPAIRA(_ZTI9S21125C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21125C14),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21125C14),31, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21125C13  : virtual S21125C6 , virtual S21125C14 {
  ~S21125C13(); // tgen
  S21125C13(); // tgen
};
//SIG(-1 S21125C13) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC4 VBC7{ VBC5 BC8{ VBC3 FC2[9]} BC9{ VBC4 VBC3 BC5 vd} BC10{ BC9 vd}} VBC11{ VBC12{ VBC3 BC2 VBC7 vd} BC13{ BC14{ BC4 BC3} FD}} vd Fp}}


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

static void Test_S21125C13()
{
  extern Class_Descriptor cd_S21125C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(94,242)];
    init_test(&cd_S21125C13, buf);
    S21125C13 *dp, &lv = *(dp=new (buf) S21125C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1488,964), "sizeof(S21125C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21125C13)");
    /*is_ambiguous_... S21125C13::S21125C6 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C6*), ABISELECT(8,4), "S21125C13");
    /*is_ambiguous_... S21125C13::S21125C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C6*), ABISELECT(96,48), "S21125C13");
    /*is_ambiguous_... S21125C14::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C14*), ABISELECT(96,48), "S21125C13");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C9*), ABISELECT(96,48), "S21125C13");
    check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(96,48), "S21125C13");
    check_base_class_offset(lv, (S20997C6*)(S21125C6*)(S21125C4*), ABISELECT(96,48), "S21125C13");
    /*is_ambiguous_... S21125C13::S21125C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C6*), ABISELECT(8,4), "S21125C13");
    /*is_ambiguous_... S21125C13::S21125C6 */ AMB_check_base_class_offset(lv, (S21125C6*), ABISELECT(8,4), "S21125C13");
    /*is_ambiguous_... S21125C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C9*), 0, "S21125C13");
    check_base_class_offset(lv, (S21125C5*)(S21125C10*)(S21125C9*), 0, "S21125C13");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C9*), 0, "S21125C13");
    check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C12*)(S21125C9*), 0, "S21125C13");
    /*is_ambiguous_... S21125C4::S21125C5 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C4*), 0, "S21125C13");
    check_base_class_offset(lv, (S21125C10*)(S21125C9*), ABISELECT(152,96), "S21125C13");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C9*), ABISELECT(1312,856), "S21125C13");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C11*)(S21125C9*), ABISELECT(1312,856), "S21125C13");
    check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1320,860), "S21125C13");
    check_base_class_offset(lv, (S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1320,860), "S21125C13");
    check_base_class_offset(lv, (S21125C12*)(S21125C9*), ABISELECT(1320,860), "S21125C13");
    check_base_class_offset(lv, (S21125C9*)(S21125C14*), ABISELECT(152,96), "S21125C13");
    check_base_class_offset(lv, (S21125C9*)(S21125C4*), ABISELECT(152,96), "S21125C13");
    check_base_class_offset(lv, (S21125C5*)(S21125C6*)(S21125C4*), ABISELECT(1392,920), "S21125C13");
    check_base_class_offset(lv, (S4227C37*)(S21125C6*)(S21125C4*), ABISELECT(1392,920), "S21125C13");
    check_base_class_offset(lv, (S21125C6*)(S21125C4*), ABISELECT(1392,920), "S21125C13");
    check_base_class_offset(lv, (S21125C4*)(S21125C15*), ABISELECT(1392,920), "S21125C13");
    check_base_class_offset(lv, (S20997C6*)(S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(1336,868), "S21125C13");
    check_base_class_offset(lv, (S21125C5*)(S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(1328,864), "S21125C13");
    check_base_class_offset(lv, (S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(1328,864), "S21125C13");
    check_base_class_offset(lv, (S21125C16*)(S21125C15*), ABISELECT(1328,864), "S21125C13");
    check_base_class_offset(lv, (S21125C15*)(S21125C14*), ABISELECT(1328,864), "S21125C13");
    check_base_class_offset(lv, (S21125C14*), ABISELECT(136,88), "S21125C13");
    test_class_info(&lv, &cd_S21125C13);
    dp->~S21125C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C13(Test_S21125C13, "S21125C13", ABISELECT(1488,964));

#else // __cplusplus

extern void _ZN9S21125C13C1Ev();
extern void _ZN9S21125C13D1Ev();
Name_Map name_map_S21125C13[] = {
  NSPAIR(_ZN9S21125C13C1Ev),
  NSPAIR(_ZN9S21125C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C6;
extern VTBL_ENTRY _ZTI8S21125C6[];
extern  VTBL_ENTRY _ZTV8S21125C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C10;
extern VTBL_ENTRY _ZTI9S21125C10[];
extern  VTBL_ENTRY _ZTV9S21125C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S21125C12;
extern VTBL_ENTRY _ZTI9S21125C12[];
extern  VTBL_ENTRY _ZTV9S21125C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C12[];
extern Class_Descriptor cd_S21125C9;
extern VTBL_ENTRY _ZTI8S21125C9[];
extern  VTBL_ENTRY _ZTV8S21125C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C9[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C6;
extern VTBL_ENTRY _ZTI8S21125C6[];
extern  VTBL_ENTRY _ZTV8S21125C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C6[];
extern Class_Descriptor cd_S21125C4;
extern VTBL_ENTRY _ZTI8S21125C4[];
extern  VTBL_ENTRY _ZTV8S21125C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C17;
extern VTBL_ENTRY _ZTI9S21125C17[];
extern  VTBL_ENTRY _ZTV9S21125C17[];
extern Class_Descriptor cd_S21125C16;
extern VTBL_ENTRY _ZTI9S21125C16[];
extern  VTBL_ENTRY _ZTV9S21125C16[];
extern Class_Descriptor cd_S21125C15;
extern VTBL_ENTRY _ZTI9S21125C15[];
extern  VTBL_ENTRY _ZTV9S21125C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C15[];
extern Class_Descriptor cd_S21125C14;
extern VTBL_ENTRY _ZTI9S21125C14[];
extern  VTBL_ENTRY _ZTV9S21125C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C14[];
static Base_Class bases_S21125C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21125C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C6,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C5,    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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S21125C10,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1312,856), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1320,860), //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
    6, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21125C12,    ABISELECT(1320,860), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21125C9,    ABISELECT(152,96), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S21125C5,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1392,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21125C6,    ABISELECT(1392,920), //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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21125C4,    ABISELECT(1392,920), //bcp->offset
    70, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21125C5,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S21125C17,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21125C16,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21125C15,    ABISELECT(1328,864), //bcp->offset
    58, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S21125C14,    ABISELECT(136,88), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21125C13[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C13D1Ev();
extern void _ZN9S21125C13D0Ev();
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S21125C13D1Ev,_ZTv0_n40_N9S21125C13D1Ev)();
extern void ABISELECT(_ZThn136_N9S21125C13D1Ev,_ZThn88_N9S21125C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21125C13D0Ev,_ZTv0_n40_N9S21125C13D0Ev)();
extern void ABISELECT(_ZThn136_N9S21125C13D0Ev,_ZThn88_N9S21125C13D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C13D1Ev,_ZTv0_n28_N9S21125C13D1Ev)();
extern void ABISELECT(_ZThn152_N9S21125C13D1Ev,_ZThn96_N9S21125C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21125C13D0Ev,_ZTv0_n28_N9S21125C13D0Ev)();
extern void ABISELECT(_ZThn152_N9S21125C13D0Ev,_ZThn96_N9S21125C13D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C13D1Ev,_ZTvn760_n28_N9S21125C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C13D0Ev,_ZTvn760_n28_N9S21125C13D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C13D1Ev,_ZTvn764_n28_N9S21125C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C13D0Ev,_ZTvn764_n28_N9S21125C13D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21125C13D1Ev,_ZTv0_n36_N9S21125C13D1Ev)();
extern void ABISELECT(_ZThn1328_N9S21125C13D1Ev,_ZThn864_N9S21125C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21125C13D0Ev,_ZTv0_n36_N9S21125C13D0Ev)();
extern void ABISELECT(_ZThn1328_N9S21125C13D0Ev,_ZThn864_N9S21125C13D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C13D1Ev,_ZTv0_n32_N9S21125C13D1Ev)();
extern void ABISELECT(_ZThn1392_N9S21125C13D1Ev,_ZThn920_N9S21125C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21125C13D0Ev,_ZTv0_n32_N9S21125C13D0Ev)();
extern void ABISELECT(_ZThn1392_N9S21125C13D0Ev,_ZThn920_N9S21125C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21125C13[] = {
  ABISELECT(1392,920),
  ABISELECT(1328,864),
  0,
  0,
  ABISELECT(152,96),
  ABISELECT(136,88),
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C13D0Ev,
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  ABISELECT(-136,-88),
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21125C13D1Ev,_ZTv0_n40_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21125C13D0Ev,_ZTv0_n40_N9S21125C13D0Ev),
  ABISELECT(-152,-96),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C13D1Ev,_ZTv0_n28_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C13D0Ev,_ZTv0_n28_N9S21125C13D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C13D1Ev,_ZTvn760_n28_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C13D0Ev,_ZTvn760_n28_N9S21125C13D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C13D1Ev,_ZTvn764_n28_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C13D0Ev,_ZTvn764_n28_N9S21125C13D0Ev),
  ABISELECT(-1328,-864),
  0,
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C13D1Ev,_ZTv0_n36_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C13D0Ev,_ZTv0_n36_N9S21125C13D0Ev),
  ABISELECT(-1392,-920),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1392,-920),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C13D1Ev,_ZTv0_n32_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C13D0Ev,_ZTv0_n32_N9S21125C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S21125C13[];
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C6__9S21125C13[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C6[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C14D1Ev();
extern void _ZN9S21125C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C14__9S21125C13[] = {
  ABISELECT(1256,832),
  ABISELECT(1192,776),
  ABISELECT(-136,-88),
  ABISELECT(-136,-88),
  ABISELECT(16,8),
  -40,
  ABISELECT(-136,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C14D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C14D1Ev,_ZTv0_n28_N9S21125C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S21125C14D1Ev,_ZThn8_N9S21125C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21125C14D0Ev,_ZTv0_n28_N9S21125C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S21125C14D0Ev,_ZThn8_N9S21125C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C14__9S21125C13[] = {
  ABISELECT(-16,-8),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C14D1Ev,_ZTv0_n28_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C14D0Ev,_ZTv0_n28_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C14__9S21125C13[] = {
  0,
  ABISELECT(136,88),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C14D1Ev,_ZTvn760_n28_N9S21125C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C14D0Ev,_ZTvn760_n28_N9S21125C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C14__9S21125C13[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1176,-768),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C14D1Ev,_ZTvn760_n28_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C14D0Ev,_ZTvn760_n28_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C14D1Ev,_ZTvn764_n28_N9S21125C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C14D0Ev,_ZTvn764_n28_N9S21125C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C14__9S21125C13[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1184,-772),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C14D1Ev,_ZTvn764_n28_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C14D0Ev,_ZTvn764_n28_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21125C14D1Ev,_ZTv0_n36_N9S21125C14D1Ev)();
extern void ABISELECT(_ZThn1192_N9S21125C14D1Ev,_ZThn776_N9S21125C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21125C14D0Ev,_ZTv0_n36_N9S21125C14D0Ev)();
extern void ABISELECT(_ZThn1192_N9S21125C14D0Ev,_ZThn776_N9S21125C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21125C15__9S21125C14__9S21125C13[] = {
  ABISELECT(-1192,-776),
  0,
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  ABISELECT(-1192,-776),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C14D1Ev,_ZTv0_n36_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C14D0Ev,_ZTv0_n36_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C14D1Ev,_ZTv0_n32_N9S21125C14D1Ev)();
extern void ABISELECT(_ZThn1256_N9S21125C14D1Ev,_ZThn832_N9S21125C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21125C14D0Ev,_ZTv0_n32_N9S21125C14D0Ev)();
extern void ABISELECT(_ZThn1256_N9S21125C14D0Ev,_ZThn832_N9S21125C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C14__9S21125C13[] = {
  ABISELECT(-1256,-832),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-1256,-832),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C14D1Ev,_ZTv0_n32_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C14D0Ev,_ZTv0_n32_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C9D1Ev();
extern void _ZN8S21125C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C13[] = {
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C108S21125C9__9S21125C13[] = {
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C108S21125C9__9S21125C13[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C13[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C118S21125C9__9S21125C13[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C12D1Ev();
extern void _ZN9S21125C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C13[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C119S21125C128S21125C9__A1__9S21125C13[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__9S21125C13[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C128S21125C9__9S21125C13[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__8S21125C9__9S21125C13[] = {
  0,
  ABISELECT(152,96),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C11__8S21125C9__9S21125C13[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C12__8S21125C9__9S21125C13[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C15D1Ev();
extern void _ZN9S21125C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C15__9S21125C13[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1176,-768),
  ABISELECT(-1232,-816),
  ABISELECT(-1328,-864),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C15D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S21125C15D1Ev,_ZThn56_N9S21125C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S21125C15D0Ev,_ZThn56_N9S21125C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C15__9S21125C13[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C15__9S21125C13[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C15__9S21125C13[] = {
  ABISELECT(1176,768),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1176,768),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C15D1Ev,_ZTvn760_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C15D0Ev,_ZTvn760_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C15__9S21125C13[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C15D1Ev,_ZTvn760_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C15D0Ev,_ZTvn760_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C15D1Ev,_ZTvn764_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C15D0Ev,_ZTvn764_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C15__9S21125C13[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C15D1Ev,_ZTvn764_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C15D0Ev,_ZTvn764_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C4D1Ev();
extern void _ZN8S21125C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C13[] = {
  ABISELECT(-1392,-920),
  ABISELECT(-1240,-824),
  ABISELECT(-1392,-920),
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C68S21125C4__A1__9S21125C13[] = {
  ABISELECT(-1296,-872),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C6[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__8S21125C4__9S21125C13[] = {
  0,
  ABISELECT(1392,920),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C4__9S21125C13[] = {
  ABISELECT(1240,824),
  ABISELECT(-56,-48),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(1240,824),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C4__9S21125C13[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1216,-808),
  ABISELECT(-1312,-856),
  ABISELECT(80,64),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C4__9S21125C13[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1224,-812),
  ABISELECT(-1320,-860),
  ABISELECT(72,60),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev),
};
static  VTT_ENTRY vtt_S21125C13[] = {
  {&(_ZTV9S21125C13[11]),  11,81},
  {&(_ZTV9S21125C13[18]),  18,81},
  {&(_ZTV9S21125C13[29]),  29,81},
  {&(_ZTV9S21125C13[39]),  39,81},
  {&(_ZTV9S21125C13[11]),  11,81},
  {&(_ZTV9S21125C13[47]),  47,81},
  {&(_ZTV9S21125C13[55]),  55,81},
  {&(_ZTV9S21125C13[67]),  67,81},
  {&(_ZTV9S21125C13[78]),  78,81},
  {&(_tg__ZTV8S21125C6__9S21125C13[3]),  3,4},
  {&(_tg__ZTV9S21125C14__9S21125C13[9]),  9,12},
  {&(_tg__ZTV8S21125C9__9S21125C14__9S21125C13[7]),  7,10},
  {&(_tg__ZTV8S21125C5__9S21125C14__9S21125C13[3]),  3,4},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C14__9S21125C13[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C14__9S21125C13[5]),  5,8},
  {&(_tg__ZTV9S21125C15__9S21125C14__9S21125C13[9]),  9,12},
  {&(_tg__ZTV8S21125C4__9S21125C14__9S21125C13[8]),  8,11},
  {&(_tg__ZTV8S21125C9__9S21125C13[6]),  6,9},
  {&(_tg__ZTV9S21125C108S21125C9__9S21125C13[4]),  4,5},
  {&(_tg__ZTV8S21125C5__9S21125C108S21125C9__9S21125C13[3]),  3,4},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C13[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C118S21125C9__9S21125C13[3]),  3,4},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C13[5]),  5,8},
  {&(_tg__ZTV9S21125C119S21125C128S21125C9__A1__9S21125C13[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__9S21125C13[3]),  3,4},
  {&(_tg__ZTV8S21125C5__9S21125C128S21125C9__9S21125C13[3]),  3,4},
  {&(_tg__ZTV8S21125C5__8S21125C9__9S21125C13[3]),  3,4},
  {&(_tg__ZTV9S21125C11__8S21125C9__9S21125C13[5]),  5,8},
  {&(_tg__ZTV9S21125C12__8S21125C9__9S21125C13[5]),  5,8},
  {&(_tg__ZTV9S21125C15__9S21125C13[7]),  7,10},
  {&(_tg__ZTV8S21125C4__9S21125C15__9S21125C13[8]),  8,11},
  {&(_tg__ZTV8S21125C5__9S21125C15__9S21125C13[3]),  3,4},
  {&(_tg__ZTV8S21125C9__9S21125C15__9S21125C13[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C15__9S21125C13[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C15__9S21125C13[5]),  5,8},
  {&(_tg__ZTV8S21125C4__9S21125C13[6]),  6,9},
  {&(_tg__ZTV8S21125C68S21125C4__A1__9S21125C13[3]),  3,4},
  {&(_tg__ZTV8S21125C5__8S21125C4__9S21125C13[3]),  3,4},
  {&(_tg__ZTV8S21125C9__8S21125C4__9S21125C13[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C4__9S21125C13[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C4__9S21125C13[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21125C13[];
extern  VTBL_ENTRY _ZTV9S21125C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C13[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21125C15D0Ev,_ZThn56_N9S21125C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21125C15D1Ev,_ZThn56_N9S21125C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C14D0Ev,_ZTv0_n32_N9S21125C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N9S21125C14D0Ev,_ZThn832_N9S21125C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C14D1Ev,_ZTv0_n32_N9S21125C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1256_N9S21125C14D1Ev,_ZThn832_N9S21125C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C14D0Ev,_ZTv0_n36_N9S21125C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N9S21125C14D0Ev,_ZThn776_N9S21125C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C14D1Ev,_ZTv0_n36_N9S21125C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1192_N9S21125C14D1Ev,_ZThn776_N9S21125C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C14D0Ev,_ZTv0_n28_N9S21125C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21125C14D0Ev,_ZThn8_N9S21125C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C14D1Ev,_ZTv0_n28_N9S21125C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21125C14D1Ev,_ZThn8_N9S21125C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C13D0Ev,_ZTv0_n32_N9S21125C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N9S21125C13D0Ev,_ZThn920_N9S21125C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C13D1Ev,_ZTv0_n32_N9S21125C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N9S21125C13D1Ev,_ZThn920_N9S21125C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C13D0Ev,_ZTv0_n36_N9S21125C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S21125C13D0Ev,_ZThn864_N9S21125C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C13D1Ev,_ZTv0_n36_N9S21125C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1328_N9S21125C13D1Ev,_ZThn864_N9S21125C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C13D0Ev,_ZTv0_n28_N9S21125C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21125C13D0Ev,_ZThn96_N9S21125C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C13D1Ev,_ZTv0_n28_N9S21125C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21125C13D1Ev,_ZThn96_N9S21125C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21125C13D0Ev,_ZTv0_n40_N9S21125C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21125C13D0Ev,_ZThn88_N9S21125C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21125C13D1Ev,_ZTv0_n40_N9S21125C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S21125C13D1Ev,_ZThn88_N9S21125C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21125C13 = {  "S21125C13", // class name
  bases_S21125C13, 23,
  &(vtc_S21125C13[0]), // expected_vtbl_contents
  &(vtt_S21125C13[0]), // expected_vtt_contents
  ABISELECT(1488,964), // object size
  NSPAIRA(_ZTI9S21125C13),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S21125C13),81, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21125C13),41, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21125C2  : virtual S21125C3 , S21125C13 {
  virtual  ~S21125C2(); // _ZN8S21125C2D2Ev
  S21125C2(); // tgen
};
//SIG(-1 S21125C2) C1{ VBC2{ VBC3{ VBC4{ v1} BC5{ BC4 VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC7 BC9{ VBC4 FC5[9]} BC10{ VBC6 VBC4 BC7 vd} BC11{ BC10 vd}} vd} Fi} BC12{ VBC5 VBC13{ VBC6 VBC8 VBC14{ VBC3 BC15{ BC16{ BC6 BC4} FD}} vd Fp}} vd}


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

static void Test_S21125C2()
{
  extern Class_Descriptor cd_S21125C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,244)];
    init_test(&cd_S21125C2, buf);
    S21125C2 *dp, &lv = *(dp=new (buf) S21125C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,972), "sizeof(S21125C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21125C2)");
    /*is_ambiguous_... S21125C4::S21125C5 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C4*), ABISELECT(8,4), "S21125C2");
    check_base_class_offset(lv, (S21125C5*)(S21125C10*)(S21125C9*), ABISELECT(8,4), "S21125C2");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C9*), ABISELECT(8,4), "S21125C2");
    check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(8,4), "S21125C2");
    check_base_class_offset(lv, (S21125C5*)(S21125C6*)(S21125C4*), ABISELECT(24,12), "S21125C2");
    check_base_class_offset(lv, (S20997C6*)(S21125C6*)(S21125C4*), ABISELECT(112,56), "S21125C2");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C9*), ABISELECT(112,56), "S21125C2");
    check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(112,56), "S21125C2");
    /*is_ambiguous_... S21125C2::S21125C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C6*), ABISELECT(112,56), "S21125C2");
    /*is_ambiguous_... S21125C14::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C14*), ABISELECT(112,56), "S21125C2");
    check_base_class_offset(lv, (S4227C37*)(S21125C6*)(S21125C4*), ABISELECT(24,12), "S21125C2");
    check_base_class_offset(lv, (S21125C6*)(S21125C4*), ABISELECT(24,12), "S21125C2");
    /*is_ambiguous_... S21125C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C9*), 0, "S21125C2");
    check_base_class_offset(lv, (S21125C10*)(S21125C9*), ABISELECT(152,96), "S21125C2");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C9*), ABISELECT(1312,856), "S21125C2");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C11*)(S21125C9*), ABISELECT(1312,856), "S21125C2");
    check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1320,860), "S21125C2");
    check_base_class_offset(lv, (S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1320,860), "S21125C2");
    check_base_class_offset(lv, (S21125C12*)(S21125C9*), ABISELECT(1320,860), "S21125C2");
    check_base_class_offset(lv, (S21125C9*)(S21125C4*), ABISELECT(152,96), "S21125C2");
    check_base_class_offset(lv, (S21125C9*)(S21125C14*), ABISELECT(152,96), "S21125C2");
    check_base_class_offset(lv, (S21125C4*)(S21125C3*), ABISELECT(24,12), "S21125C2");
    check_base_class_offset(lv, (S21125C4*)(S21125C15*), ABISELECT(24,12), "S21125C2");
    check_base_class_offset(lv, (S21125C3*), ABISELECT(8,4), "S21125C2");
    /*is_ambiguous_... S21125C2::S21125C6 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C6*), ABISELECT(1328,864), "S21125C2");
    /*is_ambiguous_... S21125C2::S21125C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C6*), ABISELECT(1328,864), "S21125C2");
    /*is_ambiguous_... S21125C13::S21125C6 */ AMB_check_base_class_offset(lv, (S21125C6*)(S21125C13*), ABISELECT(1328,864), "S21125C2");
    check_base_class_offset(lv, (S20997C6*)(S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(1448,920), "S21125C2");
    check_base_class_offset(lv, (S21125C5*)(S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(1440,916), "S21125C2");
    check_base_class_offset(lv, (S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(1440,916), "S21125C2");
    check_base_class_offset(lv, (S21125C16*)(S21125C15*), ABISELECT(1440,916), "S21125C2");
    check_base_class_offset(lv, (S21125C15*)(S21125C14*), ABISELECT(1440,916), "S21125C2");
    check_base_class_offset(lv, (S21125C14*)(S21125C13*), ABISELECT(1416,908), "S21125C2");
    check_base_class_offset(lv, (S21125C13*), 0, "S21125C2");
    test_class_info(&lv, &cd_S21125C2);
    dp->~S21125C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C2(Test_S21125C2, "S21125C2", ABISELECT(1504,972));

#else // __cplusplus

extern void _ZN8S21125C2C1Ev();
extern void _ZN8S21125C2D2Ev();
Name_Map name_map_S21125C2[] = {
  NSPAIR(_ZN8S21125C2C1Ev),
  NSPAIR(_ZN8S21125C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C6;
extern VTBL_ENTRY _ZTI8S21125C6[];
extern  VTBL_ENTRY _ZTV8S21125C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C10;
extern VTBL_ENTRY _ZTI9S21125C10[];
extern  VTBL_ENTRY _ZTV9S21125C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S21125C12;
extern VTBL_ENTRY _ZTI9S21125C12[];
extern  VTBL_ENTRY _ZTV9S21125C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C12[];
extern Class_Descriptor cd_S21125C9;
extern VTBL_ENTRY _ZTI8S21125C9[];
extern  VTBL_ENTRY _ZTV8S21125C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C9[];
extern Class_Descriptor cd_S21125C4;
extern VTBL_ENTRY _ZTI8S21125C4[];
extern  VTBL_ENTRY _ZTV8S21125C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C4[];
extern Class_Descriptor cd_S21125C3;
extern VTBL_ENTRY _ZTI8S21125C3[];
extern  VTBL_ENTRY _ZTV8S21125C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C3[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C6;
extern VTBL_ENTRY _ZTI8S21125C6[];
extern  VTBL_ENTRY _ZTV8S21125C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C17;
extern VTBL_ENTRY _ZTI9S21125C17[];
extern  VTBL_ENTRY _ZTV9S21125C17[];
extern Class_Descriptor cd_S21125C16;
extern VTBL_ENTRY _ZTI9S21125C16[];
extern  VTBL_ENTRY _ZTV9S21125C16[];
extern Class_Descriptor cd_S21125C15;
extern VTBL_ENTRY _ZTI9S21125C15[];
extern  VTBL_ENTRY _ZTV9S21125C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C15[];
extern Class_Descriptor cd_S21125C14;
extern VTBL_ENTRY _ZTI9S21125C14[];
extern  VTBL_ENTRY _ZTV9S21125C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C14[];
extern Class_Descriptor cd_S21125C13;
extern VTBL_ENTRY _ZTI9S21125C13[];
extern  VTBL_ENTRY _ZTV9S21125C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C13[];
static Base_Class bases_S21125C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21125C5,    ABISELECT(8,4), //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
    6, //immediately_derived
  0, 1},
  {&cd_S21125C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21125C6,    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
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C10,    ABISELECT(152,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1312,856), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1320,860), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21125C12,    ABISELECT(1320,860), //bcp->offset
    56, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21125C9,    ABISELECT(152,96), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21125C4,    ABISELECT(24,12), //bcp->offset
    27, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21125C3,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21125C5,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21125C6,    ABISELECT(1328,864), //bcp->offset
    64, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1448,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21125C5,    ABISELECT(1440,916), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21125C17,    ABISELECT(1440,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21125C16,    ABISELECT(1440,916), //bcp->offset
    -1, //bcp->virtual_function_table_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_S21125C15,    ABISELECT(1440,916), //bcp->offset
    82, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S21125C14,    ABISELECT(1416,908), //bcp->offset
    69, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S21125C13,    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 _ZTI8S21125C2[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C2D1Ev();
extern void _ZN8S21125C2D0Ev();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21125C2D1Ev,_ZTv0_n36_N8S21125C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S21125C2D1Ev,_ZThn4_N8S21125C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21125C2D0Ev,_ZTv0_n36_N8S21125C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S21125C2D0Ev,_ZThn4_N8S21125C2D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21125C2D1Ev,_ZTv0_n32_N8S21125C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S21125C2D1Ev,_ZThn12_N8S21125C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21125C2D0Ev,_ZTv0_n32_N8S21125C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S21125C2D0Ev,_ZThn12_N8S21125C2D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C2D1Ev,_ZTv0_n28_N8S21125C2D1Ev)();
extern void ABISELECT(_ZThn152_N8S21125C2D1Ev,_ZThn96_N8S21125C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21125C2D0Ev,_ZTv0_n28_N8S21125C2D0Ev)();
extern void ABISELECT(_ZThn152_N8S21125C2D0Ev,_ZThn96_N8S21125C2D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C2D1Ev,_ZTvn760_n28_N8S21125C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C2D0Ev,_ZTvn760_n28_N8S21125C2D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C2D1Ev,_ZTvn764_n28_N8S21125C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C2D0Ev,_ZTvn764_n28_N8S21125C2D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S21125C2D1Ev,_ZTv0_n40_N8S21125C2D1Ev)();
extern void ABISELECT(_ZThn1416_N8S21125C2D1Ev,_ZThn908_N8S21125C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21125C2D0Ev,_ZTv0_n40_N8S21125C2D0Ev)();
extern void ABISELECT(_ZThn1416_N8S21125C2D0Ev,_ZThn908_N8S21125C2D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21125C2D1Ev,_ZTv0_n36_N8S21125C2D1Ev)();
extern void ABISELECT(_ZThn1440_N8S21125C2D1Ev,_ZThn916_N8S21125C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21125C2D0Ev,_ZTv0_n36_N8S21125C2D0Ev)();
extern void ABISELECT(_ZThn1440_N8S21125C2D0Ev,_ZThn916_N8S21125C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21125C2[] = {
  ABISELECT(8,4),
  ABISELECT(24,12),
  ABISELECT(1440,916),
  ABISELECT(8,4),
  0,
  ABISELECT(152,96),
  ABISELECT(1416,908),
  ABISELECT(112,56),
  ABISELECT(1328,864),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C2D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(144,92),
  ABISELECT(104,52),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21125C2D1Ev,_ZTv0_n36_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21125C2D0Ev,_ZTv0_n36_N8S21125C2D0Ev),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-24,-12),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21125C2D1Ev,_ZTv0_n32_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21125C2D0Ev,_ZTv0_n32_N8S21125C2D0Ev),
  ABISELECT(-152,-96),
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C2D1Ev,_ZTv0_n28_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C2D0Ev,_ZTv0_n28_N8S21125C2D0Ev),
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C2D1Ev,_ZTvn760_n28_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C2D0Ev,_ZTvn760_n28_N8S21125C2D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C2D1Ev,_ZTvn764_n28_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C2D0Ev,_ZTvn764_n28_N8S21125C2D0Ev),
  0,
  ABISELECT(-1216,-808),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  ABISELECT(-1416,-908),
  ABISELECT(-1392,-896),
  ABISELECT(24,8),
  ABISELECT(-1408,-904),
  ABISELECT(-1416,-908),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1408,-904),
  ABISELECT(-1416,-908),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21125C2D1Ev,_ZTv0_n40_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21125C2D0Ev,_ZTv0_n40_N8S21125C2D0Ev),
  ABISELECT(-1440,-916),
  0,
  ABISELECT(-1440,-916),
  ABISELECT(-1288,-820),
  ABISELECT(-1328,-860),
  ABISELECT(-1432,-912),
  ABISELECT(-1416,-904),
  ABISELECT(-1440,-916),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21125C2D1Ev,_ZTv0_n36_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21125C2D0Ev,_ZTv0_n36_N8S21125C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21125C2[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C13D1Ev();
extern void _ZN9S21125C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C13__8S21125C2[] = {
  ABISELECT(24,12),
  ABISELECT(1440,916),
  ABISELECT(8,4),
  0,
  ABISELECT(152,96),
  ABISELECT(1416,908),
  ABISELECT(112,56),
  ABISELECT(1328,864),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C13D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C6__9S21125C13__8S21125C2[] = {
  0,
  ABISELECT(-1216,-808),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S21125C13D1Ev,_ZTv0_n40_N9S21125C13D1Ev)();
extern void ABISELECT(_ZThn1416_N9S21125C13D1Ev,_ZThn908_N9S21125C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21125C13D0Ev,_ZTv0_n40_N9S21125C13D0Ev)();
extern void ABISELECT(_ZThn1416_N9S21125C13D0Ev,_ZThn908_N9S21125C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21125C14__9S21125C13__8S21125C2[] = {
  ABISELECT(-1416,-908),
  ABISELECT(-1392,-896),
  ABISELECT(24,8),
  ABISELECT(-1408,-904),
  ABISELECT(-1416,-908),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1408,-904),
  ABISELECT(-1416,-908),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21125C13D1Ev,_ZTv0_n40_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21125C13D0Ev,_ZTv0_n40_N9S21125C13D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C13D1Ev,_ZTv0_n28_N9S21125C13D1Ev)();
extern void ABISELECT(_ZThn152_N9S21125C13D1Ev,_ZThn96_N9S21125C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21125C13D0Ev,_ZTv0_n28_N9S21125C13D0Ev)();
extern void ABISELECT(_ZThn152_N9S21125C13D0Ev,_ZThn96_N9S21125C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C13__8S21125C2[] = {
  ABISELECT(-152,-96),
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C13D1Ev,_ZTv0_n28_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C13D0Ev,_ZTv0_n28_N9S21125C13D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__A1__9S21125C13__8S21125C2[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C13D1Ev,_ZTvn760_n28_N9S21125C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C13D0Ev,_ZTvn760_n28_N9S21125C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C13__8S21125C2[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C13D1Ev,_ZTvn760_n28_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C13D0Ev,_ZTvn760_n28_N9S21125C13D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C13D1Ev,_ZTvn764_n28_N9S21125C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C13D0Ev,_ZTvn764_n28_N9S21125C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C13__8S21125C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C13D1Ev,_ZTvn764_n28_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C13D0Ev,_ZTvn764_n28_N9S21125C13D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21125C13D1Ev,_ZTv0_n36_N9S21125C13D1Ev)();
extern void ABISELECT(_ZThn1440_N9S21125C13D1Ev,_ZThn916_N9S21125C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21125C13D0Ev,_ZTv0_n36_N9S21125C13D0Ev)();
extern void ABISELECT(_ZThn1440_N9S21125C13D0Ev,_ZThn916_N9S21125C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21125C15__9S21125C13__8S21125C2[] = {
  ABISELECT(-1440,-916),
  0,
  ABISELECT(-1440,-916),
  ABISELECT(-1288,-820),
  ABISELECT(-1328,-860),
  ABISELECT(-1432,-912),
  ABISELECT(-1416,-904),
  ABISELECT(-1440,-916),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C13D1Ev,_ZTv0_n36_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C13D0Ev,_ZTv0_n36_N9S21125C13D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C13D1Ev,_ZTv0_n32_N9S21125C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S21125C13D1Ev,_ZThn12_N9S21125C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21125C13D0Ev,_ZTv0_n32_N9S21125C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S21125C13D0Ev,_ZThn12_N9S21125C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C13__8S21125C2[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-24,-12),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C13D1Ev,_ZTv0_n32_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C13D0Ev,_ZTv0_n32_N9S21125C13D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C3D1Ev();
extern void _ZN8S21125C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C3__8S21125C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(144,92),
  ABISELECT(104,52),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C3D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21125C3D1Ev,_ZTv0_n32_N8S21125C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21125C3D1Ev,_ZThn8_N8S21125C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21125C3D0Ev,_ZTv0_n32_N8S21125C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21125C3D0Ev,_ZThn8_N8S21125C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C4__8S21125C3__8S21125C2[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-24,-12),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21125C3D1Ev,_ZTv0_n32_N8S21125C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21125C3D0Ev,_ZTv0_n32_N8S21125C3D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C3D1Ev,_ZTv0_n28_N8S21125C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S21125C3D1Ev,_ZThn92_N8S21125C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21125C3D0Ev,_ZTv0_n28_N8S21125C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S21125C3D0Ev,_ZThn92_N8S21125C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C3__8S21125C2[] = {
  ABISELECT(-144,-92),
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C3D1Ev,_ZTv0_n28_N8S21125C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C3D0Ev,_ZTv0_n28_N8S21125C3D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C3D1Ev,_ZTvn760_n28_N8S21125C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C3D0Ev,_ZTvn760_n28_N8S21125C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C3__8S21125C2[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1304,-852),
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C3D1Ev,_ZTvn760_n28_N8S21125C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C3D0Ev,_ZTvn760_n28_N8S21125C3D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C3D1Ev,_ZTvn764_n28_N8S21125C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C3D0Ev,_ZTvn764_n28_N8S21125C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C3__8S21125C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C3D1Ev,_ZTvn764_n28_N8S21125C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C3D0Ev,_ZTvn764_n28_N8S21125C3D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C4D1Ev();
extern void _ZN8S21125C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C4__8S21125C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C68S21125C4__8S21125C2[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C6[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__8S21125C4__8S21125C2[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21125C4D1Ev,_ZThn84_N8S21125C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21125C4D0Ev,_ZThn84_N8S21125C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C4__8S21125C2[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C4__8S21125C2[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C4__8S21125C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C9D1Ev();
extern void _ZN8S21125C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C2[] = {
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C108S21125C9__8S21125C2[] = {
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C108S21125C9__8S21125C2[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C2[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C118S21125C9__8S21125C2[] = {
  0,
  ABISELECT(1304,852),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C12D1Ev();
extern void _ZN9S21125C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C119S21125C128S21125C9__A1__8S21125C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__8S21125C2[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C128S21125C9__8S21125C2[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__8S21125C9__8S21125C2[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C11__8S21125C9__8S21125C2[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C12__8S21125C9__8S21125C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C6__A1__8S21125C2[] = {
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C6[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C14D1Ev();
extern void _ZN9S21125C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C14__8S21125C2[] = {
  ABISELECT(-1392,-896),
  ABISELECT(24,8),
  ABISELECT(-1408,-904),
  ABISELECT(-1416,-908),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1408,-904),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C14D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C14D1Ev,_ZTv0_n28_N9S21125C14D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S21125C14D0Ev,_ZTv0_n28_N9S21125C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C14__8S21125C2[] = {
  ABISELECT(1264,812),
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(1264,812),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C14D1Ev,_ZTv0_n28_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C14D0Ev,_ZTv0_n28_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C14__8S21125C2[] = {
  0,
  ABISELECT(1408,904),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C14D1Ev,_ZTvn760_n28_N9S21125C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C14D0Ev,_ZTvn760_n28_N9S21125C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C14__8S21125C2[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C14D1Ev,_ZTvn760_n28_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C14D0Ev,_ZTvn760_n28_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C14D1Ev,_ZTvn764_n28_N9S21125C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C14D0Ev,_ZTvn764_n28_N9S21125C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C14__8S21125C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C14D1Ev,_ZTvn764_n28_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C14D0Ev,_ZTvn764_n28_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21125C14D1Ev,_ZTv0_n36_N9S21125C14D1Ev)();
extern void ABISELECT(_ZThn24_N9S21125C14D1Ev,_ZThn8_N9S21125C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21125C14D0Ev,_ZTv0_n36_N9S21125C14D0Ev)();
extern void ABISELECT(_ZThn24_N9S21125C14D0Ev,_ZThn8_N9S21125C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21125C15__9S21125C14__8S21125C2[] = {
  ABISELECT(-24,-8),
  0,
  ABISELECT(-1440,-916),
  ABISELECT(-1288,-820),
  ABISELECT(-1328,-860),
  ABISELECT(-1432,-912),
  ABISELECT(-1416,-904),
  ABISELECT(-24,-8),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C14D1Ev,_ZTv0_n36_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C14D0Ev,_ZTv0_n36_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C14D1Ev,_ZTv0_n32_N9S21125C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21125C14D0Ev,_ZTv0_n32_N9S21125C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C14__8S21125C2[] = {
  ABISELECT(1392,896),
  0,
  ABISELECT(-24,-12),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(1392,896),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C14D1Ev,_ZTv0_n32_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C14D0Ev,_ZTv0_n32_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C15D1Ev();
extern void _ZN9S21125C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C15__8S21125C2[] = {
  ABISELECT(-1440,-916),
  ABISELECT(-1288,-820),
  ABISELECT(-1328,-860),
  ABISELECT(-1432,-912),
  ABISELECT(-1416,-904),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C15D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C15__8S21125C2[] = {
  ABISELECT(1416,904),
  0,
  ABISELECT(-24,-12),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(1416,904),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C15__8S21125C2[] = {
  0,
  ABISELECT(1432,912),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C15__8S21125C2[] = {
  ABISELECT(1288,820),
  -40,
  ABISELECT(-152,-96),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(1288,820),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C15D1Ev,_ZTvn760_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C15D0Ev,_ZTvn760_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C15__8S21125C2[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(128,60),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C15D1Ev,_ZTvn760_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C15D0Ev,_ZTvn760_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C15D1Ev,_ZTvn764_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C15D0Ev,_ZTvn764_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C15__8S21125C2[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(120,56),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C15D1Ev,_ZTvn764_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C15D0Ev,_ZTvn764_n28_N9S21125C15D0Ev),
};
static  VTT_ENTRY vtt_S21125C2[] = {
  {&(_ZTV8S21125C2[12]),  12,94},
  {&(_tg__ZTV9S21125C13__8S21125C2[11]),  11,14},
  {&(_tg__ZTV8S21125C6__9S21125C13__8S21125C2[4]),  4,5},
  {&(_tg__ZTV9S21125C14__9S21125C13__8S21125C2[10]),  10,13},
  {&(_tg__ZTV8S21125C9__9S21125C13__8S21125C2[7]),  7,10},
  {&(_tg__ZTV8S21125C5__A1__9S21125C13__8S21125C2[3]),  3,4},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C13__8S21125C2[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C13__8S21125C2[5]),  5,8},
  {&(_tg__ZTV9S21125C15__9S21125C13__8S21125C2[9]),  9,12},
  {&(_tg__ZTV8S21125C4__9S21125C13__8S21125C2[8]),  8,11},
  {&(_ZTV8S21125C2[24]),  24,94},
  {&(_ZTV8S21125C2[35]),  35,94},
  {&(_ZTV8S21125C2[24]),  24,94},
  {&(_ZTV8S21125C2[45]),  45,94},
  {&(_ZTV8S21125C2[53]),  53,94},
  {&(_ZTV8S21125C2[61]),  61,94},
  {&(_ZTV8S21125C2[68]),  68,94},
  {&(_ZTV8S21125C2[79]),  79,94},
  {&(_ZTV8S21125C2[91]),  91,94},
  {&(_tg__ZTV8S21125C3__8S21125C2[8]),  8,11},
  {&(_tg__ZTV8S21125C4__8S21125C3__8S21125C2[8]),  8,11},
  {&(_tg__ZTV8S21125C3__8S21125C2[8]),  8,11},
  {&(_tg__ZTV8S21125C9__8S21125C3__8S21125C2[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C3__8S21125C2[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C3__8S21125C2[5]),  5,8},
  {&(_tg__ZTV8S21125C4__8S21125C2[6]),  6,9},
  {&(_tg__ZTV8S21125C68S21125C4__8S21125C2[3]),  3,4},
  {&(_tg__ZTV8S21125C5__8S21125C4__8S21125C2[3]),  3,4},
  {&(_tg__ZTV8S21125C9__8S21125C4__8S21125C2[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C4__8S21125C2[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C4__8S21125C2[5]),  5,8},
  {&(_tg__ZTV8S21125C9__8S21125C2[6]),  6,9},
  {&(_tg__ZTV9S21125C108S21125C9__8S21125C2[4]),  4,5},
  {&(_tg__ZTV8S21125C5__9S21125C108S21125C9__8S21125C2[3]),  3,4},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C2[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C118S21125C9__8S21125C2[3]),  3,4},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C2[5]),  5,8},
  {&(_tg__ZTV9S21125C119S21125C128S21125C9__A1__8S21125C2[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__8S21125C2[3]),  3,4},
  {&(_tg__ZTV8S21125C5__9S21125C128S21125C9__8S21125C2[3]),  3,4},
  {&(_tg__ZTV8S21125C5__8S21125C9__8S21125C2[3]),  3,4},
  {&(_tg__ZTV9S21125C11__8S21125C9__8S21125C2[5]),  5,8},
  {&(_tg__ZTV9S21125C12__8S21125C9__8S21125C2[5]),  5,8},
  {&(_tg__ZTV8S21125C6__A1__8S21125C2[3]),  3,4},
  {&(_tg__ZTV9S21125C14__8S21125C2[9]),  9,12},
  {&(_tg__ZTV8S21125C9__9S21125C14__8S21125C2[7]),  7,10},
  {&(_tg__ZTV8S21125C5__9S21125C14__8S21125C2[3]),  3,4},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C14__8S21125C2[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C14__8S21125C2[5]),  5,8},
  {&(_tg__ZTV9S21125C15__9S21125C14__8S21125C2[9]),  9,12},
  {&(_tg__ZTV8S21125C4__9S21125C14__8S21125C2[8]),  8,11},
  {&(_tg__ZTV9S21125C15__8S21125C2[7]),  7,10},
  {&(_tg__ZTV8S21125C4__9S21125C15__8S21125C2[8]),  8,11},
  {&(_tg__ZTV8S21125C5__9S21125C15__8S21125C2[3]),  3,4},
  {&(_tg__ZTV8S21125C9__9S21125C15__8S21125C2[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C15__8S21125C2[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C15__8S21125C2[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21125C2[];
extern  VTBL_ENTRY _ZTV8S21125C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C2[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C14D0Ev,_ZTv0_n36_N9S21125C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21125C14D0Ev,_ZThn8_N9S21125C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C14D1Ev,_ZTv0_n36_N9S21125C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21125C14D1Ev,_ZThn8_N9S21125C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21125C4D0Ev,_ZThn84_N8S21125C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21125C4D1Ev,_ZThn84_N8S21125C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C3D0Ev,_ZTv0_n28_N8S21125C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21125C3D0Ev,_ZThn92_N8S21125C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C3D1Ev,_ZTv0_n28_N8S21125C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21125C3D1Ev,_ZThn92_N8S21125C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21125C3D0Ev,_ZTv0_n32_N8S21125C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21125C3D0Ev,_ZThn8_N8S21125C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21125C3D1Ev,_ZTv0_n32_N8S21125C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21125C3D1Ev,_ZThn8_N8S21125C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C13D0Ev,_ZTv0_n32_N9S21125C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21125C13D0Ev,_ZThn12_N9S21125C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C13D1Ev,_ZTv0_n32_N9S21125C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21125C13D1Ev,_ZThn12_N9S21125C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C13D0Ev,_ZTv0_n36_N9S21125C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N9S21125C13D0Ev,_ZThn916_N9S21125C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C13D1Ev,_ZTv0_n36_N9S21125C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N9S21125C13D1Ev,_ZThn916_N9S21125C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C13D0Ev,_ZTv0_n28_N9S21125C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21125C13D0Ev,_ZThn96_N9S21125C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C13D1Ev,_ZTv0_n28_N9S21125C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21125C13D1Ev,_ZThn96_N9S21125C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21125C13D0Ev,_ZTv0_n40_N9S21125C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N9S21125C13D0Ev,_ZThn908_N9S21125C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21125C13D1Ev,_ZTv0_n40_N9S21125C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N9S21125C13D1Ev,_ZThn908_N9S21125C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21125C2D0Ev,_ZTv0_n40_N8S21125C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N8S21125C2D0Ev,_ZThn908_N8S21125C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21125C2D1Ev,_ZTv0_n40_N8S21125C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N8S21125C2D1Ev,_ZThn908_N8S21125C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C2D0Ev,_ZTv0_n28_N8S21125C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21125C2D0Ev,_ZThn96_N8S21125C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C2D1Ev,_ZTv0_n28_N8S21125C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21125C2D1Ev,_ZThn96_N8S21125C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21125C2D0Ev,_ZTv0_n32_N8S21125C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21125C2D0Ev,_ZThn12_N8S21125C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21125C2D1Ev,_ZTv0_n32_N8S21125C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21125C2D1Ev,_ZThn12_N8S21125C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21125C2D0Ev,_ZTv0_n36_N8S21125C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N8S21125C2D0Ev,_ZThn916_N8S21125C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21125C2D0Ev,_ZThn4_N8S21125C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21125C2D1Ev,_ZTv0_n36_N8S21125C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N8S21125C2D1Ev,_ZThn916_N8S21125C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21125C2D1Ev,_ZThn4_N8S21125C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21125C2 = {  "S21125C2", // class name
  bases_S21125C2, 25,
  &(vtc_S21125C2[0]), // expected_vtbl_contents
  &(vtt_S21125C2[0]), // expected_vtt_contents
  ABISELECT(1504,972), // object size
  NSPAIRA(_ZTI8S21125C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21125C2),94, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21125C2),57, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21125C18  : virtual S21125C15 {
  ~S21125C18(); // tgen
  S21125C18(); // tgen
};
//SIG(-1 S21125C18) C1{ VBC2{ VBC3{ VBC4{ v1} BC5{ BC4 VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC7 BC9{ VBC4 FC5[9]} BC10{ VBC6 VBC4 BC7 vd} BC11{ BC10 vd}} vd} BC12{ BC13{ BC6 BC4} FD}}}


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

static void Test_S21125C18()
{
  extern Class_Descriptor cd_S21125C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(88,229)];
    init_test(&cd_S21125C18, buf);
    S21125C18 *dp, &lv = *(dp=new (buf) S21125C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1392,912), "sizeof(S21125C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21125C18)");
    /*is_ambiguous_... S21125C4::S21125C5 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C4*), 0, "S21125C18");
    check_base_class_offset(lv, (S21125C5*)(S21125C10*)(S21125C9*), 0, "S21125C18");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C9*), 0, "S21125C18");
    check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C12*)(S21125C9*), 0, "S21125C18");
    check_base_class_offset(lv, (S21125C5*)(S21125C6*)(S21125C4*), ABISELECT(80,60), "S21125C18");
    check_base_class_offset(lv, (S20997C6*)(S21125C6*)(S21125C4*), ABISELECT(168,104), "S21125C18");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C9*), ABISELECT(168,104), "S21125C18");
    check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(168,104), "S21125C18");
    check_base_class_offset(lv, (S4227C37*)(S21125C6*)(S21125C4*), ABISELECT(80,60), "S21125C18");
    check_base_class_offset(lv, (S21125C6*)(S21125C4*), ABISELECT(80,60), "S21125C18");
    /*is_ambiguous_... S21125C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C9*), 0, "S21125C18");
    check_base_class_offset(lv, (S21125C10*)(S21125C9*), ABISELECT(208,144), "S21125C18");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C9*), ABISELECT(1368,904), "S21125C18");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C11*)(S21125C9*), ABISELECT(1368,904), "S21125C18");
    check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1376,908), "S21125C18");
    check_base_class_offset(lv, (S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1376,908), "S21125C18");
    check_base_class_offset(lv, (S21125C12*)(S21125C9*), ABISELECT(1376,908), "S21125C18");
    check_base_class_offset(lv, (S21125C9*)(S21125C4*), ABISELECT(208,144), "S21125C18");
    check_base_class_offset(lv, (S21125C4*)(S21125C15*), ABISELECT(80,60), "S21125C18");
    check_base_class_offset(lv, (S20997C6*)(S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(24,8), "S21125C18");
    check_base_class_offset(lv, (S21125C5*)(S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(16,4), "S21125C18");
    check_base_class_offset(lv, (S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(16,4), "S21125C18");
    check_base_class_offset(lv, (S21125C16*)(S21125C15*), ABISELECT(16,4), "S21125C18");
    check_base_class_offset(lv, (S21125C15*), ABISELECT(16,4), "S21125C18");
    test_class_info(&lv, &cd_S21125C18);
    dp->~S21125C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C18(Test_S21125C18, "S21125C18", ABISELECT(1392,912));

#else // __cplusplus

extern void _ZN9S21125C18C1Ev();
extern void _ZN9S21125C18D1Ev();
Name_Map name_map_S21125C18[] = {
  NSPAIR(_ZN9S21125C18C1Ev),
  NSPAIR(_ZN9S21125C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C6;
extern VTBL_ENTRY _ZTI8S21125C6[];
extern  VTBL_ENTRY _ZTV8S21125C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C10;
extern VTBL_ENTRY _ZTI9S21125C10[];
extern  VTBL_ENTRY _ZTV9S21125C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S21125C12;
extern VTBL_ENTRY _ZTI9S21125C12[];
extern  VTBL_ENTRY _ZTV9S21125C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C12[];
extern Class_Descriptor cd_S21125C9;
extern VTBL_ENTRY _ZTI8S21125C9[];
extern  VTBL_ENTRY _ZTV8S21125C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C9[];
extern Class_Descriptor cd_S21125C4;
extern VTBL_ENTRY _ZTI8S21125C4[];
extern  VTBL_ENTRY _ZTV8S21125C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C4[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C17;
extern VTBL_ENTRY _ZTI9S21125C17[];
extern  VTBL_ENTRY _ZTV9S21125C17[];
extern Class_Descriptor cd_S21125C16;
extern VTBL_ENTRY _ZTI9S21125C16[];
extern  VTBL_ENTRY _ZTV9S21125C16[];
extern Class_Descriptor cd_S21125C15;
extern VTBL_ENTRY _ZTI9S21125C15[];
extern  VTBL_ENTRY _ZTV9S21125C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C15[];
static Base_Class bases_S21125C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21125C5,    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
    6, //immediately_derived
  0, 1},
  {&cd_S21125C5,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(168,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21125C6,    ABISELECT(80,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C10,    ABISELECT(208,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1368,904), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1368,904), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1376,908), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1376,908), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21125C12,    ABISELECT(1376,908), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21125C9,    ABISELECT(208,144), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21125C4,    ABISELECT(80,60), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(24,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C5,    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
    10, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S21125C17,    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
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21125C16,    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
    12, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21125C15,    ABISELECT(16,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //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 _ZTI9S21125C18[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C18D1Ev();
extern void _ZN9S21125C18D0Ev();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21125C18D1Ev,_ZTv0_n36_N9S21125C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S21125C18D1Ev,_ZThn4_N9S21125C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21125C18D0Ev,_ZTv0_n36_N9S21125C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S21125C18D0Ev,_ZThn4_N9S21125C18D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C18D1Ev,_ZTv0_n32_N9S21125C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S21125C18D1Ev,_ZThn60_N9S21125C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21125C18D0Ev,_ZTv0_n32_N9S21125C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S21125C18D0Ev,_ZThn60_N9S21125C18D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C18D1Ev,_ZTv0_n28_N9S21125C18D1Ev)();
extern void ABISELECT(_ZThn208_N9S21125C18D1Ev,_ZThn144_N9S21125C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21125C18D0Ev,_ZTv0_n28_N9S21125C18D0Ev)();
extern void ABISELECT(_ZThn208_N9S21125C18D0Ev,_ZThn144_N9S21125C18D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C18D1Ev,_ZTvn760_n28_N9S21125C18D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C18D0Ev,_ZTvn760_n28_N9S21125C18D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C18D1Ev,_ZTvn764_n28_N9S21125C18D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C18D0Ev,_ZTvn764_n28_N9S21125C18D0Ev)();
static  VTBL_ENTRY vtc_S21125C18[] = {
  0,
  ABISELECT(208,144),
  ABISELECT(168,104),
  0,
  ABISELECT(80,60),
  ABISELECT(16,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C18D0Ev,
  ABISELECT(-16,-4),
  0,
  ABISELECT(-16,-4),
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(-16,-4),
  ABISELECT(64,56),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C18D1Ev,_ZTv0_n36_N9S21125C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C18D0Ev,_ZTv0_n36_N9S21125C18D0Ev),
  ABISELECT(-80,-60),
  0,
  ABISELECT(-80,-60),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C18D1Ev,_ZTv0_n32_N9S21125C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C18D0Ev,_ZTv0_n32_N9S21125C18D0Ev),
  ABISELECT(-208,-144),
  -40,
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C18D1Ev,_ZTv0_n28_N9S21125C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C18D0Ev,_ZTv0_n28_N9S21125C18D0Ev),
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1368,-904),
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C18D1Ev,_ZTvn760_n28_N9S21125C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C18D0Ev,_ZTvn760_n28_N9S21125C18D0Ev),
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1376,-908),
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C18D1Ev,_ZTvn764_n28_N9S21125C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C18D0Ev,_ZTvn764_n28_N9S21125C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S21125C18[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C15D1Ev();
extern void _ZN9S21125C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C15__9S21125C18[] = {
  ABISELECT(-16,-4),
  ABISELECT(192,140),
  ABISELECT(152,100),
  ABISELECT(-16,-4),
  ABISELECT(64,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C15D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev)();
extern void ABISELECT(_ZThn64_N9S21125C15D1Ev,_ZThn56_N9S21125C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev)();
extern void ABISELECT(_ZThn64_N9S21125C15D0Ev,_ZThn56_N9S21125C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C15__9S21125C18[] = {
  ABISELECT(-64,-56),
  0,
  ABISELECT(-80,-60),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  ABISELECT(-64,-56),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C15__9S21125C18[] = {
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZThn192_N9S21125C15D1Ev,_ZThn140_N9S21125C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev)();
extern void ABISELECT(_ZThn192_N9S21125C15D0Ev,_ZThn140_N9S21125C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C15__9S21125C18[] = {
  ABISELECT(-192,-140),
  -40,
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-192,-140),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C15D1Ev,_ZTvn760_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C15D0Ev,_ZTvn760_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C15__9S21125C18[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1352,-900),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C15D1Ev,_ZTvn760_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C15D0Ev,_ZTvn760_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C15D1Ev,_ZTvn764_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C15D0Ev,_ZTvn764_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C15__9S21125C18[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1360,-904),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C15D1Ev,_ZTvn764_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C15D0Ev,_ZTvn764_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C4D1Ev();
extern void _ZN8S21125C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C18[] = {
  ABISELECT(-80,-60),
  ABISELECT(128,84),
  ABISELECT(-80,-60),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C68S21125C4__9S21125C18[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C6[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__8S21125C4__9S21125C18[] = {
  0,
  ABISELECT(80,60),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21125C4D1Ev,_ZThn84_N8S21125C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21125C4D0Ev,_ZThn84_N8S21125C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C4__9S21125C18[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C4__9S21125C18[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C4__9S21125C18[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C9D1Ev();
extern void _ZN8S21125C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C18[] = {
  -40,
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C108S21125C9__9S21125C18[] = {
  ABISELECT(-208,-144),
  ABISELECT(-208,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C108S21125C9__9S21125C18[] = {
  0,
  ABISELECT(208,144),
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C18[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C118S21125C9__9S21125C18[] = {
  0,
  ABISELECT(1368,904),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C12D1Ev();
extern void _ZN9S21125C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C18[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C119S21125C128S21125C9__A1__9S21125C18[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__9S21125C18[] = {
  0,
  ABISELECT(1376,908),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C128S21125C9__9S21125C18[] = {
  0,
  ABISELECT(1376,908),
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__8S21125C9__9S21125C18[] = {
  0,
  ABISELECT(208,144),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C11__8S21125C9__9S21125C18[] = {
  ABISELECT(-1368,-904),
  ABISELECT(-1200,-800),
  ABISELECT(-1368,-904),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C12__8S21125C9__9S21125C18[] = {
  ABISELECT(-1376,-908),
  ABISELECT(-1208,-804),
  ABISELECT(-1376,-908),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev),
};
static  VTT_ENTRY vtt_S21125C18[] = {
  {&(_ZTV9S21125C18[9]),  9,61},
  {&(_ZTV9S21125C18[21]),  21,61},
  {&(_ZTV9S21125C18[32]),  32,61},
  {&(_ZTV9S21125C18[9]),  9,61},
  {&(_ZTV9S21125C18[42]),  42,61},
  {&(_ZTV9S21125C18[50]),  50,61},
  {&(_ZTV9S21125C18[58]),  58,61},
  {&(_tg__ZTV9S21125C15__9S21125C18[7]),  7,10},
  {&(_tg__ZTV8S21125C4__9S21125C15__9S21125C18[8]),  8,11},
  {&(_tg__ZTV8S21125C5__9S21125C15__9S21125C18[3]),  3,4},
  {&(_tg__ZTV8S21125C9__9S21125C15__9S21125C18[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C15__9S21125C18[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C15__9S21125C18[5]),  5,8},
  {&(_tg__ZTV8S21125C4__9S21125C18[6]),  6,9},
  {&(_tg__ZTV8S21125C68S21125C4__9S21125C18[3]),  3,4},
  {&(_tg__ZTV8S21125C5__8S21125C4__9S21125C18[3]),  3,4},
  {&(_tg__ZTV8S21125C9__8S21125C4__9S21125C18[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C4__9S21125C18[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C4__9S21125C18[5]),  5,8},
  {&(_tg__ZTV8S21125C9__9S21125C18[6]),  6,9},
  {&(_tg__ZTV9S21125C108S21125C9__9S21125C18[4]),  4,5},
  {&(_tg__ZTV8S21125C5__9S21125C108S21125C9__9S21125C18[3]),  3,4},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C18[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C118S21125C9__9S21125C18[3]),  3,4},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C18[5]),  5,8},
  {&(_tg__ZTV9S21125C119S21125C128S21125C9__A1__9S21125C18[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__9S21125C18[3]),  3,4},
  {&(_tg__ZTV8S21125C5__9S21125C128S21125C9__9S21125C18[3]),  3,4},
  {&(_tg__ZTV8S21125C5__8S21125C9__9S21125C18[3]),  3,4},
  {&(_tg__ZTV9S21125C11__8S21125C9__9S21125C18[5]),  5,8},
  {&(_tg__ZTV9S21125C12__8S21125C9__9S21125C18[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21125C18[];
extern  VTBL_ENTRY _ZTV9S21125C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C18[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21125C4D0Ev,_ZThn84_N8S21125C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21125C4D1Ev,_ZThn84_N8S21125C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21125C15D0Ev,_ZThn140_N9S21125C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S21125C15D1Ev,_ZThn140_N9S21125C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21125C15D0Ev,_ZThn56_N9S21125C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S21125C15D1Ev,_ZThn56_N9S21125C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C18D0Ev,_ZTv0_n28_N9S21125C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S21125C18D0Ev,_ZThn144_N9S21125C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C18D1Ev,_ZTv0_n28_N9S21125C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S21125C18D1Ev,_ZThn144_N9S21125C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C18D0Ev,_ZTv0_n32_N9S21125C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21125C18D0Ev,_ZThn60_N9S21125C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C18D1Ev,_ZTv0_n32_N9S21125C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S21125C18D1Ev,_ZThn60_N9S21125C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C18D0Ev,_ZTv0_n36_N9S21125C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21125C18D0Ev,_ZThn4_N9S21125C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C18D1Ev,_ZTv0_n36_N9S21125C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21125C18D1Ev,_ZThn4_N9S21125C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21125C18 = {  "S21125C18", // class name
  bases_S21125C18, 19,
  &(vtc_S21125C18[0]), // expected_vtbl_contents
  &(vtt_S21125C18[0]), // expected_vtt_contents
  ABISELECT(1392,912), // object size
  NSPAIRA(_ZTI9S21125C18),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21125C18),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21125C18),31, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21125C1  : virtual S21125C2 , S21125C18 {
  virtual  ~S21125C1(); // _ZN8S21125C1D2Ev
  S21125C1(); // tgen
};
//SIG(1 S21125C1) C1{ VBC2{ VBC3{ VBC4{ VBC5{ v1} BC6{ BC5 VBC7{ m FL[5]} BC8{ m} Fp[10]} VBC9{ VBC8 BC10{ VBC5 FC6[9]} BC11{ VBC7 VBC5 BC8 vd} BC12{ BC11 vd}} vd} Fi} BC13{ VBC6 VBC14{ VBC7 VBC9 VBC15{ VBC4 BC16{ BC17{ BC7 BC5} FD}} vd Fp}} vd} BC18{ VBC15} vd}


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

static void Test_S21125C1()
{
  extern Class_Descriptor cd_S21125C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(95,245)];
    init_test(&cd_S21125C1, buf);
    S21125C1 *dp, &lv = *(dp=new (buf) S21125C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1504,976), "sizeof(S21125C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21125C1)");
    /*is_ambiguous_... S21125C4::S21125C5 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C4*), ABISELECT(16,8), "S21125C1");
    check_base_class_offset(lv, (S21125C5*)(S21125C10*)(S21125C9*), ABISELECT(16,8), "S21125C1");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C9*), ABISELECT(16,8), "S21125C1");
    check_base_class_offset(lv, (S21125C5*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(16,8), "S21125C1");
    check_base_class_offset(lv, (S21125C5*)(S21125C6*)(S21125C4*), ABISELECT(32,16), "S21125C1");
    check_base_class_offset(lv, (S20997C6*)(S21125C6*)(S21125C4*), ABISELECT(120,60), "S21125C1");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C9*), ABISELECT(120,60), "S21125C1");
    check_base_class_offset(lv, (S20997C6*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(120,60), "S21125C1");
    /*is_ambiguous_... S21125C1::S21125C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C6*), ABISELECT(120,60), "S21125C1");
    /*is_ambiguous_... S21125C14::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21125C14*), ABISELECT(120,60), "S21125C1");
    check_base_class_offset(lv, (S4227C37*)(S21125C6*)(S21125C4*), ABISELECT(32,16), "S21125C1");
    check_base_class_offset(lv, (S21125C6*)(S21125C4*), ABISELECT(32,16), "S21125C1");
    /*is_ambiguous_... S21125C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C9*), 0, "S21125C1");
    check_base_class_offset(lv, (S21125C10*)(S21125C9*), ABISELECT(160,100), "S21125C1");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C9*), ABISELECT(1320,860), "S21125C1");
    /*is_ambiguous_... S21125C9::S21125C11 */ AMB_check_base_class_offset(lv, (S21125C11*)(S21125C9*), ABISELECT(1320,860), "S21125C1");
    check_base_class_offset(lv, (S4227C37*)(S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1328,864), "S21125C1");
    check_base_class_offset(lv, (S21125C11*)(S21125C12*)(S21125C9*), ABISELECT(1328,864), "S21125C1");
    check_base_class_offset(lv, (S21125C12*)(S21125C9*), ABISELECT(1328,864), "S21125C1");
    check_base_class_offset(lv, (S21125C9*)(S21125C4*), ABISELECT(160,100), "S21125C1");
    check_base_class_offset(lv, (S21125C9*)(S21125C14*), ABISELECT(160,100), "S21125C1");
    check_base_class_offset(lv, (S21125C4*)(S21125C3*), ABISELECT(32,16), "S21125C1");
    check_base_class_offset(lv, (S21125C4*)(S21125C15*), ABISELECT(32,16), "S21125C1");
    check_base_class_offset(lv, (S21125C3*)(S21125C2*), ABISELECT(16,8), "S21125C1");
    /*is_ambiguous_... S21125C1::S21125C6 */ AMB_check_base_class_offset(lv, (S21125C5*)(S21125C6*), ABISELECT(1336,868), "S21125C1");
    /*is_ambiguous_... S21125C1::S21125C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21125C6*), ABISELECT(1336,868), "S21125C1");
    /*is_ambiguous_... S21125C13::S21125C6 */ AMB_check_base_class_offset(lv, (S21125C6*)(S21125C13*)(S21125C2*), ABISELECT(1336,868), "S21125C1");
    check_base_class_offset(lv, (S20997C6*)(S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(1448,924), "S21125C1");
    check_base_class_offset(lv, (S21125C5*)(S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(1440,920), "S21125C1");
    check_base_class_offset(lv, (S21125C17*)(S21125C16*)(S21125C15*), ABISELECT(1440,920), "S21125C1");
    check_base_class_offset(lv, (S21125C16*)(S21125C15*), ABISELECT(1440,920), "S21125C1");
    check_base_class_offset(lv, (S21125C15*)(S21125C14*), ABISELECT(1440,920), "S21125C1");
    check_base_class_offset(lv, (S21125C15*)(S21125C18*), ABISELECT(1440,920), "S21125C1");
    check_base_class_offset(lv, (S21125C14*)(S21125C13*)(S21125C2*), ABISELECT(1424,912), "S21125C1");
    check_base_class_offset(lv, (S21125C13*)(S21125C2*), ABISELECT(8,4), "S21125C1");
    check_base_class_offset(lv, (S21125C2*), ABISELECT(8,4), "S21125C1");
    check_base_class_offset(lv, (S21125C18*), 0, "S21125C1");
    test_class_info(&lv, &cd_S21125C1);
    dp->~S21125C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21125C1(Test_S21125C1, "S21125C1", ABISELECT(1504,976));

#else // __cplusplus

extern void _ZN8S21125C1C1Ev();
extern void _ZN8S21125C1D2Ev();
Name_Map name_map_S21125C1[] = {
  NSPAIR(_ZN8S21125C1C1Ev),
  NSPAIR(_ZN8S21125C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C6;
extern VTBL_ENTRY _ZTI8S21125C6[];
extern  VTBL_ENTRY _ZTV8S21125C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C10;
extern VTBL_ENTRY _ZTI9S21125C10[];
extern  VTBL_ENTRY _ZTV9S21125C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C11;
extern VTBL_ENTRY _ZTI9S21125C11[];
extern  VTBL_ENTRY _ZTV9S21125C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C11[];
extern Class_Descriptor cd_S21125C12;
extern VTBL_ENTRY _ZTI9S21125C12[];
extern  VTBL_ENTRY _ZTV9S21125C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C12[];
extern Class_Descriptor cd_S21125C9;
extern VTBL_ENTRY _ZTI8S21125C9[];
extern  VTBL_ENTRY _ZTV8S21125C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C9[];
extern Class_Descriptor cd_S21125C4;
extern VTBL_ENTRY _ZTI8S21125C4[];
extern  VTBL_ENTRY _ZTV8S21125C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C4[];
extern Class_Descriptor cd_S21125C3;
extern VTBL_ENTRY _ZTI8S21125C3[];
extern  VTBL_ENTRY _ZTV8S21125C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C3[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21125C6;
extern VTBL_ENTRY _ZTI8S21125C6[];
extern  VTBL_ENTRY _ZTV8S21125C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C6[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21125C5;
extern VTBL_ENTRY _ZTI8S21125C5[];
extern  VTBL_ENTRY _ZTV8S21125C5[];
extern Class_Descriptor cd_S21125C17;
extern VTBL_ENTRY _ZTI9S21125C17[];
extern  VTBL_ENTRY _ZTV9S21125C17[];
extern Class_Descriptor cd_S21125C16;
extern VTBL_ENTRY _ZTI9S21125C16[];
extern  VTBL_ENTRY _ZTV9S21125C16[];
extern Class_Descriptor cd_S21125C15;
extern VTBL_ENTRY _ZTI9S21125C15[];
extern  VTBL_ENTRY _ZTV9S21125C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C15[];
extern Class_Descriptor cd_S21125C14;
extern VTBL_ENTRY _ZTI9S21125C14[];
extern  VTBL_ENTRY _ZTV9S21125C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C14[];
extern Class_Descriptor cd_S21125C13;
extern VTBL_ENTRY _ZTI9S21125C13[];
extern  VTBL_ENTRY _ZTV9S21125C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C13[];
extern Class_Descriptor cd_S21125C2;
extern VTBL_ENTRY _ZTI8S21125C2[];
extern  VTBL_ENTRY _ZTV8S21125C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C2[];
extern Class_Descriptor cd_S21125C18;
extern VTBL_ENTRY _ZTI9S21125C18[];
extern  VTBL_ENTRY _ZTV9S21125C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21125C18[];
static Base_Class bases_S21125C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21125C5,    ABISELECT(16,8), //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
    6, //immediately_derived
  0, 1},
  {&cd_S21125C5,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21125C6,    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
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C10,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21125C11,    ABISELECT(1320,860), //bcp->offset
    65, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21125C11,    ABISELECT(1328,864), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21125C12,    ABISELECT(1328,864), //bcp->offset
    73, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21125C9,    ABISELECT(160,100), //bcp->offset
    55, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21125C4,    ABISELECT(32,16), //bcp->offset
    44, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21125C3,    ABISELECT(16,8), //bcp->offset
    32, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S21125C5,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S21125C6,    ABISELECT(1336,868), //bcp->offset
    81, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    62, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(1448,924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21125C5,    ABISELECT(1440,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21125C17,    ABISELECT(1440,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21125C16,    ABISELECT(1440,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21125C15,    ABISELECT(1440,920), //bcp->offset
    99, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    70, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S21125C14,    ABISELECT(1424,912), //bcp->offset
    86, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S21125C13,    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
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S21125C2,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21125C18,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21125C1[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C1D1Ev();
extern void _ZN8S21125C1D0Ev();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n104_N8S21125C1D1Ev,_ZTv0_n52_N8S21125C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S21125C1D1Ev,_ZThn4_N8S21125C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S21125C1D0Ev,_ZTv0_n52_N8S21125C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S21125C1D0Ev,_ZThn4_N8S21125C1D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21125C1D1Ev,_ZTv0_n36_N8S21125C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21125C1D1Ev,_ZThn8_N8S21125C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21125C1D0Ev,_ZTv0_n36_N8S21125C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21125C1D0Ev,_ZThn8_N8S21125C1D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21125C1D1Ev,_ZTv0_n32_N8S21125C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S21125C1D1Ev,_ZThn16_N8S21125C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21125C1D0Ev,_ZTv0_n32_N8S21125C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S21125C1D0Ev,_ZThn16_N8S21125C1D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C1D1Ev,_ZTv0_n28_N8S21125C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S21125C1D1Ev,_ZThn100_N8S21125C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21125C1D0Ev,_ZTv0_n28_N8S21125C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S21125C1D0Ev,_ZThn100_N8S21125C1D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C1D1Ev,_ZTvn760_n28_N8S21125C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C1D0Ev,_ZTvn760_n28_N8S21125C1D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C1D1Ev,_ZTvn764_n28_N8S21125C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C1D0Ev,_ZTvn764_n28_N8S21125C1D0Ev)();
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S21125C1D1Ev,_ZTv0_n40_N8S21125C1D1Ev)();
extern void ABISELECT(_ZThn1424_N8S21125C1D1Ev,_ZThn912_N8S21125C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21125C1D0Ev,_ZTv0_n40_N8S21125C1D0Ev)();
extern void ABISELECT(_ZThn1424_N8S21125C1D0Ev,_ZThn912_N8S21125C1D0Ev)() __attribute__((weak));
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21125C1D1Ev,_ZTv0_n36_N8S21125C1D1Ev)();
extern void ABISELECT(_ZThn1440_N8S21125C1D1Ev,_ZThn920_N8S21125C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21125C1D0Ev,_ZTv0_n36_N8S21125C1D0Ev)();
extern void ABISELECT(_ZThn1440_N8S21125C1D0Ev,_ZThn920_N8S21125C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21125C1[] = {
  ABISELECT(1424,912),
  ABISELECT(1336,868),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  ABISELECT(160,100),
  ABISELECT(120,60),
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(1440,920),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C1[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(24,12),
  ABISELECT(1432,916),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(152,96),
  ABISELECT(1416,908),
  ABISELECT(112,56),
  ABISELECT(1328,864),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21125C1[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S21125C1D1Ev,_ZTv0_n52_N8S21125C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S21125C1D0Ev,_ZTv0_n52_N8S21125C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(104,52),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21125C1[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21125C1D1Ev,_ZTv0_n36_N8S21125C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21125C1D0Ev,_ZTv0_n36_N8S21125C1D0Ev),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21125C1[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21125C1D1Ev,_ZTv0_n32_N8S21125C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21125C1D0Ev,_ZTv0_n32_N8S21125C1D0Ev),
  ABISELECT(-160,-100),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S21125C1[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C1D1Ev,_ZTv0_n28_N8S21125C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C1D0Ev,_ZTv0_n28_N8S21125C1D0Ev),
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S21125C1[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C1D1Ev,_ZTvn760_n28_N8S21125C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C1D0Ev,_ZTvn760_n28_N8S21125C1D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S21125C1[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C1D1Ev,_ZTvn764_n28_N8S21125C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C1D0Ev,_ZTvn764_n28_N8S21125C1D0Ev),
  0,
  ABISELECT(-1216,-808),
  ABISELECT(-1336,-868),
  (VTBL_ENTRY)&(_ZTI8S21125C1[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  ABISELECT(-1424,-912),
  ABISELECT(-1392,-896),
  ABISELECT(16,8),
  ABISELECT(-1408,-904),
  ABISELECT(-1424,-912),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1408,-904),
  ABISELECT(-1424,-912),
  (VTBL_ENTRY)&(_ZTI8S21125C1[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21125C1D1Ev,_ZTv0_n40_N8S21125C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21125C1D0Ev,_ZTv0_n40_N8S21125C1D0Ev),
  ABISELECT(-1440,-920),
  0,
  ABISELECT(-1440,-920),
  ABISELECT(-1280,-820),
  ABISELECT(-1320,-860),
  ABISELECT(-1424,-912),
  ABISELECT(-1408,-904),
  ABISELECT(-1440,-920),
  (VTBL_ENTRY)&(_ZTI8S21125C1[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21125C1D1Ev,_ZTv0_n36_N8S21125C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21125C1D0Ev,_ZTv0_n36_N8S21125C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21125C1[];
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C18D1Ev();
extern void _ZN9S21125C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C18__8S21125C1[] = {
  0,
  ABISELECT(160,100),
  ABISELECT(120,60),
  ABISELECT(16,8),
  ABISELECT(32,16),
  ABISELECT(1440,920),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C18D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C18D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21125C18D1Ev,_ZTv0_n36_N9S21125C18D1Ev)();
extern void ABISELECT(_ZThn1440_N9S21125C18D1Ev,_ZThn920_N9S21125C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21125C18D0Ev,_ZTv0_n36_N9S21125C18D0Ev)();
extern void ABISELECT(_ZThn1440_N9S21125C18D0Ev,_ZThn920_N9S21125C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21125C15__9S21125C18__8S21125C1[] = {
  ABISELECT(-1440,-920),
  0,
  ABISELECT(-1440,-920),
  ABISELECT(-1280,-820),
  ABISELECT(-1320,-860),
  ABISELECT(-1424,-912),
  ABISELECT(-1408,-904),
  ABISELECT(-1440,-920),
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C18D1Ev,_ZTv0_n36_N9S21125C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C18D0Ev,_ZTv0_n36_N9S21125C18D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C18D1Ev,_ZTv0_n32_N9S21125C18D1Ev)();
extern void ABISELECT(_ZThn32_N9S21125C18D1Ev,_ZThn16_N9S21125C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21125C18D0Ev,_ZTv0_n32_N9S21125C18D0Ev)();
extern void ABISELECT(_ZThn32_N9S21125C18D0Ev,_ZThn16_N9S21125C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C18__8S21125C1[] = {
  ABISELECT(-32,-16),
  0,
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C18D1Ev,_ZTv0_n32_N9S21125C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C18D0Ev,_ZTv0_n32_N9S21125C18D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C18__8S21125C1[] = {
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C18D1Ev,_ZTv0_n28_N9S21125C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S21125C18D1Ev,_ZThn100_N9S21125C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21125C18D0Ev,_ZTv0_n28_N9S21125C18D0Ev)();
extern void ABISELECT(_ZThn160_N9S21125C18D0Ev,_ZThn100_N9S21125C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C18__8S21125C1[] = {
  ABISELECT(-160,-100),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C18D1Ev,_ZTv0_n28_N9S21125C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C18D0Ev,_ZTv0_n28_N9S21125C18D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C18D1Ev,_ZTvn760_n28_N9S21125C18D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C18D0Ev,_ZTvn760_n28_N9S21125C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C18__8S21125C1[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C18D1Ev,_ZTvn760_n28_N9S21125C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C18D0Ev,_ZTvn760_n28_N9S21125C18D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C18D1Ev,_ZTvn764_n28_N9S21125C18D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C18D0Ev,_ZTvn764_n28_N9S21125C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C18__8S21125C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI9S21125C18[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C18D1Ev,_ZTvn764_n28_N9S21125C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C18D0Ev,_ZTvn764_n28_N9S21125C18D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C2D1Ev();
extern void _ZN8S21125C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C2__8S21125C1[] = {
  ABISELECT(8,4),
  ABISELECT(24,12),
  ABISELECT(1432,916),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(152,96),
  ABISELECT(1416,908),
  ABISELECT(112,56),
  ABISELECT(1328,864),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C2D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C13D1Ev();
extern void _ZN9S21125C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C138S21125C2__8S21125C1[] = {
  ABISELECT(24,12),
  ABISELECT(1432,916),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(152,96),
  ABISELECT(1416,908),
  ABISELECT(112,56),
  ABISELECT(1328,864),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C13D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C6__9S21125C138S21125C2__8S21125C1[] = {
  0,
  ABISELECT(-1216,-808),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N9S21125C13D1Ev,_ZTv0_n40_N9S21125C13D1Ev)();
extern void ABISELECT(_ZThn1416_N9S21125C13D1Ev,_ZThn908_N9S21125C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N9S21125C13D0Ev,_ZTv0_n40_N9S21125C13D0Ev)();
extern void ABISELECT(_ZThn1416_N9S21125C13D0Ev,_ZThn908_N9S21125C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21125C14__9S21125C138S21125C2__8S21125C1[] = {
  ABISELECT(-1416,-908),
  ABISELECT(-1392,-896),
  ABISELECT(16,8),
  ABISELECT(-1408,-904),
  ABISELECT(-1424,-912),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1408,-904),
  ABISELECT(-1416,-908),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21125C13D1Ev,_ZTv0_n40_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N9S21125C13D0Ev,_ZTv0_n40_N9S21125C13D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C13D1Ev,_ZTv0_n28_N9S21125C13D1Ev)();
extern void ABISELECT(_ZThn152_N9S21125C13D1Ev,_ZThn96_N9S21125C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S21125C13D0Ev,_ZTv0_n28_N9S21125C13D0Ev)();
extern void ABISELECT(_ZThn152_N9S21125C13D0Ev,_ZThn96_N9S21125C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C138S21125C2__8S21125C1[] = {
  ABISELECT(-152,-96),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C13D1Ev,_ZTv0_n28_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C13D0Ev,_ZTv0_n28_N9S21125C13D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__A1__9S21125C138S21125C2__8S21125C1[] = {
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C13D1Ev,_ZTvn760_n28_N9S21125C13D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C13D0Ev,_ZTvn760_n28_N9S21125C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C138S21125C2__8S21125C1[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C13D1Ev,_ZTvn760_n28_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C13D0Ev,_ZTvn760_n28_N9S21125C13D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C13D1Ev,_ZTvn764_n28_N9S21125C13D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C13D0Ev,_ZTvn764_n28_N9S21125C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C138S21125C2__8S21125C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C13D1Ev,_ZTvn764_n28_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C13D0Ev,_ZTvn764_n28_N9S21125C13D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21125C13D1Ev,_ZTv0_n36_N9S21125C13D1Ev)();
extern void ABISELECT(_ZThn1432_N9S21125C13D1Ev,_ZThn916_N9S21125C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21125C13D0Ev,_ZTv0_n36_N9S21125C13D0Ev)();
extern void ABISELECT(_ZThn1432_N9S21125C13D0Ev,_ZThn916_N9S21125C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21125C15__9S21125C138S21125C2__8S21125C1[] = {
  ABISELECT(-1432,-916),
  0,
  ABISELECT(-1440,-920),
  ABISELECT(-1280,-820),
  ABISELECT(-1320,-860),
  ABISELECT(-1424,-912),
  ABISELECT(-1408,-904),
  ABISELECT(-1432,-916),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C13D1Ev,_ZTv0_n36_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C13D0Ev,_ZTv0_n36_N9S21125C13D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C13D1Ev,_ZTv0_n32_N9S21125C13D1Ev)();
extern void ABISELECT(_ZThn24_N9S21125C13D1Ev,_ZThn12_N9S21125C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N9S21125C13D0Ev,_ZTv0_n32_N9S21125C13D0Ev)();
extern void ABISELECT(_ZThn24_N9S21125C13D0Ev,_ZThn12_N9S21125C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C138S21125C2__8S21125C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S21125C13[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C13D1Ev,_ZTv0_n32_N9S21125C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C13D0Ev,_ZTv0_n32_N9S21125C13D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21125C2D1Ev,_ZTv0_n36_N8S21125C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S21125C2D1Ev,_ZThn4_N8S21125C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21125C2D0Ev,_ZTv0_n36_N8S21125C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S21125C2D0Ev,_ZThn4_N8S21125C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C3__8S21125C2__8S21125C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(104,52),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21125C2D1Ev,_ZTv0_n36_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21125C2D0Ev,_ZTv0_n36_N8S21125C2D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21125C2D1Ev,_ZTv0_n32_N8S21125C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S21125C2D1Ev,_ZThn12_N8S21125C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21125C2D0Ev,_ZTv0_n32_N8S21125C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S21125C2D0Ev,_ZThn12_N8S21125C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C4__8S21125C2__8S21125C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21125C2D1Ev,_ZTv0_n32_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21125C2D0Ev,_ZTv0_n32_N8S21125C2D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C2D1Ev,_ZTv0_n28_N8S21125C2D1Ev)();
extern void ABISELECT(_ZThn152_N8S21125C2D1Ev,_ZThn96_N8S21125C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21125C2D0Ev,_ZTv0_n28_N8S21125C2D0Ev)();
extern void ABISELECT(_ZThn152_N8S21125C2D0Ev,_ZThn96_N8S21125C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C2__8S21125C1[] = {
  ABISELECT(-152,-96),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C2D1Ev,_ZTv0_n28_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C2D0Ev,_ZTv0_n28_N8S21125C2D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C2D1Ev,_ZTvn760_n28_N8S21125C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C2D0Ev,_ZTvn760_n28_N8S21125C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C2__8S21125C1[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C2D1Ev,_ZTvn760_n28_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C2D0Ev,_ZTvn760_n28_N8S21125C2D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C2D1Ev,_ZTvn764_n28_N8S21125C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C2D0Ev,_ZTvn764_n28_N8S21125C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C2__8S21125C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C2D1Ev,_ZTvn764_n28_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C2D0Ev,_ZTvn764_n28_N8S21125C2D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C6__A1__8S21125C2__8S21125C1[] = {
  0,
  ABISELECT(-1216,-808),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S21125C2D1Ev,_ZTv0_n40_N8S21125C2D1Ev)();
extern void ABISELECT(_ZThn1416_N8S21125C2D1Ev,_ZThn908_N8S21125C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21125C2D0Ev,_ZTv0_n40_N8S21125C2D0Ev)();
extern void ABISELECT(_ZThn1416_N8S21125C2D0Ev,_ZThn908_N8S21125C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21125C14__8S21125C2__8S21125C1[] = {
  ABISELECT(-1416,-908),
  ABISELECT(-1392,-896),
  ABISELECT(16,8),
  ABISELECT(-1408,-904),
  ABISELECT(-1424,-912),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1408,-904),
  ABISELECT(-1416,-908),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21125C2D1Ev,_ZTv0_n40_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21125C2D0Ev,_ZTv0_n40_N8S21125C2D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21125C2D1Ev,_ZTv0_n36_N8S21125C2D1Ev)();
extern void ABISELECT(_ZThn1432_N8S21125C2D1Ev,_ZThn916_N8S21125C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21125C2D0Ev,_ZTv0_n36_N8S21125C2D0Ev)();
extern void ABISELECT(_ZThn1432_N8S21125C2D0Ev,_ZThn916_N8S21125C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21125C15__8S21125C2__8S21125C1[] = {
  ABISELECT(-1432,-916),
  0,
  ABISELECT(-1440,-920),
  ABISELECT(-1280,-820),
  ABISELECT(-1320,-860),
  ABISELECT(-1424,-912),
  ABISELECT(-1408,-904),
  ABISELECT(-1432,-916),
  (VTBL_ENTRY)&(_ZTI8S21125C2[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21125C2D1Ev,_ZTv0_n36_N8S21125C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21125C2D0Ev,_ZTv0_n36_N8S21125C2D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C3D1Ev();
extern void _ZN8S21125C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C3__8S21125C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(104,52),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C3D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21125C3D1Ev,_ZTv0_n32_N8S21125C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21125C3D1Ev,_ZThn8_N8S21125C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21125C3D0Ev,_ZTv0_n32_N8S21125C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21125C3D0Ev,_ZThn8_N8S21125C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C4__8S21125C3__8S21125C1[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21125C3D1Ev,_ZTv0_n32_N8S21125C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21125C3D0Ev,_ZTv0_n32_N8S21125C3D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C3D1Ev,_ZTv0_n28_N8S21125C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S21125C3D1Ev,_ZThn92_N8S21125C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21125C3D0Ev,_ZTv0_n28_N8S21125C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S21125C3D0Ev,_ZThn92_N8S21125C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C3__8S21125C1[] = {
  ABISELECT(-144,-92),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C3D1Ev,_ZTv0_n28_N8S21125C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C3D0Ev,_ZTv0_n28_N8S21125C3D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C3D1Ev,_ZTvn760_n28_N8S21125C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C3D0Ev,_ZTvn760_n28_N8S21125C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C3__8S21125C1[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1304,-852),
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C3D1Ev,_ZTvn760_n28_N8S21125C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C3D0Ev,_ZTvn760_n28_N8S21125C3D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C3D1Ev,_ZTvn764_n28_N8S21125C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C3D0Ev,_ZTvn764_n28_N8S21125C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C3__8S21125C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S21125C3[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C3D1Ev,_ZTvn764_n28_N8S21125C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C3D0Ev,_ZTvn764_n28_N8S21125C3D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C4D1Ev();
extern void _ZN8S21125C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C4__8S21125C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C4D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C68S21125C4__8S21125C1[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C6[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__8S21125C4__8S21125C1[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21125C4D1Ev,_ZThn84_N8S21125C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21125C4D0Ev,_ZThn84_N8S21125C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C4__8S21125C1[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C4__8S21125C1[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D1Ev,_ZTvn760_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21125C4D0Ev,_ZTvn760_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C4__8S21125C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21125C4[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D1Ev,_ZTvn764_n28_N8S21125C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21125C4D0Ev,_ZTvn764_n28_N8S21125C4D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN8S21125C9D1Ev();
extern void _ZN8S21125C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C9__8S21125C1[] = {
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21125C9D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C108S21125C9__8S21125C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C108S21125C9__8S21125C1[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S21125C10[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__8S21125C1[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C118S21125C9__8S21125C1[] = {
  0,
  ABISELECT(1304,852),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C12D1Ev();
extern void _ZN9S21125C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__8S21125C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C12D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C11D1Ev();
extern void _ZN9S21125C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C119S21125C128S21125C9__A1__8S21125C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C11D0Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__8S21125C1[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S21125C11[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C128S21125C9__8S21125C1[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S21125C12[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__8S21125C9__8S21125C1[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C11__8S21125C9__8S21125C1[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D1Ev,_ZThn760_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21125C9D0Ev,_ZThn760_N8S21125C9D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C12__8S21125C9__8S21125C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21125C9[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D1Ev,_ZThn764_N8S21125C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21125C9D0Ev,_ZThn764_N8S21125C9D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C6__A1__8S21125C1[] = {
  ABISELECT(-1216,-808),
  0,
  (VTBL_ENTRY)&(_ZTI8S21125C6[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C14D1Ev();
extern void _ZN9S21125C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C14__8S21125C1[] = {
  ABISELECT(-1392,-896),
  ABISELECT(16,8),
  ABISELECT(-1408,-904),
  ABISELECT(-1424,-912),
  ABISELECT(-1264,-812),
  ABISELECT(-1304,-852),
  ABISELECT(-1408,-904),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C14D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C14D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C14D1Ev,_ZTv0_n28_N9S21125C14D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S21125C14D0Ev,_ZTv0_n28_N9S21125C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C14__8S21125C1[] = {
  ABISELECT(1264,812),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(1264,812),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C14D1Ev,_ZTv0_n28_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C14D0Ev,_ZTv0_n28_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C14__8S21125C1[] = {
  0,
  ABISELECT(1408,904),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C14D1Ev,_ZTvn760_n28_N9S21125C14D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C14D0Ev,_ZTvn760_n28_N9S21125C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C14__8S21125C1[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(104,52),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C14D1Ev,_ZTvn760_n28_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C14D0Ev,_ZTvn760_n28_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C14D1Ev,_ZTvn764_n28_N9S21125C14D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C14D0Ev,_ZTvn764_n28_N9S21125C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C14__8S21125C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C14D1Ev,_ZTvn764_n28_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C14D0Ev,_ZTvn764_n28_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N9S21125C14D1Ev,_ZTv0_n36_N9S21125C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S21125C14D1Ev,_ZThn8_N9S21125C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N9S21125C14D0Ev,_ZTv0_n36_N9S21125C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S21125C14D0Ev,_ZThn8_N9S21125C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S21125C15__9S21125C14__8S21125C1[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-1440,-920),
  ABISELECT(-1280,-820),
  ABISELECT(-1320,-860),
  ABISELECT(-1424,-912),
  ABISELECT(-1408,-904),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C14D1Ev,_ZTv0_n36_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N9S21125C14D0Ev,_ZTv0_n36_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C14D1Ev,_ZTv0_n32_N9S21125C14D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21125C14D0Ev,_ZTv0_n32_N9S21125C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C14__8S21125C1[] = {
  ABISELECT(1392,896),
  0,
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(1392,896),
  (VTBL_ENTRY)&(_ZTI9S21125C14[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C14D1Ev,_ZTv0_n32_N9S21125C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C14D0Ev,_ZTv0_n32_N9S21125C14D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void _ZN9S21125C15D1Ev();
extern void _ZN9S21125C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21125C15__8S21125C1[] = {
  ABISELECT(-1440,-920),
  ABISELECT(-1280,-820),
  ABISELECT(-1320,-860),
  ABISELECT(-1424,-912),
  ABISELECT(-1408,-904),
  0,
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21125C15D1Ev,
  (VTBL_ENTRY)&_ZN9S21125C15D0Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21125C4__9S21125C15__8S21125C1[] = {
  ABISELECT(1408,904),
  0,
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(1408,904),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C15D1Ev,_ZTv0_n32_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N9S21125C15D0Ev,_ZTv0_n32_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21125C5__9S21125C15__8S21125C1[] = {
  0,
  ABISELECT(1424,912),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S21125C9__9S21125C15__8S21125C1[] = {
  ABISELECT(1280,820),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(1280,820),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C15D1Ev,_ZTv0_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S21125C15D0Ev,_ZTv0_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C15D1Ev,_ZTvn760_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N9S21125C15D0Ev,_ZTvn760_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C118S21125C9__9S21125C15__8S21125C1[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C15D1Ev,_ZTvn760_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N9S21125C15D0Ev,_ZTvn760_n28_N9S21125C15D0Ev),
};
extern void _ZN8S21125C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C15D1Ev,_ZTvn764_n28_N9S21125C15D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N9S21125C15D0Ev,_ZTvn764_n28_N9S21125C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21125C128S21125C9__9S21125C15__8S21125C1[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S21125C15[0]),
  (VTBL_ENTRY)&_ZN8S21125C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C15D1Ev,_ZTvn764_n28_N9S21125C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N9S21125C15D0Ev,_ZTvn764_n28_N9S21125C15D0Ev),
};
static  VTT_ENTRY vtt_S21125C1[] = {
  {&(_ZTV8S21125C1[13]),  13,111},
  {&(_tg__ZTV9S21125C18__8S21125C1[9]),  9,12},
  {&(_tg__ZTV9S21125C15__9S21125C18__8S21125C1[9]),  9,12},
  {&(_tg__ZTV8S21125C4__9S21125C18__8S21125C1[8]),  8,11},
  {&(_tg__ZTV8S21125C5__9S21125C18__8S21125C1[3]),  3,4},
  {&(_tg__ZTV8S21125C9__9S21125C18__8S21125C1[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C18__8S21125C1[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C18__8S21125C1[5]),  5,8},
  {&(_ZTV8S21125C1[29]),  29,111},
  {&(_ZTV8S21125C1[41]),  41,111},
  {&(_ZTV8S21125C1[52]),  52,111},
  {&(_ZTV8S21125C1[41]),  41,111},
  {&(_ZTV8S21125C1[62]),  62,111},
  {&(_ZTV8S21125C1[70]),  70,111},
  {&(_ZTV8S21125C1[78]),  78,111},
  {&(_ZTV8S21125C1[85]),  85,111},
  {&(_ZTV8S21125C1[96]),  96,111},
  {&(_ZTV8S21125C1[108]),  108,111},
  {&(_tg__ZTV8S21125C2__8S21125C1[12]),  12,15},
  {&(_tg__ZTV9S21125C138S21125C2__8S21125C1[11]),  11,14},
  {&(_tg__ZTV8S21125C6__9S21125C138S21125C2__8S21125C1[4]),  4,5},
  {&(_tg__ZTV9S21125C14__9S21125C138S21125C2__8S21125C1[10]),  10,13},
  {&(_tg__ZTV8S21125C9__9S21125C138S21125C2__8S21125C1[7]),  7,10},
  {&(_tg__ZTV8S21125C5__A1__9S21125C138S21125C2__8S21125C1[3]),  3,4},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C138S21125C2__8S21125C1[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C138S21125C2__8S21125C1[5]),  5,8},
  {&(_tg__ZTV9S21125C15__9S21125C138S21125C2__8S21125C1[9]),  9,12},
  {&(_tg__ZTV8S21125C4__9S21125C138S21125C2__8S21125C1[8]),  8,11},
  {&(_tg__ZTV8S21125C3__8S21125C2__8S21125C1[9]),  9,12},
  {&(_tg__ZTV8S21125C4__8S21125C2__8S21125C1[8]),  8,11},
  {&(_tg__ZTV8S21125C3__8S21125C2__8S21125C1[9]),  9,12},
  {&(_tg__ZTV8S21125C9__8S21125C2__8S21125C1[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C2__8S21125C1[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C2__8S21125C1[5]),  5,8},
  {&(_tg__ZTV8S21125C6__A1__8S21125C2__8S21125C1[4]),  4,5},
  {&(_tg__ZTV9S21125C14__8S21125C2__8S21125C1[10]),  10,13},
  {&(_tg__ZTV9S21125C15__8S21125C2__8S21125C1[9]),  9,12},
  {&(_tg__ZTV8S21125C3__8S21125C1[8]),  8,11},
  {&(_tg__ZTV8S21125C4__8S21125C3__8S21125C1[8]),  8,11},
  {&(_tg__ZTV8S21125C3__8S21125C1[8]),  8,11},
  {&(_tg__ZTV8S21125C9__8S21125C3__8S21125C1[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C3__8S21125C1[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C3__8S21125C1[5]),  5,8},
  {&(_tg__ZTV8S21125C4__8S21125C1[6]),  6,9},
  {&(_tg__ZTV8S21125C68S21125C4__8S21125C1[3]),  3,4},
  {&(_tg__ZTV8S21125C5__8S21125C4__8S21125C1[3]),  3,4},
  {&(_tg__ZTV8S21125C9__8S21125C4__8S21125C1[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C4__8S21125C1[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C4__8S21125C1[5]),  5,8},
  {&(_tg__ZTV8S21125C9__8S21125C1[6]),  6,9},
  {&(_tg__ZTV9S21125C108S21125C9__8S21125C1[4]),  4,5},
  {&(_tg__ZTV8S21125C5__9S21125C108S21125C9__8S21125C1[3]),  3,4},
  {&(_tg__ZTV9S21125C118S21125C9__8S21125C1[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C118S21125C9__8S21125C1[3]),  3,4},
  {&(_tg__ZTV9S21125C128S21125C9__8S21125C1[5]),  5,8},
  {&(_tg__ZTV9S21125C119S21125C128S21125C9__A1__8S21125C1[5]),  5,8},
  {&(_tg__ZTV8S21125C5__9S21125C119S21125C128S21125C9__A1__8S21125C1[3]),  3,4},
  {&(_tg__ZTV8S21125C5__9S21125C128S21125C9__8S21125C1[3]),  3,4},
  {&(_tg__ZTV8S21125C5__8S21125C9__8S21125C1[3]),  3,4},
  {&(_tg__ZTV9S21125C11__8S21125C9__8S21125C1[5]),  5,8},
  {&(_tg__ZTV9S21125C12__8S21125C9__8S21125C1[5]),  5,8},
  {&(_tg__ZTV8S21125C6__A1__8S21125C1[3]),  3,4},
  {&(_tg__ZTV9S21125C14__8S21125C1[9]),  9,12},
  {&(_tg__ZTV8S21125C9__9S21125C14__8S21125C1[7]),  7,10},
  {&(_tg__ZTV8S21125C5__9S21125C14__8S21125C1[3]),  3,4},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C14__8S21125C1[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C14__8S21125C1[5]),  5,8},
  {&(_tg__ZTV9S21125C15__9S21125C14__8S21125C1[9]),  9,12},
  {&(_tg__ZTV8S21125C4__9S21125C14__8S21125C1[8]),  8,11},
  {&(_tg__ZTV9S21125C15__8S21125C1[7]),  7,10},
  {&(_tg__ZTV8S21125C4__9S21125C15__8S21125C1[8]),  8,11},
  {&(_tg__ZTV8S21125C5__9S21125C15__8S21125C1[3]),  3,4},
  {&(_tg__ZTV8S21125C9__9S21125C15__8S21125C1[7]),  7,10},
  {&(_tg__ZTV9S21125C118S21125C9__9S21125C15__8S21125C1[5]),  5,8},
  {&(_tg__ZTV9S21125C128S21125C9__9S21125C15__8S21125C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21125C1[];
extern  VTBL_ENTRY _ZTV8S21125C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21125C1[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C14D0Ev,_ZTv0_n36_N9S21125C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21125C14D0Ev,_ZThn8_N9S21125C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C14D1Ev,_ZTv0_n36_N9S21125C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S21125C14D1Ev,_ZThn8_N9S21125C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C4D0Ev,_ZTv0_n28_N8S21125C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21125C4D0Ev,_ZThn84_N8S21125C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C4D1Ev,_ZTv0_n28_N8S21125C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21125C4D1Ev,_ZThn84_N8S21125C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C3D0Ev,_ZTv0_n28_N8S21125C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21125C3D0Ev,_ZThn92_N8S21125C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C3D1Ev,_ZTv0_n28_N8S21125C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21125C3D1Ev,_ZThn92_N8S21125C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21125C3D0Ev,_ZTv0_n32_N8S21125C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21125C3D0Ev,_ZThn8_N8S21125C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21125C3D1Ev,_ZTv0_n32_N8S21125C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21125C3D1Ev,_ZThn8_N8S21125C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21125C2D0Ev,_ZTv0_n40_N8S21125C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N8S21125C2D0Ev,_ZThn908_N8S21125C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21125C2D1Ev,_ZTv0_n40_N8S21125C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N8S21125C2D1Ev,_ZThn908_N8S21125C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C2D0Ev,_ZTv0_n28_N8S21125C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21125C2D0Ev,_ZThn96_N8S21125C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C2D1Ev,_ZTv0_n28_N8S21125C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S21125C2D1Ev,_ZThn96_N8S21125C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21125C2D0Ev,_ZTv0_n32_N8S21125C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21125C2D0Ev,_ZThn12_N8S21125C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21125C2D1Ev,_ZTv0_n32_N8S21125C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21125C2D1Ev,_ZThn12_N8S21125C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21125C2D0Ev,_ZTv0_n36_N8S21125C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1432_N8S21125C2D0Ev,_ZThn916_N8S21125C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21125C2D0Ev,_ZThn4_N8S21125C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21125C2D1Ev,_ZTv0_n36_N8S21125C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1432_N8S21125C2D1Ev,_ZThn916_N8S21125C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21125C2D1Ev,_ZThn4_N8S21125C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C13D0Ev,_ZTv0_n32_N9S21125C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21125C13D0Ev,_ZThn12_N9S21125C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C13D1Ev,_ZTv0_n32_N9S21125C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S21125C13D1Ev,_ZThn12_N9S21125C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C13D0Ev,_ZTv0_n36_N9S21125C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1432_N9S21125C13D0Ev,_ZThn916_N9S21125C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C13D1Ev,_ZTv0_n36_N9S21125C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1432_N9S21125C13D1Ev,_ZThn916_N9S21125C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C13D0Ev,_ZTv0_n28_N9S21125C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21125C13D0Ev,_ZThn96_N9S21125C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C13D1Ev,_ZTv0_n28_N9S21125C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S21125C13D1Ev,_ZThn96_N9S21125C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21125C13D0Ev,_ZTv0_n40_N9S21125C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N9S21125C13D0Ev,_ZThn908_N9S21125C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N9S21125C13D1Ev,_ZTv0_n40_N9S21125C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1416_N9S21125C13D1Ev,_ZThn908_N9S21125C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C18D0Ev,_ZTv0_n28_N9S21125C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21125C18D0Ev,_ZThn100_N9S21125C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S21125C18D1Ev,_ZTv0_n28_N9S21125C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S21125C18D1Ev,_ZThn100_N9S21125C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C18D0Ev,_ZTv0_n32_N9S21125C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21125C18D0Ev,_ZThn16_N9S21125C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N9S21125C18D1Ev,_ZTv0_n32_N9S21125C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S21125C18D1Ev,_ZThn16_N9S21125C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C18D0Ev,_ZTv0_n36_N9S21125C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N9S21125C18D0Ev,_ZThn920_N9S21125C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N9S21125C18D1Ev,_ZTv0_n36_N9S21125C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N9S21125C18D1Ev,_ZThn920_N9S21125C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21125C1D0Ev,_ZTv0_n40_N8S21125C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1424_N8S21125C1D0Ev,_ZThn912_N8S21125C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21125C1D1Ev,_ZTv0_n40_N8S21125C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1424_N8S21125C1D1Ev,_ZThn912_N8S21125C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C1D0Ev,_ZTv0_n28_N8S21125C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21125C1D0Ev,_ZThn100_N8S21125C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21125C1D1Ev,_ZTv0_n28_N8S21125C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21125C1D1Ev,_ZThn100_N8S21125C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21125C1D0Ev,_ZTv0_n32_N8S21125C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21125C1D0Ev,_ZThn16_N8S21125C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21125C1D1Ev,_ZTv0_n32_N8S21125C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21125C1D1Ev,_ZThn16_N8S21125C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21125C1D0Ev,_ZTv0_n36_N8S21125C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N8S21125C1D0Ev,_ZThn920_N8S21125C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21125C1D0Ev,_ZThn8_N8S21125C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21125C1D1Ev,_ZTv0_n36_N8S21125C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N8S21125C1D1Ev,_ZThn920_N8S21125C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21125C1D1Ev,_ZThn8_N8S21125C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S21125C1D0Ev,_ZTv0_n52_N8S21125C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21125C1D0Ev,_ZThn4_N8S21125C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S21125C1D1Ev,_ZTv0_n52_N8S21125C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21125C1D1Ev,_ZThn4_N8S21125C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21125C1 = {  "S21125C1", // class name
  bases_S21125C1, 27,
  &(vtc_S21125C1[0]), // expected_vtbl_contents
  &(vtt_S21125C1[0]), // expected_vtt_contents
  ABISELECT(1504,976), // object size
  NSPAIRA(_ZTI8S21125C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21125C1),111, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21125C1),75, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9915C2  {
  void *s9915c2f0;
  ::S4227C37 s9915c2f1;
  int s9915c2f2;
  ::S9141C28_nt s9915c2f3;
  unsigned int s9915c2f4:1;
  unsigned int s9915c2f5:1;
  unsigned int s9915c2f6:1;
  unsigned int s9915c2f7:1;
  unsigned int s9915c2f8:1;
  unsigned int s9915c2f9:1;
  unsigned int s9915c2f10:1;
  int s9915c2f11:3;
  int s9915c2f12:3;
  ::S5327C13_nt s9915c2f13;
  int s9915c2f14;
  virtual  ~S9915C2(); // _ZN7S9915C2D1Ev
  virtual void  v5(); // _ZN7S9915C22v5Ev
  virtual void  v6(); // _ZN7S9915C22v6Ev
  virtual void  v7(); // _ZN7S9915C22v7Ev
  virtual void  v8(); // _ZN7S9915C22v8Ev
  virtual void  v9(); // _ZN7S9915C22v9Ev
  virtual void  v10(); // _ZN7S9915C23v10Ev
  virtual void  v11(); // _ZN7S9915C23v11Ev
  virtual void  v12(); // _ZN7S9915C23v12Ev
  virtual void  v13(); // _ZN7S9915C23v13Ev
  virtual void  v14(); // _ZN7S9915C23v14Ev
  virtual void  v15(); // _ZN7S9915C23v15Ev
  virtual void  v16(); // _ZN7S9915C23v16Ev
  virtual void  v17(); // _ZN7S9915C23v17Ev
  virtual void  v18(); // _ZN7S9915C23v18Ev
  virtual void  v19(); // _ZN7S9915C23v19Ev
  virtual void  v20(); // _ZN7S9915C23v20Ev
  virtual void  v21(); // _ZN7S9915C23v21Ev
  virtual void  v22(); // _ZN7S9915C23v22Ev
  S9915C2(); // tgen
};
//SIG(-1 S9915C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S9915C2 ::~S9915C2(){ note_dtor("S9915C2", this);}
void  S9915C2 ::v5(){vfunc_called(this, "_ZN7S9915C22v5Ev");}
void  S9915C2 ::v6(){vfunc_called(this, "_ZN7S9915C22v6Ev");}
void  S9915C2 ::v7(){vfunc_called(this, "_ZN7S9915C22v7Ev");}
void  S9915C2 ::v8(){vfunc_called(this, "_ZN7S9915C22v8Ev");}
void  S9915C2 ::v9(){vfunc_called(this, "_ZN7S9915C22v9Ev");}
void  S9915C2 ::v10(){vfunc_called(this, "_ZN7S9915C23v10Ev");}
void  S9915C2 ::v11(){vfunc_called(this, "_ZN7S9915C23v11Ev");}
void  S9915C2 ::v12(){vfunc_called(this, "_ZN7S9915C23v12Ev");}
void  S9915C2 ::v13(){vfunc_called(this, "_ZN7S9915C23v13Ev");}
void  S9915C2 ::v14(){vfunc_called(this, "_ZN7S9915C23v14Ev");}
void  S9915C2 ::v15(){vfunc_called(this, "_ZN7S9915C23v15Ev");}
void  S9915C2 ::v16(){vfunc_called(this, "_ZN7S9915C23v16Ev");}
void  S9915C2 ::v17(){vfunc_called(this, "_ZN7S9915C23v17Ev");}
void  S9915C2 ::v18(){vfunc_called(this, "_ZN7S9915C23v18Ev");}
void  S9915C2 ::v19(){vfunc_called(this, "_ZN7S9915C23v19Ev");}
void  S9915C2 ::v20(){vfunc_called(this, "_ZN7S9915C23v20Ev");}
void  S9915C2 ::v21(){vfunc_called(this, "_ZN7S9915C23v21Ev");}
void  S9915C2 ::v22(){vfunc_called(this, "_ZN7S9915C23v22Ev");}
S9915C2 ::S9915C2(){ note_ctor("S9915C2", this);} // tgen

static void Test_S9915C2()
{
  extern Class_Descriptor cd_S9915C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S9915C2, buf);
    S9915C2 *dp, &lv = *(dp=new (buf) S9915C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S9915C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9915C2)");
    check_field_offset(lv, s9915c2f0, ABISELECT(8,4), "S9915C2.s9915c2f0");
    check_field_offset(lv, s9915c2f1, ABISELECT(16,8), "S9915C2.s9915c2f1");
    check_field_offset(lv, s9915c2f2, ABISELECT(20,12), "S9915C2.s9915c2f2");
    check_field_offset(lv, s9915c2f3, ABISELECT(24,16), "S9915C2.s9915c2f3");
    set_bf_and_test(lv, s9915c2f4, ABISELECT(40,28), 0, 1, 1, "S9915C2");
    set_bf_and_test(lv, s9915c2f5, ABISELECT(40,28), 1, 1, 1, "S9915C2");
    set_bf_and_test(lv, s9915c2f6, ABISELECT(40,28), 2, 1, 1, "S9915C2");
    set_bf_and_test(lv, s9915c2f7, ABISELECT(40,28), 3, 1, 1, "S9915C2");
    set_bf_and_test(lv, s9915c2f8, ABISELECT(40,28), 4, 1, 1, "S9915C2");
    set_bf_and_test(lv, s9915c2f9, ABISELECT(40,28), 5, 1, 1, "S9915C2");
    set_bf_and_test(lv, s9915c2f10, ABISELECT(40,28), 6, 1, 1, "S9915C2");
    set_bf_and_test(lv, s9915c2f11, ABISELECT(40,28), 7, 3, 1, "S9915C2");
    set_bf_and_test(lv, s9915c2f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S9915C2");
    set_bf_and_test(lv, s9915c2f12, ABISELECT(41,29), 2, 3, 1, "S9915C2");
    set_bf_and_test(lv, s9915c2f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S9915C2");
    check_field_offset(lv, s9915c2f13, ABISELECT(48,32), "S9915C2.s9915c2f13");
    check_field_offset(lv, s9915c2f14, ABISELECT(64,44), "S9915C2.s9915c2f14");
    test_class_info(&lv, &cd_S9915C2);
    dp->~S9915C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9915C2(Test_S9915C2, "S9915C2", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S9915C2C1Ev();
extern void _ZN7S9915C2D1Ev();
Name_Map name_map_S9915C2[] = {
  NSPAIR(_ZN7S9915C2C1Ev),
  NSPAIR(_ZN7S9915C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9915C2[];
extern void _ZN7S9915C2D1Ev();
extern void _ZN7S9915C2D0Ev();
extern void _ZN7S9915C22v5Ev();
extern void _ZN7S9915C22v6Ev();
extern void _ZN7S9915C22v7Ev();
extern void _ZN7S9915C22v8Ev();
extern void _ZN7S9915C22v9Ev();
extern void _ZN7S9915C23v10Ev();
extern void _ZN7S9915C23v11Ev();
extern void _ZN7S9915C23v12Ev();
extern void _ZN7S9915C23v13Ev();
extern void _ZN7S9915C23v14Ev();
extern void _ZN7S9915C23v15Ev();
extern void _ZN7S9915C23v16Ev();
extern void _ZN7S9915C23v17Ev();
extern void _ZN7S9915C23v18Ev();
extern void _ZN7S9915C23v19Ev();
extern void _ZN7S9915C23v20Ev();
extern void _ZN7S9915C23v21Ev();
extern void _ZN7S9915C23v22Ev();
static  VTBL_ENTRY vtc_S9915C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9915C2[0]),
  (VTBL_ENTRY)&_ZN7S9915C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9915C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9915C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9915C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9915C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9915C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9915C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S9915C2[];
extern  VTBL_ENTRY _ZTV7S9915C2[];
Class_Descriptor cd_S9915C2 = {  "S9915C2", // class name
  0,0,//no base classes
  &(vtc_S9915C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S9915C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9915C2),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9915C1  : S9915C2 {
  ::S4227C27 s9915c1f0;
  ::S4227C27 s9915c1f1;
  int s9915c1f2[4];
  void *s9915c1f3;
  int s9915c1f4:3;
  virtual void  v1(); // _ZN7S9915C12v1Ev
  virtual void  v2(); // _ZN7S9915C12v2Ev
  virtual void  v3(); // _ZN7S9915C12v3Ev
  virtual void  v4(); // _ZN7S9915C12v4Ev
  ~S9915C1(); // tgen
  S9915C1(); // tgen
};
//SIG(1 S9915C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} v1 v2 v3 v4 FC7{ m} FC7 Fi[4] Fp Fi:3}


void  S9915C1 ::v1(){vfunc_called(this, "_ZN7S9915C12v1Ev");}
void  S9915C1 ::v2(){vfunc_called(this, "_ZN7S9915C12v2Ev");}
void  S9915C1 ::v3(){vfunc_called(this, "_ZN7S9915C12v3Ev");}
void  S9915C1 ::v4(){vfunc_called(this, "_ZN7S9915C12v4Ev");}
S9915C1 ::~S9915C1(){ note_dtor("S9915C1", this);} // tgen
S9915C1 ::S9915C1(){ note_ctor("S9915C1", this);} // tgen

static void Test_S9915C1()
{
  extern Class_Descriptor cd_S9915C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,20)];
    init_test(&cd_S9915C1, buf);
    S9915C1 *dp, &lv = *(dp=new (buf) S9915C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,76), "sizeof(S9915C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9915C1)");
    check_base_class_offset(lv, (S9915C2*), 0, "S9915C1");
    check_field_offset(lv, s9915c1f0, ABISELECT(68,48), "S9915C1.s9915c1f0");
    check_field_offset(lv, s9915c1f1, ABISELECT(69,49), "S9915C1.s9915c1f1");
    check_field_offset(lv, s9915c1f2, ABISELECT(72,52), "S9915C1.s9915c1f2");
    check_field_offset(lv, s9915c1f3, ABISELECT(88,68), "S9915C1.s9915c1f3");
    set_bf_and_test(lv, s9915c1f4, ABISELECT(96,72), 0, 3, 1, "S9915C1");
    set_bf_and_test(lv, s9915c1f4, ABISELECT(96,72), 0, 3, hide_sll(1LL<<2), "S9915C1");
    test_class_info(&lv, &cd_S9915C1);
    dp->~S9915C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9915C1(Test_S9915C1, "S9915C1", ABISELECT(104,76));

#else // __cplusplus

extern void _ZN7S9915C1C1Ev();
extern void _ZN7S9915C1D1Ev();
Name_Map name_map_S9915C1[] = {
  NSPAIR(_ZN7S9915C1C1Ev),
  NSPAIR(_ZN7S9915C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9915C2;
extern VTBL_ENTRY _ZTI7S9915C2[];
extern  VTBL_ENTRY _ZTV7S9915C2[];
static Base_Class bases_S9915C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9915C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9915C1[];
extern void _ZN7S9915C1D1Ev();
extern void _ZN7S9915C1D0Ev();
extern void _ZN7S9915C22v5Ev();
extern void _ZN7S9915C22v6Ev();
extern void _ZN7S9915C22v7Ev();
extern void _ZN7S9915C22v8Ev();
extern void _ZN7S9915C22v9Ev();
extern void _ZN7S9915C23v10Ev();
extern void _ZN7S9915C23v11Ev();
extern void _ZN7S9915C23v12Ev();
extern void _ZN7S9915C23v13Ev();
extern void _ZN7S9915C23v14Ev();
extern void _ZN7S9915C23v15Ev();
extern void _ZN7S9915C23v16Ev();
extern void _ZN7S9915C23v17Ev();
extern void _ZN7S9915C23v18Ev();
extern void _ZN7S9915C23v19Ev();
extern void _ZN7S9915C23v20Ev();
extern void _ZN7S9915C23v21Ev();
extern void _ZN7S9915C23v22Ev();
extern void _ZN7S9915C12v1Ev();
extern void _ZN7S9915C12v2Ev();
extern void _ZN7S9915C12v3Ev();
extern void _ZN7S9915C12v4Ev();
static  VTBL_ENTRY vtc_S9915C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9915C1[0]),
  (VTBL_ENTRY)&_ZN7S9915C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9915C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9915C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9915C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9915C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9915C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9915C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9915C23v22Ev,
  (VTBL_ENTRY)&_ZN7S9915C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9915C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9915C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9915C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9915C1[];
extern  VTBL_ENTRY _ZTV7S9915C1[];
Class_Descriptor cd_S9915C1 = {  "S9915C1", // class name
  bases_S9915C1, 1,
  &(vtc_S9915C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(104,76), // object size
  NSPAIRA(_ZTI7S9915C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9915C1),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN7S7830C8C1Ev();
extern void _ZN7S7830C8D1Ev();
Name_Map name_map_S7830C8[] = {
  NSPAIR(_ZN7S7830C8C1Ev),
  NSPAIR(_ZN7S7830C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7830C8[];
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY vtc_S7830C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C8[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
Class_Descriptor cd_S7830C8 = {  "S7830C8", // class name
  0,0,//no base classes
  &(vtc_S7830C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7830C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7830C8),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  S7830C6  : virtual S20997C6 , virtual S7830C8 , S4227C37 {
  virtual  ~S7830C6(); // _ZN7S7830C6D2Ev
  S7830C6(); // tgen
};
//SIG(-1 S7830C6) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S7830C6()
{
  extern Class_Descriptor cd_S7830C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7830C6, buf);
    S7830C6 *dp, &lv = *(dp=new (buf) S7830C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S7830C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7830C6)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S7830C6");
    check_base_class_offset(lv, (S7830C8*), 0, "S7830C6");
    check_base_class_offset(lv, (S4227C37*), 0, "S7830C6");
    test_class_info(&lv, &cd_S7830C6);
    dp->~S7830C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7830C6(Test_S7830C6, "S7830C6", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S7830C6C1Ev();
extern void _ZN7S7830C6D2Ev();
Name_Map name_map_S7830C6[] = {
  NSPAIR(_ZN7S7830C6C1Ev),
  NSPAIR(_ZN7S7830C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S7830C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7830C8,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7830C6[];
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY vtc_S7830C6[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern VTBL_ENTRY _ZTV7S7830C6[];
static  VTT_ENTRY vtt_S7830C6[] = {
  {&(_ZTV7S7830C6[5]),  5,8},
  {&(_ZTV7S7830C6[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
Class_Descriptor cd_S7830C6 = {  "S7830C6", // class name
  bases_S7830C6, 3,
  &(vtc_S7830C6[0]), // expected_vtbl_contents
  &(vtt_S7830C6[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S7830C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7830C6),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7830C6),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  S7830C4  : virtual S10258C6_nt , virtual S7830C6 {
  virtual  ~S7830C4(); // _ZN7S7830C4D2Ev
  S7830C4(); // tgen
};
//SIG(-1 S7830C4) C1{ VBC2{ m FL[4]} VBC3{ VBC4{ m FL[5]} VBC5{ v1} BC6{ m} vd} vd}


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

static void Test_S7830C4()
{
  extern Class_Descriptor cd_S7830C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,20)];
    init_test(&cd_S7830C4, buf);
    S7830C4 *dp, &lv = *(dp=new (buf) S7830C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,76), "sizeof(S7830C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7830C4)");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(8,4), "S7830C4");
    check_base_class_offset(lv, (S20997C6*)(S7830C6*), ABISELECT(40,36), "S7830C4");
    check_base_class_offset(lv, (S7830C8*)(S7830C6*), 0, "S7830C4");
    check_base_class_offset(lv, (S4227C37*)(S7830C6*), 0, "S7830C4");
    check_base_class_offset(lv, (S7830C6*), 0, "S7830C4");
    test_class_info(&lv, &cd_S7830C4);
    dp->~S7830C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7830C4(Test_S7830C4, "S7830C4", ABISELECT(80,76));

#else // __cplusplus

extern void _ZN7S7830C4C1Ev();
extern void _ZN7S7830C4D2Ev();
Name_Map name_map_S7830C4[] = {
  NSPAIR(_ZN7S7830C4C1Ev),
  NSPAIR(_ZN7S7830C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
static Base_Class bases_S7830C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7830C8,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7830C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7830C4[];
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C4D1Ev();
extern void _ZN7S7830C4D0Ev();
static  VTBL_ENTRY vtc_S7830C4[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C4[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C4D0Ev,
};
extern VTBL_ENTRY _ZTV7S7830C4[];
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C6__7S7830C4[] = {
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
static  VTT_ENTRY vtt_S7830C4[] = {
  {&(_ZTV7S7830C4[8]),  8,11},
  {&(_ZTV7S7830C4[8]),  8,11},
  {&(_ZTV7S7830C4[8]),  8,11},
  {&(_tg__ZTV7S7830C6__7S7830C4[5]),  5,8},
  {&(_tg__ZTV7S7830C6__7S7830C4[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7830C4[];
extern  VTBL_ENTRY _ZTV7S7830C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C4[];
Class_Descriptor cd_S7830C4 = {  "S7830C4", // class name
  bases_S7830C4, 5,
  &(vtc_S7830C4[0]), // expected_vtbl_contents
  &(vtt_S7830C4[0]), // expected_vtt_contents
  ABISELECT(80,76), // object size
  NSPAIRA(_ZTI7S7830C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7830C4),11, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7830C4),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7830C11  : S7830C8 , virtual S20997C6 , S4227C37 {
  void *s7830c11f0[10];
  ~S7830C11(); // tgen
  S7830C11(); // tgen
};
//SIG(-1 S7830C11) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S7830C11()
{
  extern Class_Descriptor cd_S7830C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S7830C11, buf);
    S7830C11 *dp, &lv = *(dp=new (buf) S7830C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S7830C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7830C11)");
    check_base_class_offset(lv, (S7830C8*), 0, "S7830C11");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S7830C11");
    check_base_class_offset(lv, (S4227C37*), 0, "S7830C11");
    check_field_offset(lv, s7830c11f0, ABISELECT(8,4), "S7830C11.s7830c11f0");
    test_class_info(&lv, &cd_S7830C11);
    dp->~S7830C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7830C11(Test_S7830C11, "S7830C11", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN8S7830C11C1Ev();
extern void _ZN8S7830C11D1Ev();
Name_Map name_map_S7830C11[] = {
  NSPAIR(_ZN8S7830C11C1Ev),
  NSPAIR(_ZN8S7830C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S7830C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7830C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7830C11[];
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY vtc_S7830C11[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C11[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S7830C11[];
static  VTT_ENTRY vtt_S7830C11[] = {
  {&(_ZTV8S7830C11[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7830C11[];
extern  VTBL_ENTRY _ZTV8S7830C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C11[];
Class_Descriptor cd_S7830C11 = {  "S7830C11", // class name
  bases_S7830C11, 3,
  &(vtc_S7830C11[0]), // expected_vtbl_contents
  &(vtt_S7830C11[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI8S7830C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7830C11),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7830C11),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  S7830C13  : virtual S7830C8 {
  ::S7830C11 s7830c13f0[9];
  ~S7830C13(); // tgen
  S7830C13(); // tgen
};
//SIG(-1 S7830C13) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S7830C13()
{
  extern Class_Descriptor cd_S7830C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S7830C13, buf);
    S7830C13 *dp, &lv = *(dp=new (buf) S7830C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S7830C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7830C13)");
    check_base_class_offset(lv, (S7830C8*), 0, "S7830C13");
    check_field_offset(lv, s7830c13f0, ABISELECT(8,4), "S7830C13.s7830c13f0");
    test_class_info(&lv, &cd_S7830C13);
    dp->~S7830C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7830C13(Test_S7830C13, "S7830C13", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN8S7830C13C1Ev();
extern void _ZN8S7830C13D1Ev();
Name_Map name_map_S7830C13[] = {
  NSPAIR(_ZN8S7830C13C1Ev),
  NSPAIR(_ZN8S7830C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
static Base_Class bases_S7830C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7830C8,    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 _ZTI8S7830C13[];
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY vtc_S7830C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C13[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S7830C13[];
static  VTT_ENTRY vtt_S7830C13[] = {
  {&(_ZTV8S7830C13[4]),  4,5},
  {&(_ZTV8S7830C13[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S7830C13[];
extern  VTBL_ENTRY _ZTV8S7830C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C13[];
Class_Descriptor cd_S7830C13 = {  "S7830C13", // class name
  bases_S7830C13, 1,
  &(vtc_S7830C13[0]), // expected_vtbl_contents
  &(vtt_S7830C13[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI8S7830C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7830C13),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7830C13),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  S7830C14  : S7830C6 {
  virtual  ~S7830C14(); // _ZN8S7830C14D2Ev
  S7830C14(); // tgen
};
//SIG(-1 S7830C14) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S7830C14()
{
  extern Class_Descriptor cd_S7830C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7830C14, buf);
    S7830C14 *dp, &lv = *(dp=new (buf) S7830C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S7830C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7830C14)");
    check_base_class_offset(lv, (S20997C6*)(S7830C6*), ABISELECT(8,4), "S7830C14");
    check_base_class_offset(lv, (S7830C8*)(S7830C6*), 0, "S7830C14");
    check_base_class_offset(lv, (S4227C37*)(S7830C6*), 0, "S7830C14");
    check_base_class_offset(lv, (S7830C6*), 0, "S7830C14");
    test_class_info(&lv, &cd_S7830C14);
    dp->~S7830C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7830C14(Test_S7830C14, "S7830C14", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S7830C14C1Ev();
extern void _ZN8S7830C14D2Ev();
Name_Map name_map_S7830C14[] = {
  NSPAIR(_ZN8S7830C14C1Ev),
  NSPAIR(_ZN8S7830C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
static Base_Class bases_S7830C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C8,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7830C14[];
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C14D1Ev();
extern void _ZN8S7830C14D0Ev();
static  VTBL_ENTRY vtc_S7830C14[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D0Ev,
};
extern VTBL_ENTRY _ZTV8S7830C14[];
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C6__8S7830C14[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
static  VTT_ENTRY vtt_S7830C14[] = {
  {&(_ZTV8S7830C14[5]),  5,8},
  {&(_tg__ZTV7S7830C6__8S7830C14[5]),  5,8},
  {&(_tg__ZTV7S7830C6__8S7830C14[5]),  5,8},
  {&(_ZTV8S7830C14[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S7830C14[];
extern  VTBL_ENTRY _ZTV8S7830C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C14[];
Class_Descriptor cd_S7830C14 = {  "S7830C14", // class name
  bases_S7830C14, 4,
  &(vtc_S7830C14[0]), // expected_vtbl_contents
  &(vtt_S7830C14[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S7830C14),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S7830C14),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7830C14),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  S7830C12  : virtual S4227C37 , S7830C13 , S7830C6 , S7830C14 {
  ~S7830C12(); // tgen
  S7830C12(); // tgen
};
//SIG(-1 S7830C12) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S7830C12()
{
  extern Class_Descriptor cd_S7830C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S7830C12, buf);
    S7830C12 *dp, &lv = *(dp=new (buf) S7830C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S7830C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7830C12)");
    /*is_ambiguous_... S7830C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S7830C12");
    check_base_class_offset(lv, (S7830C8*)(S7830C13*), 0, "S7830C12");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C6*), 0, "S7830C12");
    check_base_class_offset(lv, (S7830C8*)(S7830C6*)(S7830C14*), 0, "S7830C12");
    check_base_class_offset(lv, (S7830C13*), 0, "S7830C12");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C6*), ABISELECT(1176,768), "S7830C12");
    check_base_class_offset(lv, (S20997C6*)(S7830C6*)(S7830C14*), ABISELECT(1176,768), "S7830C12");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C6*), ABISELECT(1160,760), "S7830C12");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C6*), ABISELECT(1160,760), "S7830C12");
    check_base_class_offset(lv, (S4227C37*)(S7830C6*)(S7830C14*), ABISELECT(1168,764), "S7830C12");
    check_base_class_offset(lv, (S7830C6*)(S7830C14*), ABISELECT(1168,764), "S7830C12");
    check_base_class_offset(lv, (S7830C14*), ABISELECT(1168,764), "S7830C12");
    test_class_info(&lv, &cd_S7830C12);
    dp->~S7830C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7830C12(Test_S7830C12, "S7830C12", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN8S7830C12C1Ev();
extern void _ZN8S7830C12D1Ev();
Name_Map name_map_S7830C12[] = {
  NSPAIR(_ZN8S7830C12C1Ev),
  NSPAIR(_ZN8S7830C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S7830C13;
extern VTBL_ENTRY _ZTI8S7830C13[];
extern  VTBL_ENTRY _ZTV8S7830C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C13[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S7830C14;
extern VTBL_ENTRY _ZTI8S7830C14[];
extern  VTBL_ENTRY _ZTV8S7830C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C14[];
static Base_Class bases_S7830C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7830C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7830C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C6,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C6,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7830C14,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7830C12[];
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C12D1Ev();
extern void _ZN8S7830C12D0Ev();
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZThn1160_N8S7830C12D1Ev,_ZThn760_N8S7830C12D1Ev)();
extern void ABISELECT(_ZThn1160_N8S7830C12D0Ev,_ZThn760_N8S7830C12D0Ev)();
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZThn1168_N8S7830C12D1Ev,_ZThn764_N8S7830C12D1Ev)();
extern void ABISELECT(_ZThn1168_N8S7830C12D0Ev,_ZThn764_N8S7830C12D0Ev)();
static  VTBL_ENTRY vtc_S7830C12[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C12D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7830C12D1Ev,_ZThn760_N8S7830C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7830C12D0Ev,_ZThn760_N8S7830C12D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7830C12D1Ev,_ZThn764_N8S7830C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7830C12D0Ev,_ZThn764_N8S7830C12D0Ev),
};
extern VTBL_ENTRY _ZTV8S7830C12[];
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C13__8S7830C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C13[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C6__8S7830C12[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C6__8S7830C12[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C14D1Ev();
extern void _ZN8S7830C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C14__8S7830C12[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C14__A1__8S7830C12[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C68S7830C14__A1__8S7830C12[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C14__8S7830C12[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
static  VTT_ENTRY vtt_S7830C12[] = {
  {&(_ZTV8S7830C12[6]),  6,25},
  {&(_tg__ZTV8S7830C13__8S7830C12[4]),  4,5},
  {&(_tg__ZTV8S7830C13__8S7830C12[4]),  4,5},
  {&(_tg__ZTV7S7830C6__8S7830C12[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C6__8S7830C12[3]),  3,4},
  {&(_tg__ZTV8S7830C14__8S7830C12[5]),  5,8},
  {&(_tg__ZTV7S7830C68S7830C14__A1__8S7830C12[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C68S7830C14__A1__8S7830C12[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C14__8S7830C12[3]),  3,4},
  {&(_ZTV8S7830C12[6]),  6,25},
  {&(_ZTV8S7830C12[14]),  14,25},
  {&(_ZTV8S7830C12[22]),  22,25},
};
extern VTBL_ENTRY _ZTI8S7830C12[];
extern  VTBL_ENTRY _ZTV8S7830C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C12[];
Class_Descriptor cd_S7830C12 = {  "S7830C12", // class name
  bases_S7830C12, 9,
  &(vtc_S7830C12[0]), // expected_vtbl_contents
  &(vtt_S7830C12[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI8S7830C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S7830C12),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7830C12),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  S7830C10  : virtual S7830C8 , S7830C11 , virtual S7830C12 {
  virtual  ~S7830C10(); // _ZN8S7830C10D2Ev
  S7830C10(); // tgen
};
//SIG(-1 S7830C10) C1{ VBC2{ v1} BC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC5 BC7{ VBC2 FC3[9]} BC8{ VBC4 VBC2 BC5 vd} BC9{ BC8 vd}} vd}


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

static void Test_S7830C10()
{
  extern Class_Descriptor cd_S7830C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(165,215)];
    init_test(&cd_S7830C10, buf);
    S7830C10 *dp, &lv = *(dp=new (buf) S7830C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1312,856), "sizeof(S7830C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7830C10)");
    /*is_ambiguous_... S7830C10::S7830C8 */ AMB_check_base_class_offset(lv, (S7830C8*), ABISELECT(128,84), "S7830C10");
    check_base_class_offset(lv, (S7830C8*)(S7830C13*)(S7830C12*), ABISELECT(128,84), "S7830C10");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C6*)(S7830C12*), ABISELECT(128,84), "S7830C10");
    check_base_class_offset(lv, (S7830C8*)(S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(128,84), "S7830C10");
    check_base_class_offset(lv, (S7830C8*)(S7830C11*), 0, "S7830C10");
    check_base_class_offset(lv, (S20997C6*)(S7830C11*), ABISELECT(88,44), "S7830C10");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C6*)(S7830C12*), ABISELECT(88,44), "S7830C10");
    check_base_class_offset(lv, (S20997C6*)(S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(88,44), "S7830C10");
    check_base_class_offset(lv, (S4227C37*)(S7830C11*), 0, "S7830C10");
    check_base_class_offset(lv, (S7830C11*), 0, "S7830C10");
    /*is_ambiguous_... S7830C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C12*), ABISELECT(1304,852), "S7830C10");
    check_base_class_offset(lv, (S7830C13*)(S7830C12*), ABISELECT(128,84), "S7830C10");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C6*)(S7830C12*), ABISELECT(1288,844), "S7830C10");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C6*)(S7830C12*), ABISELECT(1288,844), "S7830C10");
    check_base_class_offset(lv, (S4227C37*)(S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(1296,848), "S7830C10");
    check_base_class_offset(lv, (S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(1296,848), "S7830C10");
    check_base_class_offset(lv, (S7830C14*)(S7830C12*), ABISELECT(1296,848), "S7830C10");
    check_base_class_offset(lv, (S7830C12*), ABISELECT(128,84), "S7830C10");
    test_class_info(&lv, &cd_S7830C10);
    dp->~S7830C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7830C10(Test_S7830C10, "S7830C10", ABISELECT(1312,856));

#else // __cplusplus

extern void _ZN8S7830C10C1Ev();
extern void _ZN8S7830C10D2Ev();
Name_Map name_map_S7830C10[] = {
  NSPAIR(_ZN8S7830C10C1Ev),
  NSPAIR(_ZN8S7830C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C11;
extern VTBL_ENTRY _ZTI8S7830C11[];
extern  VTBL_ENTRY _ZTV8S7830C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C13;
extern VTBL_ENTRY _ZTI8S7830C13[];
extern  VTBL_ENTRY _ZTV8S7830C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S7830C14;
extern VTBL_ENTRY _ZTI8S7830C14[];
extern  VTBL_ENTRY _ZTV8S7830C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C14[];
extern Class_Descriptor cd_S7830C12;
extern VTBL_ENTRY _ZTI8S7830C12[];
extern  VTBL_ENTRY _ZTV8S7830C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C12[];
static Base_Class bases_S7830C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7830C8,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7830C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7830C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C13,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1288,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C6,    ABISELECT(1288,844), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C6,    ABISELECT(1296,848), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7830C14,    ABISELECT(1296,848), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S7830C12,    ABISELECT(128,84), //bcp->offset
    9, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7830C10[];
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C10D1Ev();
extern void _ZN8S7830C10D0Ev();
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S7830C10D1Ev,_ZTv0_n28_N8S7830C10D1Ev)();
extern void ABISELECT(_ZThn128_N8S7830C10D1Ev,_ZThn84_N8S7830C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7830C10D0Ev,_ZTv0_n28_N8S7830C10D0Ev)();
extern void ABISELECT(_ZThn128_N8S7830C10D0Ev,_ZThn84_N8S7830C10D0Ev)() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S7830C10D1Ev,_ZTvn760_n28_N8S7830C10D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S7830C10D0Ev,_ZTvn760_n28_N8S7830C10D0Ev)();
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S7830C10D1Ev,_ZTvn764_n28_N8S7830C10D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S7830C10D0Ev,_ZTvn764_n28_N8S7830C10D0Ev)();
static  VTBL_ENTRY vtc_S7830C10[] = {
  ABISELECT(1304,852),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C10D0Ev,
  ABISELECT(-128,-84),
  -40,
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7830C10D1Ev,_ZTv0_n28_N8S7830C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7830C10D0Ev,_ZTv0_n28_N8S7830C10D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S7830C10D1Ev,_ZTvn760_n28_N8S7830C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S7830C10D0Ev,_ZTvn760_n28_N8S7830C10D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S7830C10D1Ev,_ZTvn764_n28_N8S7830C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S7830C10D0Ev,_ZTvn764_n28_N8S7830C10D0Ev),
};
extern VTBL_ENTRY _ZTV8S7830C10[];
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C11__8S7830C10[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C11[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C12D1Ev();
extern void _ZN8S7830C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C12__8S7830C10[] = {
  -40,
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C12D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C138S7830C12__8S7830C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C13[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C12__8S7830C10[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C68S7830C12__8S7830C10[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C14D1Ev();
extern void _ZN8S7830C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C148S7830C12__8S7830C10[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C148S7830C12__A1__8S7830C10[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C68S7830C148S7830C12__A1__8S7830C10[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C148S7830C12__8S7830C10[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZThn1160_N8S7830C12D1Ev,_ZThn760_N8S7830C12D1Ev)();
extern void ABISELECT(_ZThn1160_N8S7830C12D0Ev,_ZThn760_N8S7830C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7830C6__8S7830C12__8S7830C10[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7830C12D1Ev,_ZThn760_N8S7830C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7830C12D0Ev,_ZThn760_N8S7830C12D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZThn1168_N8S7830C12D1Ev,_ZThn764_N8S7830C12D1Ev)();
extern void ABISELECT(_ZThn1168_N8S7830C12D0Ev,_ZThn764_N8S7830C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7830C14__8S7830C12__8S7830C10[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7830C12D1Ev,_ZThn764_N8S7830C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7830C12D0Ev,_ZThn764_N8S7830C12D0Ev),
};
static  VTT_ENTRY vtt_S7830C10[] = {
  {&(_ZTV8S7830C10[6]),  6,35},
  {&(_tg__ZTV8S7830C11__8S7830C10[3]),  3,4},
  {&(_ZTV8S7830C10[16]),  16,35},
  {&(_ZTV8S7830C10[16]),  16,35},
  {&(_ZTV8S7830C10[24]),  24,35},
  {&(_ZTV8S7830C10[32]),  32,35},
  {&(_tg__ZTV8S7830C12__8S7830C10[6]),  6,9},
  {&(_tg__ZTV8S7830C138S7830C12__8S7830C10[4]),  4,5},
  {&(_tg__ZTV8S7830C138S7830C12__8S7830C10[4]),  4,5},
  {&(_tg__ZTV7S7830C68S7830C12__8S7830C10[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C68S7830C12__8S7830C10[3]),  3,4},
  {&(_tg__ZTV8S7830C148S7830C12__8S7830C10[5]),  5,8},
  {&(_tg__ZTV7S7830C68S7830C148S7830C12__A1__8S7830C10[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C68S7830C148S7830C12__A1__8S7830C10[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C148S7830C12__8S7830C10[3]),  3,4},
  {&(_tg__ZTV8S7830C12__8S7830C10[6]),  6,9},
  {&(_tg__ZTV7S7830C6__8S7830C12__8S7830C10[5]),  5,8},
  {&(_tg__ZTV8S7830C14__8S7830C12__8S7830C10[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S7830C10[];
extern  VTBL_ENTRY _ZTV8S7830C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C10[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7830C10D0Ev,_ZTv0_n28_N8S7830C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7830C10D0Ev,_ZThn84_N8S7830C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7830C10D1Ev,_ZTv0_n28_N8S7830C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S7830C10D1Ev,_ZThn84_N8S7830C10D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7830C10 = {  "S7830C10", // class name
  bases_S7830C10, 13,
  &(vtc_S7830C10[0]), // expected_vtbl_contents
  &(vtt_S7830C10[0]), // expected_vtt_contents
  ABISELECT(1312,856), // object size
  NSPAIRA(_ZTI8S7830C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S7830C10),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7830C10),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7830C3  : virtual S7830C4 , S7830C10 , S20997C6 , virtual S7830C14 {
  ~S7830C3(); // tgen
  S7830C3(); // tgen
};
//SIG(-1 S7830C3) C1{ VBC2{ VBC3{ m FL[4]} VBC4{ VBC5{ m FL[5]} VBC6{ v1} BC7{ m} vd} vd} BC8{ VBC6 BC9{ BC6 VBC5 BC7 Fp[10]} VBC10{ VBC7 BC11{ VBC6 FC9[9]} BC4 BC12{ BC4 vd}} vd} BC5 VBC12}


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

static void Test_S7830C3()
{
  extern Class_Descriptor cd_S7830C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(176,235)];
    init_test(&cd_S7830C3, buf);
    S7830C3 *dp, &lv = *(dp=new (buf) S7830C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1400,936), "sizeof(S7830C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7830C3)");
    check_base_class_offset(lv, (S10258C6_nt*)(S7830C4*), ABISELECT(136,88), "S7830C3");
    /*is_ambiguous_... S7830C3::S7830C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C6*), ABISELECT(168,120), "S7830C3");
    check_base_class_offset(lv, (S20997C6*)(S7830C11*)(S7830C10*), ABISELECT(168,120), "S7830C3");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C6*)(S7830C12*), ABISELECT(168,120), "S7830C3");
    check_base_class_offset(lv, (S20997C6*)(S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(168,120), "S7830C3");
    /*is_ambiguous_... S7830C3::S7830C14 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C6*)(S7830C14*), ABISELECT(168,120), "S7830C3");
    /*is_ambiguous_... S7830C3::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C6*), ABISELECT(128,84), "S7830C3");
    /*is_ambiguous_... S7830C10::S7830C8 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C10*), ABISELECT(128,84), "S7830C3");
    check_base_class_offset(lv, (S7830C8*)(S7830C13*)(S7830C12*), ABISELECT(128,84), "S7830C3");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C6*)(S7830C12*), ABISELECT(128,84), "S7830C3");
    check_base_class_offset(lv, (S7830C8*)(S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(128,84), "S7830C3");
    /*is_ambiguous_... S7830C3::S7830C14 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C6*)(S7830C14*), ABISELECT(128,84), "S7830C3");
    /*is_ambiguous_... S7830C3::S7830C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C6*), ABISELECT(128,84), "S7830C3");
    check_base_class_offset(lv, (S7830C6*)(S7830C4*), ABISELECT(128,84), "S7830C3");
    check_base_class_offset(lv, (S7830C4*), ABISELECT(128,84), "S7830C3");
    check_base_class_offset(lv, (S7830C8*)(S7830C11*)(S7830C10*), 0, "S7830C3");
    check_base_class_offset(lv, (S4227C37*)(S7830C11*)(S7830C10*), 0, "S7830C3");
    check_base_class_offset(lv, (S7830C11*)(S7830C10*), 0, "S7830C3");
    /*is_ambiguous_... S7830C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C12*), ABISELECT(1384,928), "S7830C3");
    check_base_class_offset(lv, (S7830C13*)(S7830C12*), ABISELECT(208,160), "S7830C3");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C6*)(S7830C12*), ABISELECT(1368,920), "S7830C3");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C6*)(S7830C12*), ABISELECT(1368,920), "S7830C3");
    check_base_class_offset(lv, (S4227C37*)(S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(1376,924), "S7830C3");
    check_base_class_offset(lv, (S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(1376,924), "S7830C3");
    check_base_class_offset(lv, (S7830C14*)(S7830C12*), ABISELECT(1376,924), "S7830C3");
    check_base_class_offset(lv, (S7830C12*)(S7830C10*), ABISELECT(208,160), "S7830C3");
    check_base_class_offset(lv, (S7830C10*), 0, "S7830C3");
    /*is_ambiguous_... S7830C3::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S7830C3");
    /*is_ambiguous_... S7830C3::S7830C14 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C6*)(S7830C14*), ABISELECT(1392,932), "S7830C3");
    /*is_ambiguous_... S7830C3::S7830C14 */ AMB_check_base_class_offset(lv, (S7830C6*)(S7830C14*), ABISELECT(1392,932), "S7830C3");
    /*is_ambiguous_... S7830C3::S7830C14 */ AMB_check_base_class_offset(lv, (S7830C14*), ABISELECT(1392,932), "S7830C3");
    test_class_info(&lv, &cd_S7830C3);
    dp->~S7830C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7830C3(Test_S7830C3, "S7830C3", ABISELECT(1400,936));

#else // __cplusplus

extern void _ZN7S7830C3C1Ev();
extern void _ZN7S7830C3D1Ev();
Name_Map name_map_S7830C3[] = {
  NSPAIR(_ZN7S7830C3C1Ev),
  NSPAIR(_ZN7S7830C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S7830C4;
extern VTBL_ENTRY _ZTI7S7830C4[];
extern  VTBL_ENTRY _ZTV7S7830C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C4[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C11;
extern VTBL_ENTRY _ZTI8S7830C11[];
extern  VTBL_ENTRY _ZTV8S7830C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C13;
extern VTBL_ENTRY _ZTI8S7830C13[];
extern  VTBL_ENTRY _ZTV8S7830C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S7830C14;
extern VTBL_ENTRY _ZTI8S7830C14[];
extern  VTBL_ENTRY _ZTV8S7830C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C14[];
extern Class_Descriptor cd_S7830C12;
extern VTBL_ENTRY _ZTI8S7830C12[];
extern  VTBL_ENTRY _ZTV8S7830C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C12[];
extern Class_Descriptor cd_S7830C10;
extern VTBL_ENTRY _ZTI8S7830C10[];
extern  VTBL_ENTRY _ZTV8S7830C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S7830C14;
extern VTBL_ENTRY _ZTI8S7830C14[];
extern  VTBL_ENTRY _ZTV8S7830C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C14[];
static Base_Class bases_S7830C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C6_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
    5, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(168,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7830C8,    ABISELECT(128,84), //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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7830C6,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7830C4,    ABISELECT(128,84), //bcp->offset
    13, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7830C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1384,928), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7830C13,    ABISELECT(208,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1368,920), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7830C6,    ABISELECT(1368,920), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1376,924), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7830C6,    ABISELECT(1376,924), //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
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7830C14,    ABISELECT(1376,924), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7830C12,    ABISELECT(208,160), //bcp->offset
    24, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7830C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1392,932), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C6,    ABISELECT(1392,932), //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
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7830C14,    ABISELECT(1392,932), //bcp->offset
    50, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7830C3[];
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C3D1Ev();
extern void _ZN7S7830C3D0Ev();
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev)();
extern void ABISELECT(_ZThn128_N7S7830C3D1Ev,_ZThn84_N7S7830C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev)();
extern void ABISELECT(_ZThn128_N7S7830C3D0Ev,_ZThn84_N7S7830C3D0Ev)() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N7S7830C3D1Ev,_ZTv0_n28_N7S7830C3D1Ev)();
extern void ABISELECT(_ZThn208_N7S7830C3D1Ev,_ZThn160_N7S7830C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7830C3D0Ev,_ZTv0_n28_N7S7830C3D0Ev)();
extern void ABISELECT(_ZThn208_N7S7830C3D0Ev,_ZThn160_N7S7830C3D0Ev)() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S7830C3D1Ev,_ZTvn760_n28_N7S7830C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S7830C3D0Ev,_ZTvn760_n28_N7S7830C3D0Ev)();
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S7830C3D1Ev,_ZTvn764_n28_N7S7830C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S7830C3D0Ev,_ZTvn764_n28_N7S7830C3D0Ev)();
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev)();
extern void ABISELECT(_ZThn1392_N7S7830C3D1Ev,_ZThn932_N7S7830C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev)();
extern void ABISELECT(_ZThn1392_N7S7830C3D0Ev,_ZThn932_N7S7830C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7830C3[] = {
  ABISELECT(1392,932),
  ABISELECT(128,84),
  ABISELECT(136,88),
  ABISELECT(128,84),
  ABISELECT(1384,928),
  ABISELECT(208,160),
  ABISELECT(128,84),
  ABISELECT(168,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C3D0Ev,
  0,
  ABISELECT(8,4),
  ABISELECT(-128,-84),
  0,
  ABISELECT(40,36),
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev),
  ABISELECT(-208,-160),
  -40,
  ABISELECT(1176,768),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7830C3D1Ev,_ZTv0_n28_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7830C3D0Ev,_ZTv0_n28_N7S7830C3D0Ev),
  ABISELECT(-1240,-836),
  ABISELECT(-1200,-800),
  ABISELECT(-1240,-836),
  ABISELECT(-1368,-920),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7830C3D1Ev,_ZTvn760_n28_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7830C3D0Ev,_ZTvn760_n28_N7S7830C3D0Ev),
  ABISELECT(-1248,-840),
  ABISELECT(-1208,-804),
  ABISELECT(-1248,-840),
  ABISELECT(-1376,-924),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7830C3D1Ev,_ZTvn764_n28_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7830C3D0Ev,_ZTvn764_n28_N7S7830C3D0Ev),
  ABISELECT(-1392,-932),
  ABISELECT(-1264,-848),
  ABISELECT(-1224,-812),
  ABISELECT(-1264,-848),
  ABISELECT(-1392,-932),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S7830C3[];
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C10D1Ev();
extern void _ZN8S7830C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C10__7S7830C3[] = {
  ABISELECT(1384,928),
  ABISELECT(208,160),
  ABISELECT(128,84),
  ABISELECT(168,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C10D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C118S7830C10__7S7830C3[] = {
  ABISELECT(168,120),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C11[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C10__7S7830C3[] = {
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S7830C10D1Ev,_ZTv0_n28_N8S7830C10D1Ev)();
extern void ABISELECT(_ZThn208_N8S7830C10D1Ev,_ZThn160_N8S7830C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7830C10D0Ev,_ZTv0_n28_N8S7830C10D0Ev)();
extern void ABISELECT(_ZThn208_N8S7830C10D0Ev,_ZThn160_N8S7830C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7830C12__8S7830C10__7S7830C3[] = {
  ABISELECT(-208,-160),
  -40,
  ABISELECT(1176,768),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-208,-160),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7830C10D1Ev,_ZTv0_n28_N8S7830C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7830C10D0Ev,_ZTv0_n28_N8S7830C10D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S7830C10D1Ev,_ZTvn760_n28_N8S7830C10D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S7830C10D0Ev,_ZTvn760_n28_N8S7830C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C12__8S7830C10__7S7830C3[] = {
  ABISELECT(-1240,-836),
  ABISELECT(-1200,-800),
  ABISELECT(-1240,-836),
  ABISELECT(-1368,-920),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S7830C10D1Ev,_ZTvn760_n28_N8S7830C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S7830C10D0Ev,_ZTvn760_n28_N8S7830C10D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S7830C10D1Ev,_ZTvn764_n28_N8S7830C10D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S7830C10D0Ev,_ZTvn764_n28_N8S7830C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7830C148S7830C12__8S7830C10__7S7830C3[] = {
  ABISELECT(-1248,-840),
  ABISELECT(-1208,-804),
  ABISELECT(-1248,-840),
  ABISELECT(-1376,-924),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S7830C10D1Ev,_ZTvn764_n28_N8S7830C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S7830C10D0Ev,_ZTvn764_n28_N8S7830C10D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C4D1Ev,_ZTv0_n24_N7S7830C4D1Ev)();
extern void _ZN7S7830C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C4D0Ev,_ZTv0_n24_N7S7830C4D0Ev)();
extern void _ZN7S7830C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7830C4__7S7830C3[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C4[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C4D1Ev,_ZTv0_n24_N7S7830C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C4D0Ev,_ZTv0_n24_N7S7830C4D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C6__7S7830C3[] = {
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C12D1Ev();
extern void _ZN8S7830C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C12__7S7830C3[] = {
  -40,
  ABISELECT(1176,768),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C12D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C138S7830C12__7S7830C3[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C13[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C138S7830C12__7S7830C3[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI8S7830C13[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C12__A1__7S7830C3[] = {
  ABISELECT(-1240,-836),
  ABISELECT(-1200,-800),
  ABISELECT(-1240,-836),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C68S7830C12__A1__7S7830C3[] = {
  0,
  ABISELECT(1240,836),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C14D1Ev();
extern void _ZN8S7830C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C148S7830C12__7S7830C3[] = {
  ABISELECT(-1248,-840),
  ABISELECT(-1208,-804),
  ABISELECT(-1248,-840),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C148S7830C12__A2__7S7830C3[] = {
  ABISELECT(-1248,-840),
  ABISELECT(-1208,-804),
  ABISELECT(-1248,-840),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C68S7830C148S7830C12__A2__7S7830C3[] = {
  0,
  ABISELECT(1248,840),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C148S7830C12__7S7830C3[] = {
  0,
  ABISELECT(1248,840),
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C12__7S7830C3[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZThn1160_N8S7830C12D1Ev,_ZThn760_N8S7830C12D1Ev)();
extern void ABISELECT(_ZThn1160_N8S7830C12D0Ev,_ZThn760_N8S7830C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7830C6__8S7830C12__7S7830C3[] = {
  ABISELECT(-1240,-836),
  ABISELECT(-1200,-800),
  ABISELECT(-1240,-836),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7830C12D1Ev,_ZThn760_N8S7830C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7830C12D0Ev,_ZThn760_N8S7830C12D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZThn1168_N8S7830C12D1Ev,_ZThn764_N8S7830C12D1Ev)();
extern void ABISELECT(_ZThn1168_N8S7830C12D0Ev,_ZThn764_N8S7830C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7830C14__8S7830C12__7S7830C3[] = {
  ABISELECT(-1248,-840),
  ABISELECT(-1208,-804),
  ABISELECT(-1248,-840),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7830C12D1Ev,_ZThn764_N8S7830C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7830C12D0Ev,_ZThn764_N8S7830C12D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C14D1Ev();
extern void _ZN8S7830C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C14__A1__7S7830C3[] = {
  ABISELECT(-1264,-848),
  ABISELECT(-1224,-812),
  ABISELECT(-1264,-848),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C14__A3__7S7830C3[] = {
  ABISELECT(-1264,-848),
  ABISELECT(-1224,-812),
  ABISELECT(-1264,-848),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C68S7830C14__A3__7S7830C3[] = {
  0,
  ABISELECT(1264,848),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C14__A1__7S7830C3[] = {
  0,
  ABISELECT(1264,848),
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
static  VTT_ENTRY vtt_S7830C3[] = {
  {&(_ZTV7S7830C3[10]),  10,59},
  {&(_tg__ZTV8S7830C10__7S7830C3[6]),  6,9},
  {&(_tg__ZTV8S7830C118S7830C10__7S7830C3[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C10__7S7830C3[3]),  3,4},
  {&(_tg__ZTV8S7830C12__8S7830C10__7S7830C3[7]),  7,10},
  {&(_tg__ZTV7S7830C68S7830C12__8S7830C10__7S7830C3[5]),  5,8},
  {&(_tg__ZTV8S7830C148S7830C12__8S7830C10__7S7830C3[5]),  5,8},
  {&(_ZTV7S7830C3[21]),  21,59},
  {&(_ZTV7S7830C3[21]),  21,59},
  {&(_ZTV7S7830C3[21]),  21,59},
  {&(_ZTV7S7830C3[31]),  31,59},
  {&(_ZTV7S7830C3[39]),  39,59},
  {&(_ZTV7S7830C3[47]),  47,59},
  {&(_ZTV7S7830C3[56]),  56,59},
  {&(_tg__ZTV7S7830C4__7S7830C3[8]),  8,11},
  {&(_tg__ZTV7S7830C4__7S7830C3[8]),  8,11},
  {&(_tg__ZTV7S7830C4__7S7830C3[8]),  8,11},
  {&(_tg__ZTV7S7830C6__7S7830C3[5]),  5,8},
  {&(_tg__ZTV7S7830C6__7S7830C3[5]),  5,8},
  {&(_tg__ZTV8S7830C12__7S7830C3[6]),  6,9},
  {&(_tg__ZTV8S7830C138S7830C12__7S7830C3[4]),  4,5},
  {&(_tg__ZTV7S7830C8__8S7830C138S7830C12__7S7830C3[3]),  3,4},
  {&(_tg__ZTV7S7830C68S7830C12__A1__7S7830C3[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C68S7830C12__A1__7S7830C3[3]),  3,4},
  {&(_tg__ZTV8S7830C148S7830C12__7S7830C3[5]),  5,8},
  {&(_tg__ZTV7S7830C68S7830C148S7830C12__A2__7S7830C3[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C68S7830C148S7830C12__A2__7S7830C3[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C148S7830C12__7S7830C3[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C12__7S7830C3[3]),  3,4},
  {&(_tg__ZTV7S7830C6__8S7830C12__7S7830C3[5]),  5,8},
  {&(_tg__ZTV8S7830C14__8S7830C12__7S7830C3[5]),  5,8},
  {&(_tg__ZTV8S7830C14__A1__7S7830C3[5]),  5,8},
  {&(_tg__ZTV7S7830C68S7830C14__A3__7S7830C3[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C68S7830C14__A3__7S7830C3[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C14__A1__7S7830C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7830C3[];
extern  VTBL_ENTRY _ZTV7S7830C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C3[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C4D0Ev,_ZTv0_n24_N7S7830C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S7830C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C4D1Ev,_ZTv0_n24_N7S7830C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S7830C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7830C10D0Ev,_ZTv0_n28_N8S7830C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7830C10D0Ev,_ZThn160_N8S7830C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7830C10D1Ev,_ZTv0_n28_N8S7830C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S7830C10D1Ev,_ZThn160_N8S7830C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7830C3D0Ev,_ZTv0_n28_N7S7830C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7830C3D0Ev,_ZThn160_N7S7830C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7830C3D1Ev,_ZTv0_n28_N7S7830C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7830C3D1Ev,_ZThn160_N7S7830C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S7830C3D0Ev,_ZThn932_N7S7830C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7830C3D0Ev,_ZThn84_N7S7830C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1392_N7S7830C3D1Ev,_ZThn932_N7S7830C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7830C3D1Ev,_ZThn84_N7S7830C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7830C3 = {  "S7830C3", // class name
  bases_S7830C3, 22,
  &(vtc_S7830C3[0]), // expected_vtbl_contents
  &(vtt_S7830C3[0]), // expected_vtt_contents
  ABISELECT(1400,936), // object size
  NSPAIRA(_ZTI7S7830C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S7830C3),59, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7830C3),35, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7830C16  : S20997C6 , S7830C8 {
  ~S7830C16(); // tgen
  S7830C16(); // tgen
};
//SIG(-1 S7830C16) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S7830C16()
{
  extern Class_Descriptor cd_S7830C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7830C16, buf);
    S7830C16 *dp, &lv = *(dp=new (buf) S7830C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S7830C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7830C16)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S7830C16");
    check_base_class_offset(lv, (S7830C8*), 0, "S7830C16");
    test_class_info(&lv, &cd_S7830C16);
    dp->~S7830C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7830C16(Test_S7830C16, "S7830C16", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S7830C16C1Ev();
extern void _ZN8S7830C16D1Ev();
Name_Map name_map_S7830C16[] = {
  NSPAIR(_ZN8S7830C16C1Ev),
  NSPAIR(_ZN8S7830C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
static Base_Class bases_S7830C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7830C8,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7830C16[];
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY vtc_S7830C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C16[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern VTBL_ENTRY _ZTI8S7830C16[];
extern  VTBL_ENTRY _ZTV8S7830C16[];
Class_Descriptor cd_S7830C16 = {  "S7830C16", // class name
  bases_S7830C16, 2,
  &(vtc_S7830C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S7830C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7830C16),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7830C15  : S7830C11 , S7830C16 {
  virtual  ~S7830C15(); // _ZN8S7830C15D2Ev
  S7830C15(); // tgen
};
//SIG(-1 S7830C15) C1{ BC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]} BC6{ BC4 BC3} vd}


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

static void Test_S7830C15()
{
  extern Class_Descriptor cd_S7830C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,33)];
    init_test(&cd_S7830C15, buf);
    S7830C15 *dp, &lv = *(dp=new (buf) S7830C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,128), "sizeof(S7830C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7830C15)");
    check_base_class_offset(lv, (S7830C8*)(S7830C11*), 0, "S7830C15");
    check_base_class_offset(lv, (S20997C6*)(S7830C11*), ABISELECT(136,88), "S7830C15");
    check_base_class_offset(lv, (S4227C37*)(S7830C11*), 0, "S7830C15");
    check_base_class_offset(lv, (S7830C11*), 0, "S7830C15");
    check_base_class_offset(lv, (S20997C6*)(S7830C16*), ABISELECT(96,48), "S7830C15");
    check_base_class_offset(lv, (S7830C8*)(S7830C16*), ABISELECT(88,44), "S7830C15");
    check_base_class_offset(lv, (S7830C16*), ABISELECT(88,44), "S7830C15");
    test_class_info(&lv, &cd_S7830C15);
    dp->~S7830C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7830C15(Test_S7830C15, "S7830C15", ABISELECT(176,128));

#else // __cplusplus

extern void _ZN8S7830C15C1Ev();
extern void _ZN8S7830C15D2Ev();
Name_Map name_map_S7830C15[] = {
  NSPAIR(_ZN8S7830C15C1Ev),
  NSPAIR(_ZN8S7830C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C11;
extern VTBL_ENTRY _ZTI8S7830C11[];
extern  VTBL_ENTRY _ZTV8S7830C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C11[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S7830C16;
extern VTBL_ENTRY _ZTI8S7830C16[];
extern  VTBL_ENTRY _ZTV8S7830C16[];
static Base_Class bases_S7830C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7830C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C11,    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_S20997C6,    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
    6, //immediately_derived
  0, 0},
  {&cd_S7830C8,    ABISELECT(88,44), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7830C16,    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
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7830C15[];
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C15D1Ev();
extern void _ZN8S7830C15D0Ev();
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY vtc_S7830C15[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C15[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C15D0Ev,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI8S7830C15[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S7830C15[];
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C11__8S7830C15[] = {
  ABISELECT(136,88),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C11[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
static  VTT_ENTRY vtt_S7830C15[] = {
  {&(_ZTV8S7830C15[3]),  3,9},
  {&(_tg__ZTV8S7830C11__8S7830C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S7830C15[];
extern  VTBL_ENTRY _ZTV8S7830C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C15[];
Class_Descriptor cd_S7830C15 = {  "S7830C15", // class name
  bases_S7830C15, 7,
  &(vtc_S7830C15[0]), // expected_vtbl_contents
  &(vtt_S7830C15[0]), // expected_vtt_contents
  ABISELECT(176,128), // object size
  NSPAIRA(_ZTI8S7830C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S7830C15),9, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7830C15),2, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7830C2  : virtual S7830C3 , virtual S7830C15 {
  void *s7830c2f0[6];
  virtual  ~S7830C2(); // _ZN7S7830C2D2Ev
  S7830C2(); // tgen
};
//SIG(-1 S7830C2) C1{ VBC2{ VBC3{ VBC4{ m FL[4]} VBC5{ VBC6{ m FL[5]} VBC7{ v1} BC8{ m} vd} vd} BC9{ VBC7 BC10{ BC7 VBC6 BC8 Fp[10]} VBC11{ VBC8 BC12{ VBC7 FC10[9]} BC5 BC13{ BC5 vd}} vd} BC6 VBC13} VBC14{ BC10 BC15{ BC6 BC7} vd} vd Fp[6]}


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

static void Test_S7830C2()
{
  extern Class_Descriptor cd_S7830C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(199,263)];
    init_test(&cd_S7830C2, buf);
    S7830C2 *dp, &lv = *(dp=new (buf) S7830C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1584,1048), "sizeof(S7830C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7830C2)");
    check_base_class_offset(lv, (S10258C6_nt*)(S7830C4*), ABISELECT(184,112), "S7830C2");
    /*is_ambiguous_... S7830C2::S7830C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C6*), ABISELECT(216,144), "S7830C2");
    check_base_class_offset(lv, (S20997C6*)(S7830C11*)(S7830C10*)(S7830C3*), ABISELECT(216,144), "S7830C2");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C6*)(S7830C12*), ABISELECT(216,144), "S7830C2");
    check_base_class_offset(lv, (S20997C6*)(S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(216,144), "S7830C2");
    /*is_ambiguous_... S7830C2::S7830C14 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C6*)(S7830C14*), ABISELECT(216,144), "S7830C2");
    check_base_class_offset(lv, (S20997C6*)(S7830C11*)(S7830C15*), ABISELECT(216,144), "S7830C2");
    /*is_ambiguous_... S7830C2::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C6*), 0, "S7830C2");
    /*is_ambiguous_... S7830C10::S7830C8 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C10*)(S7830C3*), 0, "S7830C2");
    check_base_class_offset(lv, (S7830C8*)(S7830C13*)(S7830C12*), 0, "S7830C2");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C6*)(S7830C12*), 0, "S7830C2");
    check_base_class_offset(lv, (S7830C8*)(S7830C6*)(S7830C14*)(S7830C12*), 0, "S7830C2");
    /*is_ambiguous_... S7830C2::S7830C14 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C6*)(S7830C14*), 0, "S7830C2");
    /*is_ambiguous_... S7830C2::S7830C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C6*), 0, "S7830C2");
    check_base_class_offset(lv, (S7830C6*)(S7830C4*), 0, "S7830C2");
    check_base_class_offset(lv, (S7830C4*)(S7830C3*), 0, "S7830C2");
    check_base_class_offset(lv, (S7830C8*)(S7830C11*)(S7830C10*)(S7830C3*), ABISELECT(56,28), "S7830C2");
    check_base_class_offset(lv, (S4227C37*)(S7830C11*)(S7830C10*)(S7830C3*), ABISELECT(56,28), "S7830C2");
    check_base_class_offset(lv, (S7830C11*)(S7830C10*)(S7830C3*), ABISELECT(56,28), "S7830C2");
    /*is_ambiguous_... S7830C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C12*), ABISELECT(1432,952), "S7830C2");
    check_base_class_offset(lv, (S7830C13*)(S7830C12*), ABISELECT(256,184), "S7830C2");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C6*)(S7830C12*), ABISELECT(1416,944), "S7830C2");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C6*)(S7830C12*), ABISELECT(1416,944), "S7830C2");
    check_base_class_offset(lv, (S4227C37*)(S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(1424,948), "S7830C2");
    check_base_class_offset(lv, (S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(1424,948), "S7830C2");
    check_base_class_offset(lv, (S7830C14*)(S7830C12*), ABISELECT(1424,948), "S7830C2");
    check_base_class_offset(lv, (S7830C12*)(S7830C10*)(S7830C3*), ABISELECT(256,184), "S7830C2");
    check_base_class_offset(lv, (S7830C10*)(S7830C3*), ABISELECT(56,28), "S7830C2");
    /*is_ambiguous_... S7830C3::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C3*), ABISELECT(144,72), "S7830C2");
    /*is_ambiguous_... S7830C2::S7830C14 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C6*)(S7830C14*), ABISELECT(1440,956), "S7830C2");
    /*is_ambiguous_... S7830C2::S7830C14 */ AMB_check_base_class_offset(lv, (S7830C6*)(S7830C14*), ABISELECT(1440,956), "S7830C2");
    /*is_ambiguous_... S7830C3::S7830C14 */ AMB_check_base_class_offset(lv, (S7830C14*)(S7830C3*), ABISELECT(1440,956), "S7830C2");
    check_base_class_offset(lv, (S7830C3*), ABISELECT(56,28), "S7830C2");
    check_base_class_offset(lv, (S7830C8*)(S7830C11*)(S7830C15*), ABISELECT(1448,960), "S7830C2");
    check_base_class_offset(lv, (S4227C37*)(S7830C11*)(S7830C15*), ABISELECT(1448,960), "S7830C2");
    check_base_class_offset(lv, (S7830C11*)(S7830C15*), ABISELECT(1448,960), "S7830C2");
    check_base_class_offset(lv, (S20997C6*)(S7830C16*)(S7830C15*), ABISELECT(1544,1008), "S7830C2");
    check_base_class_offset(lv, (S7830C8*)(S7830C16*)(S7830C15*), ABISELECT(1536,1004), "S7830C2");
    check_base_class_offset(lv, (S7830C16*)(S7830C15*), ABISELECT(1536,1004), "S7830C2");
    check_base_class_offset(lv, (S7830C15*), ABISELECT(1448,960), "S7830C2");
    check_field_offset(lv, s7830c2f0, ABISELECT(8,4), "S7830C2.s7830c2f0");
    test_class_info(&lv, &cd_S7830C2);
    dp->~S7830C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7830C2(Test_S7830C2, "S7830C2", ABISELECT(1584,1048));

#else // __cplusplus

extern void _ZN7S7830C2C1Ev();
extern void _ZN7S7830C2D2Ev();
Name_Map name_map_S7830C2[] = {
  NSPAIR(_ZN7S7830C2C1Ev),
  NSPAIR(_ZN7S7830C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S7830C4;
extern VTBL_ENTRY _ZTI7S7830C4[];
extern  VTBL_ENTRY _ZTV7S7830C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C4[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C11;
extern VTBL_ENTRY _ZTI8S7830C11[];
extern  VTBL_ENTRY _ZTV8S7830C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C13;
extern VTBL_ENTRY _ZTI8S7830C13[];
extern  VTBL_ENTRY _ZTV8S7830C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S7830C14;
extern VTBL_ENTRY _ZTI8S7830C14[];
extern  VTBL_ENTRY _ZTV8S7830C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C14[];
extern Class_Descriptor cd_S7830C12;
extern VTBL_ENTRY _ZTI8S7830C12[];
extern  VTBL_ENTRY _ZTV8S7830C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C12[];
extern Class_Descriptor cd_S7830C10;
extern VTBL_ENTRY _ZTI8S7830C10[];
extern  VTBL_ENTRY _ZTV8S7830C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S7830C14;
extern VTBL_ENTRY _ZTI8S7830C14[];
extern  VTBL_ENTRY _ZTV8S7830C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C14[];
extern Class_Descriptor cd_S7830C3;
extern VTBL_ENTRY _ZTI7S7830C3[];
extern  VTBL_ENTRY _ZTV7S7830C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C3[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C11;
extern VTBL_ENTRY _ZTI8S7830C11[];
extern  VTBL_ENTRY _ZTV8S7830C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C11[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S7830C16;
extern VTBL_ENTRY _ZTI8S7830C16[];
extern  VTBL_ENTRY _ZTV8S7830C16[];
extern Class_Descriptor cd_S7830C15;
extern VTBL_ENTRY _ZTI8S7830C15[];
extern  VTBL_ENTRY _ZTV8S7830C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C15[];
static Base_Class bases_S7830C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C6_nt,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(216,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7830C8,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7830C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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_S7830C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7830C8,    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
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7830C11,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1432,952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7830C13,    ABISELECT(256,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1416,944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C6,    ABISELECT(1416,944), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1424,948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7830C6,    ABISELECT(1424,948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7830C14,    ABISELECT(1424,948), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7830C12,    ABISELECT(256,184), //bcp->offset
    32, //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
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7830C10,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    22, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1440,956), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C6,    ABISELECT(1440,956), //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
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7830C14,    ABISELECT(1440,956), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7830C3,    ABISELECT(56,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7830C8,    ABISELECT(1448,960), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1448,960), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C11,    ABISELECT(1448,960), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(1544,1008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7830C8,    ABISELECT(1536,1004), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7830C16,    ABISELECT(1536,1004), //bcp->offset
    -1, //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
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7830C15,    ABISELECT(1448,960), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7830C2[];
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C2D1Ev,_ZTv0_n24_N7S7830C2D1Ev)();
extern void _ZN7S7830C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C2D0Ev,_ZTv0_n24_N7S7830C2D0Ev)();
extern void _ZN7S7830C2D0Ev() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n96_N7S7830C2D1Ev,_ZTv0_n48_N7S7830C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7830C2D1Ev,_ZThn28_N7S7830C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7830C2D0Ev,_ZTv0_n48_N7S7830C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7830C2D0Ev,_ZThn28_N7S7830C2D0Ev)() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N7S7830C2D1Ev,_ZTv0_n28_N7S7830C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S7830C2D1Ev,_ZThn184_N7S7830C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7830C2D0Ev,_ZTv0_n28_N7S7830C2D0Ev)();
extern void ABISELECT(_ZThn256_N7S7830C2D0Ev,_ZThn184_N7S7830C2D0Ev)() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S7830C2D1Ev,_ZTvn760_n28_N7S7830C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S7830C2D0Ev,_ZTvn760_n28_N7S7830C2D0Ev)();
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S7830C2D1Ev,_ZTvn764_n28_N7S7830C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S7830C2D0Ev,_ZTvn764_n28_N7S7830C2D0Ev)();
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C2D1Ev,_ZTv0_n24_N7S7830C2D1Ev)();
extern void ABISELECT(_ZThn1440_N7S7830C2D1Ev,_ZThn956_N7S7830C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C2D0Ev,_ZTv0_n24_N7S7830C2D0Ev)();
extern void ABISELECT(_ZThn1440_N7S7830C2D0Ev,_ZThn956_N7S7830C2D0Ev)() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N7S7830C2D1Ev,_ZTv0_n20_N7S7830C2D1Ev)();
extern void ABISELECT(_ZThn1448_N7S7830C2D1Ev,_ZThn960_N7S7830C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7830C2D0Ev,_ZTv0_n20_N7S7830C2D0Ev)();
extern void ABISELECT(_ZThn1448_N7S7830C2D0Ev,_ZThn960_N7S7830C2D0Ev)() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY vtc_S7830C2[] = {
  ABISELECT(1448,960),
  ABISELECT(1440,956),
  ABISELECT(1432,952),
  ABISELECT(256,184),
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(184,112),
  0,
  0,
  ABISELECT(216,144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C2D1Ev,_ZTv0_n24_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C2D0Ev,_ZTv0_n24_N7S7830C2D0Ev),
  ABISELECT(-56,-28),
  0,
  ABISELECT(1384,928),
  ABISELECT(-56,-28),
  ABISELECT(128,84),
  ABISELECT(-56,-28),
  ABISELECT(1376,924),
  ABISELECT(200,156),
  ABISELECT(-56,-28),
  ABISELECT(160,116),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7830C2D1Ev,_ZTv0_n48_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7830C2D0Ev,_ZTv0_n48_N7S7830C2D0Ev),
  ABISELECT(-256,-184),
  -40,
  ABISELECT(1176,768),
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7830C2D1Ev,_ZTv0_n28_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7830C2D0Ev,_ZTv0_n28_N7S7830C2D0Ev),
  ABISELECT(-1416,-944),
  ABISELECT(-1200,-800),
  ABISELECT(-1416,-944),
  ABISELECT(-1416,-944),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7830C2D1Ev,_ZTvn760_n28_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7830C2D0Ev,_ZTvn760_n28_N7S7830C2D0Ev),
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  ABISELECT(-1424,-948),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7830C2D1Ev,_ZTvn764_n28_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7830C2D0Ev,_ZTvn764_n28_N7S7830C2D0Ev),
  ABISELECT(-1440,-956),
  ABISELECT(-1440,-956),
  ABISELECT(-1224,-812),
  ABISELECT(-1440,-956),
  ABISELECT(-1440,-956),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C2D1Ev,_ZTv0_n24_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C2D0Ev,_ZTv0_n24_N7S7830C2D0Ev),
  ABISELECT(-1448,-960),
  0,
  ABISELECT(-1232,-816),
  ABISELECT(-1448,-960),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7830C2D1Ev,_ZTv0_n20_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7830C2D0Ev,_ZTv0_n20_N7S7830C2D0Ev),
  ABISELECT(-1536,-1004),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern VTBL_ENTRY _ZTV7S7830C2[];
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C3D1Ev();
extern void _ZN7S7830C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C3__7S7830C2[] = {
  ABISELECT(1384,928),
  ABISELECT(-56,-28),
  ABISELECT(128,84),
  ABISELECT(-56,-28),
  ABISELECT(1376,924),
  ABISELECT(200,156),
  ABISELECT(-56,-28),
  ABISELECT(160,116),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C3D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C10D1Ev();
extern void _ZN8S7830C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C107S7830C3__7S7830C2[] = {
  ABISELECT(1376,924),
  ABISELECT(200,156),
  ABISELECT(-56,-28),
  ABISELECT(160,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C10D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C118S7830C107S7830C3__7S7830C2[] = {
  ABISELECT(160,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C11[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C107S7830C3__7S7830C2[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S7830C10D1Ev,_ZTv0_n28_N8S7830C10D1Ev)();
extern void ABISELECT(_ZThn200_N8S7830C10D1Ev,_ZThn156_N8S7830C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7830C10D0Ev,_ZTv0_n28_N8S7830C10D0Ev)();
extern void ABISELECT(_ZThn200_N8S7830C10D0Ev,_ZThn156_N8S7830C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7830C12__8S7830C107S7830C3__7S7830C2[] = {
  ABISELECT(-200,-156),
  -40,
  ABISELECT(1176,768),
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  ABISELECT(-200,-156),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7830C10D1Ev,_ZTv0_n28_N8S7830C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7830C10D0Ev,_ZTv0_n28_N8S7830C10D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S7830C10D1Ev,_ZTvn760_n28_N8S7830C10D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S7830C10D0Ev,_ZTvn760_n28_N8S7830C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C12__8S7830C107S7830C3__7S7830C2[] = {
  ABISELECT(-1416,-944),
  ABISELECT(-1200,-800),
  ABISELECT(-1416,-944),
  ABISELECT(-1360,-916),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S7830C10D1Ev,_ZTvn760_n28_N8S7830C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S7830C10D0Ev,_ZTvn760_n28_N8S7830C10D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S7830C10D1Ev,_ZTvn764_n28_N8S7830C10D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S7830C10D0Ev,_ZTvn764_n28_N8S7830C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7830C148S7830C12__8S7830C107S7830C3__7S7830C2[] = {
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  ABISELECT(-1368,-920),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S7830C10D1Ev,_ZTvn764_n28_N8S7830C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S7830C10D0Ev,_ZTvn764_n28_N8S7830C10D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7830C4__7S7830C3__7S7830C2[] = {
  0,
  ABISELECT(184,112),
  ABISELECT(56,28),
  0,
  ABISELECT(216,144),
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N7S7830C3D1Ev,_ZTv0_n28_N7S7830C3D1Ev)();
extern void ABISELECT(_ZThn200_N7S7830C3D1Ev,_ZThn156_N7S7830C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7830C3D0Ev,_ZTv0_n28_N7S7830C3D0Ev)();
extern void ABISELECT(_ZThn200_N7S7830C3D0Ev,_ZThn156_N7S7830C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7830C12__7S7830C3__7S7830C2[] = {
  ABISELECT(-200,-156),
  -40,
  ABISELECT(1176,768),
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  ABISELECT(-200,-156),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7830C3D1Ev,_ZTv0_n28_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7830C3D0Ev,_ZTv0_n28_N7S7830C3D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S7830C3D1Ev,_ZTvn760_n28_N7S7830C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S7830C3D0Ev,_ZTvn760_n28_N7S7830C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C12__A1__7S7830C3__7S7830C2[] = {
  ABISELECT(-1416,-944),
  ABISELECT(-1200,-800),
  ABISELECT(-1416,-944),
  ABISELECT(-1360,-916),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7830C3D1Ev,_ZTvn760_n28_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7830C3D0Ev,_ZTvn760_n28_N7S7830C3D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S7830C3D1Ev,_ZTvn764_n28_N7S7830C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S7830C3D0Ev,_ZTvn764_n28_N7S7830C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7830C148S7830C12__7S7830C3__7S7830C2[] = {
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  ABISELECT(-1368,-920),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7830C3D1Ev,_ZTvn764_n28_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7830C3D0Ev,_ZTvn764_n28_N7S7830C3D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev)();
extern void ABISELECT(_ZThn1384_N7S7830C3D1Ev,_ZThn928_N7S7830C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev)();
extern void ABISELECT(_ZThn1384_N7S7830C3D0Ev,_ZThn928_N7S7830C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7830C14__A1__7S7830C3__7S7830C2[] = {
  ABISELECT(-1384,-928),
  ABISELECT(-1440,-956),
  ABISELECT(-1224,-812),
  ABISELECT(-1440,-956),
  ABISELECT(-1384,-928),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C4D1Ev,_ZTv0_n24_N7S7830C4D1Ev)();
extern void _ZN7S7830C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C4D0Ev,_ZTv0_n24_N7S7830C4D0Ev)();
extern void _ZN7S7830C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7830C4__7S7830C2[] = {
  0,
  ABISELECT(184,112),
  0,
  0,
  ABISELECT(216,144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C4[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C4D1Ev,_ZTv0_n24_N7S7830C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C4D0Ev,_ZTv0_n24_N7S7830C4D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C6__7S7830C2[] = {
  0,
  ABISELECT(216,144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C12D1Ev();
extern void _ZN8S7830C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C12__7S7830C2[] = {
  -40,
  ABISELECT(1176,768),
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C12D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C138S7830C12__7S7830C2[] = {
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C13[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C138S7830C12__7S7830C2[] = {
  0,
  ABISELECT(256,184),
  (VTBL_ENTRY)&(_ZTI8S7830C13[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C12__A1__7S7830C2[] = {
  ABISELECT(-1416,-944),
  ABISELECT(-1200,-800),
  ABISELECT(-1416,-944),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C68S7830C12__A1__7S7830C2[] = {
  0,
  ABISELECT(1416,944),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C14D1Ev();
extern void _ZN8S7830C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C148S7830C12__7S7830C2[] = {
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C148S7830C12__A2__7S7830C2[] = {
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C68S7830C148S7830C12__A2__7S7830C2[] = {
  0,
  ABISELECT(1424,948),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C148S7830C12__7S7830C2[] = {
  0,
  ABISELECT(1424,948),
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C12__7S7830C2[] = {
  0,
  ABISELECT(256,184),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZThn1160_N8S7830C12D1Ev,_ZThn760_N8S7830C12D1Ev)();
extern void ABISELECT(_ZThn1160_N8S7830C12D0Ev,_ZThn760_N8S7830C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7830C6__8S7830C12__7S7830C2[] = {
  ABISELECT(-1416,-944),
  ABISELECT(-1200,-800),
  ABISELECT(-1416,-944),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7830C12D1Ev,_ZThn760_N8S7830C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7830C12D0Ev,_ZThn760_N8S7830C12D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZThn1168_N8S7830C12D1Ev,_ZThn764_N8S7830C12D1Ev)();
extern void ABISELECT(_ZThn1168_N8S7830C12D0Ev,_ZThn764_N8S7830C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7830C14__8S7830C12__7S7830C2[] = {
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7830C12D1Ev,_ZThn764_N8S7830C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7830C12D0Ev,_ZThn764_N8S7830C12D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C14D1Ev();
extern void _ZN8S7830C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C14__A1__7S7830C2[] = {
  ABISELECT(-1440,-956),
  ABISELECT(-1224,-812),
  ABISELECT(-1440,-956),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C14__A3__7S7830C2[] = {
  ABISELECT(-1440,-956),
  ABISELECT(-1224,-812),
  ABISELECT(-1440,-956),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C68S7830C14__A3__7S7830C2[] = {
  0,
  ABISELECT(1440,956),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C14__A1__7S7830C2[] = {
  0,
  ABISELECT(1440,956),
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C15D1Ev();
extern void _ZN8S7830C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C15__7S7830C2[] = {
  ABISELECT(-1232,-816),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C15[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C15D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C118S7830C15__A1__7S7830C2[] = {
  ABISELECT(-1232,-816),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C11[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
static  VTT_ENTRY vtt_S7830C2[] = {
  {&(_ZTV7S7830C2[14]),  14,78},
  {&(_ZTV7S7830C2[29]),  29,78},
  {&(_ZTV7S7830C2[14]),  14,78},
  {&(_ZTV7S7830C2[14]),  14,78},
  {&(_ZTV7S7830C2[14]),  14,78},
  {&(_ZTV7S7830C2[39]),  39,78},
  {&(_ZTV7S7830C2[47]),  47,78},
  {&(_ZTV7S7830C2[55]),  55,78},
  {&(_ZTV7S7830C2[64]),  64,78},
  {&(_ZTV7S7830C2[72]),  72,78},
  {&(_ZTV7S7830C2[77]),  77,78},
  {&(_tg__ZTV7S7830C3__7S7830C2[10]),  10,13},
  {&(_tg__ZTV8S7830C107S7830C3__7S7830C2[6]),  6,9},
  {&(_tg__ZTV8S7830C118S7830C107S7830C3__7S7830C2[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C107S7830C3__7S7830C2[3]),  3,4},
  {&(_tg__ZTV8S7830C12__8S7830C107S7830C3__7S7830C2[7]),  7,10},
  {&(_tg__ZTV7S7830C68S7830C12__8S7830C107S7830C3__7S7830C2[5]),  5,8},
  {&(_tg__ZTV8S7830C148S7830C12__8S7830C107S7830C3__7S7830C2[5]),  5,8},
  {&(_tg__ZTV7S7830C4__7S7830C3__7S7830C2[8]),  8,11},
  {&(_tg__ZTV7S7830C4__7S7830C3__7S7830C2[8]),  8,11},
  {&(_tg__ZTV7S7830C4__7S7830C3__7S7830C2[8]),  8,11},
  {&(_tg__ZTV8S7830C12__7S7830C3__7S7830C2[7]),  7,10},
  {&(_tg__ZTV7S7830C68S7830C12__A1__7S7830C3__7S7830C2[5]),  5,8},
  {&(_tg__ZTV8S7830C148S7830C12__7S7830C3__7S7830C2[5]),  5,8},
  {&(_tg__ZTV8S7830C14__A1__7S7830C3__7S7830C2[6]),  6,9},
  {&(_tg__ZTV7S7830C4__7S7830C2[8]),  8,11},
  {&(_tg__ZTV7S7830C4__7S7830C2[8]),  8,11},
  {&(_tg__ZTV7S7830C4__7S7830C2[8]),  8,11},
  {&(_tg__ZTV7S7830C6__7S7830C2[5]),  5,8},
  {&(_tg__ZTV7S7830C6__7S7830C2[5]),  5,8},
  {&(_tg__ZTV8S7830C12__7S7830C2[6]),  6,9},
  {&(_tg__ZTV8S7830C138S7830C12__7S7830C2[4]),  4,5},
  {&(_tg__ZTV7S7830C8__8S7830C138S7830C12__7S7830C2[3]),  3,4},
  {&(_tg__ZTV7S7830C68S7830C12__A1__7S7830C2[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C68S7830C12__A1__7S7830C2[3]),  3,4},
  {&(_tg__ZTV8S7830C148S7830C12__7S7830C2[5]),  5,8},
  {&(_tg__ZTV7S7830C68S7830C148S7830C12__A2__7S7830C2[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C68S7830C148S7830C12__A2__7S7830C2[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C148S7830C12__7S7830C2[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C12__7S7830C2[3]),  3,4},
  {&(_tg__ZTV7S7830C6__8S7830C12__7S7830C2[5]),  5,8},
  {&(_tg__ZTV8S7830C14__8S7830C12__7S7830C2[5]),  5,8},
  {&(_tg__ZTV8S7830C14__A1__7S7830C2[5]),  5,8},
  {&(_tg__ZTV7S7830C68S7830C14__A3__7S7830C2[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C68S7830C14__A3__7S7830C2[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C14__A1__7S7830C2[3]),  3,4},
  {&(_tg__ZTV8S7830C15__7S7830C2[3]),  3,6},
  {&(_tg__ZTV8S7830C118S7830C15__A1__7S7830C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7830C2[];
extern  VTBL_ENTRY _ZTV7S7830C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C2[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C4D0Ev,_ZTv0_n24_N7S7830C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S7830C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C4D1Ev,_ZTv0_n24_N7S7830C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S7830C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1384_N7S7830C3D0Ev,_ZThn928_N7S7830C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1384_N7S7830C3D1Ev,_ZThn928_N7S7830C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7830C3D0Ev,_ZTv0_n28_N7S7830C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7830C3D0Ev,_ZThn156_N7S7830C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7830C3D1Ev,_ZTv0_n28_N7S7830C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7830C3D1Ev,_ZThn156_N7S7830C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7830C10D0Ev,_ZTv0_n28_N8S7830C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7830C10D0Ev,_ZThn156_N8S7830C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7830C10D1Ev,_ZTv0_n28_N8S7830C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7830C10D1Ev,_ZThn156_N8S7830C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7830C2D0Ev,_ZTv0_n20_N7S7830C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N7S7830C2D0Ev,_ZThn960_N7S7830C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7830C2D1Ev,_ZTv0_n20_N7S7830C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N7S7830C2D1Ev,_ZThn960_N7S7830C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7830C2D0Ev,_ZTv0_n28_N7S7830C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7830C2D0Ev,_ZThn184_N7S7830C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7830C2D1Ev,_ZTv0_n28_N7S7830C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7830C2D1Ev,_ZThn184_N7S7830C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7830C2D0Ev,_ZTv0_n48_N7S7830C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7830C2D0Ev,_ZThn28_N7S7830C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7830C2D1Ev,_ZTv0_n48_N7S7830C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7830C2D1Ev,_ZThn28_N7S7830C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C2D0Ev,_ZTv0_n24_N7S7830C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N7S7830C2D0Ev,_ZThn956_N7S7830C2D0Ev),
  (VTBL_ENTRY)_ZN7S7830C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C2D1Ev,_ZTv0_n24_N7S7830C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N7S7830C2D1Ev,_ZThn956_N7S7830C2D1Ev),
  (VTBL_ENTRY)_ZN7S7830C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7830C2 = {  "S7830C2", // class name
  bases_S7830C2, 30,
  &(vtc_S7830C2[0]), // expected_vtbl_contents
  &(vtt_S7830C2[0]), // expected_vtt_contents
  ABISELECT(1584,1048), // object size
  NSPAIRA(_ZTI7S7830C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7830C2),78, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7830C2),48, //virtual table table var
  19, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7830C1  : S7830C2 {
  ~S7830C1(); // tgen
  S7830C1(); // tgen
};
//SIG(1 S7830C1) C1{ BC2{ VBC3{ VBC4{ VBC5{ m FL[4]} VBC6{ VBC7{ m FL[5]} VBC8{ v1} BC9{ m} vd} vd} BC10{ VBC8 BC11{ BC8 VBC7 BC9 Fp[10]} VBC12{ VBC9 BC13{ VBC8 FC11[9]} BC6 BC14{ BC6 vd}} vd} BC7 VBC14} VBC15{ BC11 BC16{ BC7 BC8} vd} vd Fp[6]}}


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

static void Test_S7830C1()
{
  extern Class_Descriptor cd_S7830C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(199,263)];
    init_test(&cd_S7830C1, buf);
    S7830C1 *dp, &lv = *(dp=new (buf) S7830C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1584,1048), "sizeof(S7830C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7830C1)");
    check_base_class_offset(lv, (S10258C6_nt*)(S7830C4*), ABISELECT(184,112), "S7830C1");
    /*is_ambiguous_... S7830C1::S7830C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C6*), ABISELECT(216,144), "S7830C1");
    check_base_class_offset(lv, (S20997C6*)(S7830C11*)(S7830C10*)(S7830C3*), ABISELECT(216,144), "S7830C1");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C6*)(S7830C12*), ABISELECT(216,144), "S7830C1");
    check_base_class_offset(lv, (S20997C6*)(S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(216,144), "S7830C1");
    /*is_ambiguous_... S7830C1::S7830C14 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C6*)(S7830C14*), ABISELECT(216,144), "S7830C1");
    check_base_class_offset(lv, (S20997C6*)(S7830C11*)(S7830C15*), ABISELECT(216,144), "S7830C1");
    /*is_ambiguous_... S7830C1::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C6*), 0, "S7830C1");
    /*is_ambiguous_... S7830C10::S7830C8 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C10*)(S7830C3*), 0, "S7830C1");
    check_base_class_offset(lv, (S7830C8*)(S7830C13*)(S7830C12*), 0, "S7830C1");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C6*)(S7830C12*), 0, "S7830C1");
    check_base_class_offset(lv, (S7830C8*)(S7830C6*)(S7830C14*)(S7830C12*), 0, "S7830C1");
    /*is_ambiguous_... S7830C1::S7830C14 */ AMB_check_base_class_offset(lv, (S7830C8*)(S7830C6*)(S7830C14*), 0, "S7830C1");
    /*is_ambiguous_... S7830C1::S7830C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C6*), 0, "S7830C1");
    check_base_class_offset(lv, (S7830C6*)(S7830C4*), 0, "S7830C1");
    check_base_class_offset(lv, (S7830C4*)(S7830C3*), 0, "S7830C1");
    check_base_class_offset(lv, (S7830C8*)(S7830C11*)(S7830C10*)(S7830C3*), ABISELECT(56,28), "S7830C1");
    check_base_class_offset(lv, (S4227C37*)(S7830C11*)(S7830C10*)(S7830C3*), ABISELECT(56,28), "S7830C1");
    check_base_class_offset(lv, (S7830C11*)(S7830C10*)(S7830C3*), ABISELECT(56,28), "S7830C1");
    /*is_ambiguous_... S7830C12::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C12*), ABISELECT(1432,952), "S7830C1");
    check_base_class_offset(lv, (S7830C13*)(S7830C12*), ABISELECT(256,184), "S7830C1");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C6*)(S7830C12*), ABISELECT(1416,944), "S7830C1");
    /*is_ambiguous_... S7830C12::S7830C6 */ AMB_check_base_class_offset(lv, (S7830C6*)(S7830C12*), ABISELECT(1416,944), "S7830C1");
    check_base_class_offset(lv, (S4227C37*)(S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(1424,948), "S7830C1");
    check_base_class_offset(lv, (S7830C6*)(S7830C14*)(S7830C12*), ABISELECT(1424,948), "S7830C1");
    check_base_class_offset(lv, (S7830C14*)(S7830C12*), ABISELECT(1424,948), "S7830C1");
    check_base_class_offset(lv, (S7830C12*)(S7830C10*)(S7830C3*), ABISELECT(256,184), "S7830C1");
    check_base_class_offset(lv, (S7830C10*)(S7830C3*), ABISELECT(56,28), "S7830C1");
    /*is_ambiguous_... S7830C3::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S7830C3*), ABISELECT(144,72), "S7830C1");
    /*is_ambiguous_... S7830C1::S7830C14 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7830C6*)(S7830C14*), ABISELECT(1440,956), "S7830C1");
    /*is_ambiguous_... S7830C1::S7830C14 */ AMB_check_base_class_offset(lv, (S7830C6*)(S7830C14*), ABISELECT(1440,956), "S7830C1");
    /*is_ambiguous_... S7830C3::S7830C14 */ AMB_check_base_class_offset(lv, (S7830C14*)(S7830C3*), ABISELECT(1440,956), "S7830C1");
    check_base_class_offset(lv, (S7830C3*)(S7830C2*), ABISELECT(56,28), "S7830C1");
    check_base_class_offset(lv, (S7830C8*)(S7830C11*)(S7830C15*), ABISELECT(1448,960), "S7830C1");
    check_base_class_offset(lv, (S4227C37*)(S7830C11*)(S7830C15*), ABISELECT(1448,960), "S7830C1");
    check_base_class_offset(lv, (S7830C11*)(S7830C15*), ABISELECT(1448,960), "S7830C1");
    check_base_class_offset(lv, (S20997C6*)(S7830C16*)(S7830C15*), ABISELECT(1544,1008), "S7830C1");
    check_base_class_offset(lv, (S7830C8*)(S7830C16*)(S7830C15*), ABISELECT(1536,1004), "S7830C1");
    check_base_class_offset(lv, (S7830C16*)(S7830C15*), ABISELECT(1536,1004), "S7830C1");
    check_base_class_offset(lv, (S7830C15*)(S7830C2*), ABISELECT(1448,960), "S7830C1");
    check_base_class_offset(lv, (S7830C2*), 0, "S7830C1");
    test_class_info(&lv, &cd_S7830C1);
    dp->~S7830C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7830C1(Test_S7830C1, "S7830C1", ABISELECT(1584,1048));

#else // __cplusplus

extern void _ZN7S7830C1C1Ev();
extern void _ZN7S7830C1D1Ev();
Name_Map name_map_S7830C1[] = {
  NSPAIR(_ZN7S7830C1C1Ev),
  NSPAIR(_ZN7S7830C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S7830C4;
extern VTBL_ENTRY _ZTI7S7830C4[];
extern  VTBL_ENTRY _ZTV7S7830C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C4[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C11;
extern VTBL_ENTRY _ZTI8S7830C11[];
extern  VTBL_ENTRY _ZTV8S7830C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C13;
extern VTBL_ENTRY _ZTI8S7830C13[];
extern  VTBL_ENTRY _ZTV8S7830C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C13[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S7830C14;
extern VTBL_ENTRY _ZTI8S7830C14[];
extern  VTBL_ENTRY _ZTV8S7830C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C14[];
extern Class_Descriptor cd_S7830C12;
extern VTBL_ENTRY _ZTI8S7830C12[];
extern  VTBL_ENTRY _ZTV8S7830C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C12[];
extern Class_Descriptor cd_S7830C10;
extern VTBL_ENTRY _ZTI8S7830C10[];
extern  VTBL_ENTRY _ZTV8S7830C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C6;
extern VTBL_ENTRY _ZTI7S7830C6[];
extern  VTBL_ENTRY _ZTV7S7830C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C6[];
extern Class_Descriptor cd_S7830C14;
extern VTBL_ENTRY _ZTI8S7830C14[];
extern  VTBL_ENTRY _ZTV8S7830C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C14[];
extern Class_Descriptor cd_S7830C3;
extern VTBL_ENTRY _ZTI7S7830C3[];
extern  VTBL_ENTRY _ZTV7S7830C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C3[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7830C11;
extern VTBL_ENTRY _ZTI8S7830C11[];
extern  VTBL_ENTRY _ZTV8S7830C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C11[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7830C8;
extern VTBL_ENTRY _ZTI7S7830C8[];
extern  VTBL_ENTRY _ZTV7S7830C8[];
extern Class_Descriptor cd_S7830C16;
extern VTBL_ENTRY _ZTI8S7830C16[];
extern  VTBL_ENTRY _ZTV8S7830C16[];
extern Class_Descriptor cd_S7830C15;
extern VTBL_ENTRY _ZTI8S7830C15[];
extern  VTBL_ENTRY _ZTV8S7830C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7830C15[];
extern Class_Descriptor cd_S7830C2;
extern VTBL_ENTRY _ZTI7S7830C2[];
extern  VTBL_ENTRY _ZTV7S7830C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C2[];
static Base_Class bases_S7830C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C6_nt,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(216,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7830C8,    0, //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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7830C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7830C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7830C8,    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
    11, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7830C11,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1432,952), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S7830C13,    ABISELECT(256,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1416,944), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C6,    ABISELECT(1416,944), //bcp->offset
    42, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1424,948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7830C6,    ABISELECT(1424,948), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7830C14,    ABISELECT(1424,948), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7830C12,    ABISELECT(256,184), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S7830C10,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    22, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1440,956), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C6,    ABISELECT(1440,956), //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
    9, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7830C14,    ABISELECT(1440,956), //bcp->offset
    58, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S7830C3,    ABISELECT(56,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7830C8,    ABISELECT(1448,960), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1448,960), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7830C11,    ABISELECT(1448,960), //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
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(1544,1008), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7830C8,    ABISELECT(1536,1004), //bcp->offset
    75, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7830C16,    ABISELECT(1536,1004), //bcp->offset
    -1, //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
    18, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7830C15,    ABISELECT(1448,960), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S7830C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7830C1[];
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C1D1Ev,_ZTv0_n24_N7S7830C1D1Ev)();
extern void _ZN7S7830C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C1D0Ev,_ZTv0_n24_N7S7830C1D0Ev)();
extern void _ZN7S7830C1D0Ev() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n96_N7S7830C1D1Ev,_ZTv0_n48_N7S7830C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7830C1D1Ev,_ZThn28_N7S7830C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7830C1D0Ev,_ZTv0_n48_N7S7830C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S7830C1D0Ev,_ZThn28_N7S7830C1D0Ev)() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N7S7830C1D1Ev,_ZTv0_n28_N7S7830C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S7830C1D1Ev,_ZThn184_N7S7830C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7830C1D0Ev,_ZTv0_n28_N7S7830C1D0Ev)();
extern void ABISELECT(_ZThn256_N7S7830C1D0Ev,_ZThn184_N7S7830C1D0Ev)() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S7830C1D1Ev,_ZTvn760_n28_N7S7830C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S7830C1D0Ev,_ZTvn760_n28_N7S7830C1D0Ev)();
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S7830C1D1Ev,_ZTvn764_n28_N7S7830C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S7830C1D0Ev,_ZTvn764_n28_N7S7830C1D0Ev)();
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C1D1Ev,_ZTv0_n24_N7S7830C1D1Ev)();
extern void ABISELECT(_ZThn1440_N7S7830C1D1Ev,_ZThn956_N7S7830C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C1D0Ev,_ZTv0_n24_N7S7830C1D0Ev)();
extern void ABISELECT(_ZThn1440_N7S7830C1D0Ev,_ZThn956_N7S7830C1D0Ev)() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N7S7830C1D1Ev,_ZTv0_n20_N7S7830C1D1Ev)();
extern void ABISELECT(_ZThn1448_N7S7830C1D1Ev,_ZThn960_N7S7830C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7830C1D0Ev,_ZTv0_n20_N7S7830C1D0Ev)();
extern void ABISELECT(_ZThn1448_N7S7830C1D0Ev,_ZThn960_N7S7830C1D0Ev)() __attribute__((weak));
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY vtc_S7830C1[] = {
  ABISELECT(1448,960),
  ABISELECT(1440,956),
  ABISELECT(1432,952),
  ABISELECT(256,184),
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(184,112),
  0,
  0,
  ABISELECT(216,144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C1[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C1D1Ev,_ZTv0_n24_N7S7830C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C1D0Ev,_ZTv0_n24_N7S7830C1D0Ev),
  ABISELECT(-56,-28),
  0,
  ABISELECT(1384,928),
  ABISELECT(-56,-28),
  ABISELECT(128,84),
  ABISELECT(-56,-28),
  ABISELECT(1376,924),
  ABISELECT(200,156),
  ABISELECT(-56,-28),
  ABISELECT(160,116),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7830C1[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7830C1D1Ev,_ZTv0_n48_N7S7830C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7830C1D0Ev,_ZTv0_n48_N7S7830C1D0Ev),
  ABISELECT(-256,-184),
  -40,
  ABISELECT(1176,768),
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S7830C1[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7830C1D1Ev,_ZTv0_n28_N7S7830C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7830C1D0Ev,_ZTv0_n28_N7S7830C1D0Ev),
  ABISELECT(-1416,-944),
  ABISELECT(-1200,-800),
  ABISELECT(-1416,-944),
  ABISELECT(-1416,-944),
  (VTBL_ENTRY)&(_ZTI7S7830C1[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7830C1D1Ev,_ZTvn760_n28_N7S7830C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7830C1D0Ev,_ZTvn760_n28_N7S7830C1D0Ev),
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  ABISELECT(-1424,-948),
  (VTBL_ENTRY)&(_ZTI7S7830C1[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7830C1D1Ev,_ZTvn764_n28_N7S7830C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7830C1D0Ev,_ZTvn764_n28_N7S7830C1D0Ev),
  ABISELECT(-1440,-956),
  ABISELECT(-1440,-956),
  ABISELECT(-1224,-812),
  ABISELECT(-1440,-956),
  ABISELECT(-1440,-956),
  (VTBL_ENTRY)&(_ZTI7S7830C1[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C1D1Ev,_ZTv0_n24_N7S7830C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C1D0Ev,_ZTv0_n24_N7S7830C1D0Ev),
  ABISELECT(-1448,-960),
  0,
  ABISELECT(-1232,-816),
  ABISELECT(-1448,-960),
  (VTBL_ENTRY)&(_ZTI7S7830C1[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7830C1D1Ev,_ZTv0_n20_N7S7830C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7830C1D0Ev,_ZTv0_n20_N7S7830C1D0Ev),
  ABISELECT(-1536,-1004),
  (VTBL_ENTRY)&(_ZTI7S7830C1[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern VTBL_ENTRY _ZTV7S7830C1[];
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C2D1Ev,_ZTv0_n24_N7S7830C2D1Ev)();
extern void _ZN7S7830C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C2D0Ev,_ZTv0_n24_N7S7830C2D0Ev)();
extern void _ZN7S7830C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7830C2__7S7830C1[] = {
  ABISELECT(1448,960),
  ABISELECT(1440,956),
  ABISELECT(1432,952),
  ABISELECT(256,184),
  0,
  ABISELECT(56,28),
  0,
  ABISELECT(184,112),
  0,
  0,
  ABISELECT(216,144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C2D1Ev,_ZTv0_n24_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C2D0Ev,_ZTv0_n24_N7S7830C2D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n96_N7S7830C2D1Ev,_ZTv0_n48_N7S7830C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7830C2D1Ev,_ZThn28_N7S7830C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7830C2D0Ev,_ZTv0_n48_N7S7830C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7830C2D0Ev,_ZThn28_N7S7830C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7830C3__7S7830C2__7S7830C1[] = {
  ABISELECT(-56,-28),
  0,
  ABISELECT(1384,928),
  ABISELECT(-56,-28),
  ABISELECT(128,84),
  ABISELECT(-56,-28),
  ABISELECT(1376,924),
  ABISELECT(200,156),
  ABISELECT(-56,-28),
  ABISELECT(160,116),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7830C2D1Ev,_ZTv0_n48_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7830C2D0Ev,_ZTv0_n48_N7S7830C2D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N7S7830C2D1Ev,_ZTv0_n28_N7S7830C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S7830C2D1Ev,_ZThn184_N7S7830C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7830C2D0Ev,_ZTv0_n28_N7S7830C2D0Ev)();
extern void ABISELECT(_ZThn256_N7S7830C2D0Ev,_ZThn184_N7S7830C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7830C12__7S7830C2__7S7830C1[] = {
  ABISELECT(-256,-184),
  -40,
  ABISELECT(1176,768),
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7830C2D1Ev,_ZTv0_n28_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7830C2D0Ev,_ZTv0_n28_N7S7830C2D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S7830C2D1Ev,_ZTvn760_n28_N7S7830C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S7830C2D0Ev,_ZTvn760_n28_N7S7830C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C12__A1__7S7830C2__7S7830C1[] = {
  ABISELECT(-1416,-944),
  ABISELECT(-1200,-800),
  ABISELECT(-1416,-944),
  ABISELECT(-1416,-944),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7830C2D1Ev,_ZTvn760_n28_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7830C2D0Ev,_ZTvn760_n28_N7S7830C2D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S7830C2D1Ev,_ZTvn764_n28_N7S7830C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S7830C2D0Ev,_ZTvn764_n28_N7S7830C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7830C148S7830C12__7S7830C2__7S7830C1[] = {
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  ABISELECT(-1424,-948),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7830C2D1Ev,_ZTvn764_n28_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7830C2D0Ev,_ZTvn764_n28_N7S7830C2D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C2D1Ev,_ZTv0_n24_N7S7830C2D1Ev)();
extern void ABISELECT(_ZThn1440_N7S7830C2D1Ev,_ZThn956_N7S7830C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C2D0Ev,_ZTv0_n24_N7S7830C2D0Ev)();
extern void ABISELECT(_ZThn1440_N7S7830C2D0Ev,_ZThn956_N7S7830C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7830C14__A1__7S7830C2__7S7830C1[] = {
  ABISELECT(-1440,-956),
  ABISELECT(-1440,-956),
  ABISELECT(-1224,-812),
  ABISELECT(-1440,-956),
  ABISELECT(-1440,-956),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C2D1Ev,_ZTv0_n24_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C2D0Ev,_ZTv0_n24_N7S7830C2D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N7S7830C2D1Ev,_ZTv0_n20_N7S7830C2D1Ev)();
extern void ABISELECT(_ZThn1448_N7S7830C2D1Ev,_ZThn960_N7S7830C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7830C2D0Ev,_ZTv0_n20_N7S7830C2D0Ev)();
extern void ABISELECT(_ZThn1448_N7S7830C2D0Ev,_ZThn960_N7S7830C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7830C15__7S7830C2__7S7830C1[] = {
  ABISELECT(-1448,-960),
  0,
  ABISELECT(-1232,-816),
  ABISELECT(-1448,-960),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7830C2D1Ev,_ZTv0_n20_N7S7830C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7830C2D0Ev,_ZTv0_n20_N7S7830C2D0Ev),
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C88S7830C168S7830C15__A3__7S7830C2__7S7830C1[] = {
  ABISELECT(-1536,-1004),
  (VTBL_ENTRY)&(_ZTI7S7830C2[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C3D1Ev();
extern void _ZN7S7830C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C3__7S7830C1[] = {
  ABISELECT(1384,928),
  ABISELECT(-56,-28),
  ABISELECT(128,84),
  ABISELECT(-56,-28),
  ABISELECT(1376,924),
  ABISELECT(200,156),
  ABISELECT(-56,-28),
  ABISELECT(160,116),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C3D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C10D1Ev();
extern void _ZN8S7830C10D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C107S7830C3__7S7830C1[] = {
  ABISELECT(1376,924),
  ABISELECT(200,156),
  ABISELECT(-56,-28),
  ABISELECT(160,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C10D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C10D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C118S7830C107S7830C3__7S7830C1[] = {
  ABISELECT(160,116),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C11[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C107S7830C3__7S7830C1[] = {
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S7830C10D1Ev,_ZTv0_n28_N8S7830C10D1Ev)();
extern void ABISELECT(_ZThn200_N8S7830C10D1Ev,_ZThn156_N8S7830C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S7830C10D0Ev,_ZTv0_n28_N8S7830C10D0Ev)();
extern void ABISELECT(_ZThn200_N8S7830C10D0Ev,_ZThn156_N8S7830C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7830C12__8S7830C107S7830C3__7S7830C1[] = {
  ABISELECT(-200,-156),
  -40,
  ABISELECT(1176,768),
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  ABISELECT(-200,-156),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7830C10D1Ev,_ZTv0_n28_N8S7830C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S7830C10D0Ev,_ZTv0_n28_N8S7830C10D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S7830C10D1Ev,_ZTvn760_n28_N8S7830C10D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S7830C10D0Ev,_ZTvn760_n28_N8S7830C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C12__8S7830C107S7830C3__7S7830C1[] = {
  ABISELECT(-1416,-944),
  ABISELECT(-1200,-800),
  ABISELECT(-1416,-944),
  ABISELECT(-1360,-916),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S7830C10D1Ev,_ZTvn760_n28_N8S7830C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S7830C10D0Ev,_ZTvn760_n28_N8S7830C10D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S7830C10D1Ev,_ZTvn764_n28_N8S7830C10D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S7830C10D0Ev,_ZTvn764_n28_N8S7830C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7830C148S7830C12__8S7830C107S7830C3__7S7830C1[] = {
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  ABISELECT(-1368,-920),
  (VTBL_ENTRY)&(_ZTI8S7830C10[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S7830C10D1Ev,_ZTvn764_n28_N8S7830C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S7830C10D0Ev,_ZTvn764_n28_N8S7830C10D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev)();
extern void ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7830C4__7S7830C3__7S7830C1[] = {
  0,
  ABISELECT(184,112),
  ABISELECT(56,28),
  0,
  ABISELECT(216,144),
  0,
  ABISELECT(56,28),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N7S7830C3D1Ev,_ZTv0_n28_N7S7830C3D1Ev)();
extern void ABISELECT(_ZThn200_N7S7830C3D1Ev,_ZThn156_N7S7830C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N7S7830C3D0Ev,_ZTv0_n28_N7S7830C3D0Ev)();
extern void ABISELECT(_ZThn200_N7S7830C3D0Ev,_ZThn156_N7S7830C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7830C12__7S7830C3__7S7830C1[] = {
  ABISELECT(-200,-156),
  -40,
  ABISELECT(1176,768),
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  ABISELECT(-200,-156),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7830C3D1Ev,_ZTv0_n28_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N7S7830C3D0Ev,_ZTv0_n28_N7S7830C3D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N7S7830C3D1Ev,_ZTvn760_n28_N7S7830C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N7S7830C3D0Ev,_ZTvn760_n28_N7S7830C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C12__A1__7S7830C3__7S7830C1[] = {
  ABISELECT(-1416,-944),
  ABISELECT(-1200,-800),
  ABISELECT(-1416,-944),
  ABISELECT(-1360,-916),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7830C3D1Ev,_ZTvn760_n28_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N7S7830C3D0Ev,_ZTvn760_n28_N7S7830C3D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N7S7830C3D1Ev,_ZTvn764_n28_N7S7830C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N7S7830C3D0Ev,_ZTvn764_n28_N7S7830C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7830C148S7830C12__7S7830C3__7S7830C1[] = {
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  ABISELECT(-1368,-920),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7830C3D1Ev,_ZTvn764_n28_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N7S7830C3D0Ev,_ZTvn764_n28_N7S7830C3D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev)();
extern void ABISELECT(_ZThn1384_N7S7830C3D1Ev,_ZThn928_N7S7830C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev)();
extern void ABISELECT(_ZThn1384_N7S7830C3D0Ev,_ZThn928_N7S7830C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S7830C14__A1__7S7830C3__7S7830C1[] = {
  ABISELECT(-1384,-928),
  ABISELECT(-1440,-956),
  ABISELECT(-1224,-812),
  ABISELECT(-1440,-956),
  ABISELECT(-1384,-928),
  (VTBL_ENTRY)&(_ZTI7S7830C3[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7830C4D1Ev,_ZTv0_n24_N7S7830C4D1Ev)();
extern void _ZN7S7830C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7830C4D0Ev,_ZTv0_n24_N7S7830C4D0Ev)();
extern void _ZN7S7830C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7830C4__7S7830C1[] = {
  0,
  ABISELECT(184,112),
  0,
  0,
  ABISELECT(216,144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C4[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C4D1Ev,_ZTv0_n24_N7S7830C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7830C4D0Ev,_ZTv0_n24_N7S7830C4D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C6__7S7830C1[] = {
  0,
  ABISELECT(216,144),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C12D1Ev();
extern void _ZN8S7830C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C12__7S7830C1[] = {
  -40,
  ABISELECT(1176,768),
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C12D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C12D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C138S7830C12__7S7830C1[] = {
  ABISELECT(-256,-184),
  ABISELECT(-256,-184),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C13[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C138S7830C12__7S7830C1[] = {
  0,
  ABISELECT(256,184),
  (VTBL_ENTRY)&(_ZTI8S7830C13[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C12__A1__7S7830C1[] = {
  ABISELECT(-1416,-944),
  ABISELECT(-1200,-800),
  ABISELECT(-1416,-944),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C68S7830C12__A1__7S7830C1[] = {
  0,
  ABISELECT(1416,944),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C14D1Ev();
extern void _ZN8S7830C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C148S7830C12__7S7830C1[] = {
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C148S7830C12__A2__7S7830C1[] = {
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C68S7830C148S7830C12__A2__7S7830C1[] = {
  0,
  ABISELECT(1424,948),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C148S7830C12__7S7830C1[] = {
  0,
  ABISELECT(1424,948),
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C12__7S7830C1[] = {
  0,
  ABISELECT(256,184),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZThn1160_N8S7830C12D1Ev,_ZThn760_N8S7830C12D1Ev)();
extern void ABISELECT(_ZThn1160_N8S7830C12D0Ev,_ZThn760_N8S7830C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S7830C6__8S7830C12__7S7830C1[] = {
  ABISELECT(-1416,-944),
  ABISELECT(-1200,-800),
  ABISELECT(-1416,-944),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7830C12D1Ev,_ZThn760_N8S7830C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S7830C12D0Ev,_ZThn760_N8S7830C12D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void ABISELECT(_ZThn1168_N8S7830C12D1Ev,_ZThn764_N8S7830C12D1Ev)();
extern void ABISELECT(_ZThn1168_N8S7830C12D0Ev,_ZThn764_N8S7830C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S7830C14__8S7830C12__7S7830C1[] = {
  ABISELECT(-1424,-948),
  ABISELECT(-1208,-804),
  ABISELECT(-1424,-948),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S7830C12[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7830C12D1Ev,_ZThn764_N8S7830C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S7830C12D0Ev,_ZThn764_N8S7830C12D0Ev),
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C14D1Ev();
extern void _ZN8S7830C14D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C14__A1__7S7830C1[] = {
  ABISELECT(-1440,-956),
  ABISELECT(-1224,-812),
  ABISELECT(-1440,-956),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C14D0Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN7S7830C6D1Ev();
extern void _ZN7S7830C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C68S7830C14__A3__7S7830C1[] = {
  ABISELECT(-1440,-956),
  ABISELECT(-1224,-812),
  ABISELECT(-1440,-956),
  0,
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7830C6D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__7S7830C68S7830C14__A3__7S7830C1[] = {
  0,
  ABISELECT(1440,956),
  (VTBL_ENTRY)&(_ZTI7S7830C6[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7830C8__8S7830C14__A1__7S7830C1[] = {
  0,
  ABISELECT(1440,956),
  (VTBL_ENTRY)&(_ZTI8S7830C14[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
extern void _ZN7S7830C82v1Ev();
extern void _ZN8S7830C15D1Ev();
extern void _ZN8S7830C15D0Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C15__7S7830C1[] = {
  ABISELECT(-1232,-816),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C15[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
  (VTBL_ENTRY)&_ZN8S7830C15D1Ev,
  (VTBL_ENTRY)&_ZN8S7830C15D0Ev,
};
extern void _ZN7S7830C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S7830C118S7830C15__A1__7S7830C1[] = {
  ABISELECT(-1232,-816),
  0,
  (VTBL_ENTRY)&(_ZTI8S7830C11[0]),
  (VTBL_ENTRY)&_ZN7S7830C82v1Ev,
};
static  VTT_ENTRY vtt_S7830C1[] = {
  {&(_ZTV7S7830C1[14]),  14,78},
  {&(_tg__ZTV7S7830C2__7S7830C1[14]),  14,17},
  {&(_tg__ZTV7S7830C3__7S7830C2__7S7830C1[12]),  12,15},
  {&(_tg__ZTV7S7830C2__7S7830C1[14]),  14,17},
  {&(_tg__ZTV7S7830C2__7S7830C1[14]),  14,17},
  {&(_tg__ZTV7S7830C2__7S7830C1[14]),  14,17},
  {&(_tg__ZTV8S7830C12__7S7830C2__7S7830C1[7]),  7,10},
  {&(_tg__ZTV7S7830C68S7830C12__A1__7S7830C2__7S7830C1[5]),  5,8},
  {&(_tg__ZTV8S7830C148S7830C12__7S7830C2__7S7830C1[5]),  5,8},
  {&(_tg__ZTV8S7830C14__A1__7S7830C2__7S7830C1[6]),  6,9},
  {&(_tg__ZTV8S7830C15__7S7830C2__7S7830C1[5]),  5,8},
  {&(_tg__ZTV7S7830C88S7830C168S7830C15__A3__7S7830C2__7S7830C1[2]),  2,3},
  {&(_ZTV7S7830C1[29]),  29,78},
  {&(_ZTV7S7830C1[14]),  14,78},
  {&(_ZTV7S7830C1[14]),  14,78},
  {&(_ZTV7S7830C1[14]),  14,78},
  {&(_ZTV7S7830C1[39]),  39,78},
  {&(_ZTV7S7830C1[47]),  47,78},
  {&(_ZTV7S7830C1[55]),  55,78},
  {&(_ZTV7S7830C1[64]),  64,78},
  {&(_ZTV7S7830C1[72]),  72,78},
  {&(_ZTV7S7830C1[77]),  77,78},
  {&(_tg__ZTV7S7830C3__7S7830C1[10]),  10,13},
  {&(_tg__ZTV8S7830C107S7830C3__7S7830C1[6]),  6,9},
  {&(_tg__ZTV8S7830C118S7830C107S7830C3__7S7830C1[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C107S7830C3__7S7830C1[3]),  3,4},
  {&(_tg__ZTV8S7830C12__8S7830C107S7830C3__7S7830C1[7]),  7,10},
  {&(_tg__ZTV7S7830C68S7830C12__8S7830C107S7830C3__7S7830C1[5]),  5,8},
  {&(_tg__ZTV8S7830C148S7830C12__8S7830C107S7830C3__7S7830C1[5]),  5,8},
  {&(_tg__ZTV7S7830C4__7S7830C3__7S7830C1[8]),  8,11},
  {&(_tg__ZTV7S7830C4__7S7830C3__7S7830C1[8]),  8,11},
  {&(_tg__ZTV7S7830C4__7S7830C3__7S7830C1[8]),  8,11},
  {&(_tg__ZTV8S7830C12__7S7830C3__7S7830C1[7]),  7,10},
  {&(_tg__ZTV7S7830C68S7830C12__A1__7S7830C3__7S7830C1[5]),  5,8},
  {&(_tg__ZTV8S7830C148S7830C12__7S7830C3__7S7830C1[5]),  5,8},
  {&(_tg__ZTV8S7830C14__A1__7S7830C3__7S7830C1[6]),  6,9},
  {&(_tg__ZTV7S7830C4__7S7830C1[8]),  8,11},
  {&(_tg__ZTV7S7830C4__7S7830C1[8]),  8,11},
  {&(_tg__ZTV7S7830C4__7S7830C1[8]),  8,11},
  {&(_tg__ZTV7S7830C6__7S7830C1[5]),  5,8},
  {&(_tg__ZTV7S7830C6__7S7830C1[5]),  5,8},
  {&(_tg__ZTV8S7830C12__7S7830C1[6]),  6,9},
  {&(_tg__ZTV8S7830C138S7830C12__7S7830C1[4]),  4,5},
  {&(_tg__ZTV7S7830C8__8S7830C138S7830C12__7S7830C1[3]),  3,4},
  {&(_tg__ZTV7S7830C68S7830C12__A1__7S7830C1[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C68S7830C12__A1__7S7830C1[3]),  3,4},
  {&(_tg__ZTV8S7830C148S7830C12__7S7830C1[5]),  5,8},
  {&(_tg__ZTV7S7830C68S7830C148S7830C12__A2__7S7830C1[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C68S7830C148S7830C12__A2__7S7830C1[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C148S7830C12__7S7830C1[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C12__7S7830C1[3]),  3,4},
  {&(_tg__ZTV7S7830C6__8S7830C12__7S7830C1[5]),  5,8},
  {&(_tg__ZTV8S7830C14__8S7830C12__7S7830C1[5]),  5,8},
  {&(_tg__ZTV8S7830C14__A1__7S7830C1[5]),  5,8},
  {&(_tg__ZTV7S7830C68S7830C14__A3__7S7830C1[5]),  5,8},
  {&(_tg__ZTV7S7830C8__7S7830C68S7830C14__A3__7S7830C1[3]),  3,4},
  {&(_tg__ZTV7S7830C8__8S7830C14__A1__7S7830C1[3]),  3,4},
  {&(_tg__ZTV8S7830C15__7S7830C1[3]),  3,6},
  {&(_tg__ZTV8S7830C118S7830C15__A1__7S7830C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7830C1[];
extern  VTBL_ENTRY _ZTV7S7830C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7830C1[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C4D0Ev,_ZTv0_n24_N7S7830C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S7830C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C4D1Ev,_ZTv0_n24_N7S7830C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S7830C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C3D0Ev,_ZTv0_n24_N7S7830C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1384_N7S7830C3D0Ev,_ZThn928_N7S7830C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C3D1Ev,_ZTv0_n24_N7S7830C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1384_N7S7830C3D1Ev,_ZThn928_N7S7830C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7830C3D0Ev,_ZTv0_n28_N7S7830C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7830C3D0Ev,_ZThn156_N7S7830C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7830C3D1Ev,_ZTv0_n28_N7S7830C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7830C3D1Ev,_ZThn156_N7S7830C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7830C10D0Ev,_ZTv0_n28_N8S7830C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7830C10D0Ev,_ZThn156_N8S7830C10D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S7830C10D1Ev,_ZTv0_n28_N8S7830C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S7830C10D1Ev,_ZThn156_N8S7830C10D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7830C2D0Ev,_ZTv0_n20_N7S7830C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N7S7830C2D0Ev,_ZThn960_N7S7830C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7830C2D1Ev,_ZTv0_n20_N7S7830C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N7S7830C2D1Ev,_ZThn960_N7S7830C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7830C2D0Ev,_ZTv0_n28_N7S7830C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7830C2D0Ev,_ZThn184_N7S7830C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7830C2D1Ev,_ZTv0_n28_N7S7830C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7830C2D1Ev,_ZThn184_N7S7830C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7830C2D0Ev,_ZTv0_n48_N7S7830C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7830C2D0Ev,_ZThn28_N7S7830C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7830C2D1Ev,_ZTv0_n48_N7S7830C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7830C2D1Ev,_ZThn28_N7S7830C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C2D0Ev,_ZTv0_n24_N7S7830C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N7S7830C2D0Ev,_ZThn956_N7S7830C2D0Ev),
  (VTBL_ENTRY)_ZN7S7830C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C2D1Ev,_ZTv0_n24_N7S7830C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N7S7830C2D1Ev,_ZThn956_N7S7830C2D1Ev),
  (VTBL_ENTRY)_ZN7S7830C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7830C1D0Ev,_ZTv0_n20_N7S7830C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N7S7830C1D0Ev,_ZThn960_N7S7830C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7830C1D1Ev,_ZTv0_n20_N7S7830C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1448_N7S7830C1D1Ev,_ZThn960_N7S7830C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7830C1D0Ev,_ZTv0_n28_N7S7830C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7830C1D0Ev,_ZThn184_N7S7830C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N7S7830C1D1Ev,_ZTv0_n28_N7S7830C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7830C1D1Ev,_ZThn184_N7S7830C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7830C1D0Ev,_ZTv0_n48_N7S7830C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7830C1D0Ev,_ZThn28_N7S7830C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7830C1D1Ev,_ZTv0_n48_N7S7830C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7830C1D1Ev,_ZThn28_N7S7830C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C1D0Ev,_ZTv0_n24_N7S7830C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N7S7830C1D0Ev,_ZThn956_N7S7830C1D0Ev),
  (VTBL_ENTRY)_ZN7S7830C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7830C1D1Ev,_ZTv0_n24_N7S7830C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1440_N7S7830C1D1Ev,_ZThn956_N7S7830C1D1Ev),
  (VTBL_ENTRY)_ZN7S7830C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7830C1 = {  "S7830C1", // class name
  bases_S7830C1, 31,
  &(vtc_S7830C1[0]), // expected_vtbl_contents
  &(vtt_S7830C1[0]), // expected_vtt_contents
  ABISELECT(1584,1048), // object size
  NSPAIRA(_ZTI7S7830C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7830C1),78, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7830C1),59, //virtual table table var
  20, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7873C2  : virtual S3577C4_nt {
  int s7873c2f0[2];
  unsigned int s7873c2f1:1;
  unsigned int s7873c2f2:1;
  ::S9141C28_nt s7873c2f3;
  ::S9142C8_nt s7873c2f4;
  virtual  ~S7873C2(); // _ZN7S7873C2D2Ev
  virtual void  v5(); // _ZN7S7873C22v5Ev
  virtual void  v6(); // _ZN7S7873C22v6Ev
  virtual void  v7(); // _ZN7S7873C22v7Ev
  virtual void  v8(); // _ZN7S7873C22v8Ev
  virtual void  v9(); // _ZN7S7873C22v9Ev
  virtual void  v10(); // _ZN7S7873C23v10Ev
  virtual void  v11(); // _ZN7S7873C23v11Ev
  S7873C2(); // tgen
};
//SIG(-1 S7873C2) C1{ VBC2{ vd m Fi} vd v1 v2 v3 v4 v5 v6 v7 Fi[2] Fi:1 Fi:1 FC3{ BC4{ m Fp Fi[2]}} FC5{ m FC6{ m Fi[3]} FC6 Fc}}


 S7873C2 ::~S7873C2(){ note_dtor("S7873C2", this);}
void  S7873C2 ::v5(){vfunc_called(this, "_ZN7S7873C22v5Ev");}
void  S7873C2 ::v6(){vfunc_called(this, "_ZN7S7873C22v6Ev");}
void  S7873C2 ::v7(){vfunc_called(this, "_ZN7S7873C22v7Ev");}
void  S7873C2 ::v8(){vfunc_called(this, "_ZN7S7873C22v8Ev");}
void  S7873C2 ::v9(){vfunc_called(this, "_ZN7S7873C22v9Ev");}
void  S7873C2 ::v10(){vfunc_called(this, "_ZN7S7873C23v10Ev");}
void  S7873C2 ::v11(){vfunc_called(this, "_ZN7S7873C23v11Ev");}
S7873C2 ::S7873C2(){ note_ctor("S7873C2", this);} // tgen

static void Test_S7873C2()
{
  extern Class_Descriptor cd_S7873C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S7873C2, buf);
    S7873C2 *dp, &lv = *(dp=new (buf) S7873C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S7873C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7873C2)");
    check_base_class_offset(lv, (S3577C4_nt*), ABISELECT(72,56), "S7873C2");
    check_field_offset(lv, s7873c2f0, ABISELECT(8,4), "S7873C2.s7873c2f0");
    set_bf_and_test(lv, s7873c2f1, ABISELECT(16,12), 0, 1, 1, "S7873C2");
    set_bf_and_test(lv, s7873c2f2, ABISELECT(16,12), 1, 1, 1, "S7873C2");
    check_field_offset(lv, s7873c2f3, ABISELECT(24,16), "S7873C2.s7873c2f3");
    check_field_offset(lv, s7873c2f4, ABISELECT(40,28), "S7873C2.s7873c2f4");
    test_class_info(&lv, &cd_S7873C2);
    dp->~S7873C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7873C2(Test_S7873C2, "S7873C2", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN7S7873C2C1Ev();
extern void _ZN7S7873C2D2Ev();
Name_Map name_map_S7873C2[] = {
  NSPAIR(_ZN7S7873C2C1Ev),
  NSPAIR(_ZN7S7873C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S7873C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(72,56), //bcp->offset
    12, //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 _ZTI7S7873C2[];
extern void _ZN7S7873C2D1Ev();
extern void _ZN7S7873C2D0Ev();
extern void _ZN7S7873C22v5Ev();
extern void _ZN7S7873C22v6Ev();
extern void _ZN7S7873C22v7Ev();
extern void _ZN7S7873C22v8Ev();
extern void _ZN7S7873C22v9Ev();
extern void _ZN7S7873C23v10Ev();
extern void _ZN7S7873C23v11Ev();
extern void ABISELECT(_ZTv0_n24_N7S7873C2D1Ev,_ZTv0_n12_N7S7873C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7873C2D1Ev,_ZThn56_N7S7873C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7873C2D0Ev,_ZTv0_n12_N7S7873C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7873C2D0Ev,_ZThn56_N7S7873C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7873C2[] = {
  ABISELECT(72,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7873C2[0]),
  (VTBL_ENTRY)&_ZN7S7873C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7873C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7873C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7873C23v11Ev,
  ABISELECT(-72,-56),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S7873C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C2D1Ev,_ZTv0_n12_N7S7873C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C2D0Ev,_ZTv0_n12_N7S7873C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7873C2[];
static  VTT_ENTRY vtt_S7873C2[] = {
  {&(_ZTV7S7873C2[3]),  3,17},
  {&(_ZTV7S7873C2[15]),  15,17},
};
extern VTBL_ENTRY _ZTI7S7873C2[];
extern  VTBL_ENTRY _ZTV7S7873C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7873C2[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C2D0Ev,_ZTv0_n12_N7S7873C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7873C2D0Ev,_ZThn56_N7S7873C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C2D1Ev,_ZTv0_n12_N7S7873C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7873C2D1Ev,_ZThn56_N7S7873C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7873C2 = {  "S7873C2", // class name
  bases_S7873C2, 1,
  &(vtc_S7873C2[0]), // expected_vtbl_contents
  &(vtt_S7873C2[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI7S7873C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7873C2),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7873C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7873C9  : virtual S3577C4_nt {
  void *s7873c9f0[2];
  unsigned int s7873c9f1:1;
  virtual  ~S7873C9(); // _ZN7S7873C9D2Ev
  virtual void  v12(); // _ZN7S7873C93v12Ev
  virtual void  v13(); // _ZN7S7873C93v13Ev
  S7873C9(); // tgen
};
//SIG(-1 S7873C9) C1{ VBC2{ vd m Fi} vd v1 v2 Fp[2] Fi:1}


 S7873C9 ::~S7873C9(){ note_dtor("S7873C9", this);}
void  S7873C9 ::v12(){vfunc_called(this, "_ZN7S7873C93v12Ev");}
void  S7873C9 ::v13(){vfunc_called(this, "_ZN7S7873C93v13Ev");}
S7873C9 ::S7873C9(){ note_ctor("S7873C9", this);} // tgen

static void Test_S7873C9()
{
  extern Class_Descriptor cd_S7873C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S7873C9, buf);
    S7873C9 *dp, &lv = *(dp=new (buf) S7873C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S7873C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7873C9)");
    check_base_class_offset(lv, (S3577C4_nt*), ABISELECT(32,16), "S7873C9");
    check_field_offset(lv, s7873c9f0, ABISELECT(8,4), "S7873C9.s7873c9f0");
    set_bf_and_test(lv, s7873c9f1, ABISELECT(24,12), 0, 1, 1, "S7873C9");
    test_class_info(&lv, &cd_S7873C9);
    dp->~S7873C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7873C9(Test_S7873C9, "S7873C9", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S7873C9C1Ev();
extern void _ZN7S7873C9D2Ev();
Name_Map name_map_S7873C9[] = {
  NSPAIR(_ZN7S7873C9C1Ev),
  NSPAIR(_ZN7S7873C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S7873C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7873C9[];
extern void _ZN7S7873C9D1Ev();
extern void _ZN7S7873C9D0Ev();
extern void _ZN7S7873C93v12Ev();
extern void _ZN7S7873C93v13Ev();
extern void ABISELECT(_ZTv0_n24_N7S7873C9D1Ev,_ZTv0_n12_N7S7873C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S7873C9D1Ev,_ZThn16_N7S7873C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7873C9D0Ev,_ZTv0_n12_N7S7873C9D0Ev)();
extern void ABISELECT(_ZThn32_N7S7873C9D0Ev,_ZThn16_N7S7873C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7873C9[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7873C9[0]),
  (VTBL_ENTRY)&_ZN7S7873C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7873C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7873C93v12Ev,
  (VTBL_ENTRY)&_ZN7S7873C93v13Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7873C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C9D1Ev,_ZTv0_n12_N7S7873C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C9D0Ev,_ZTv0_n12_N7S7873C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S7873C9[];
static  VTT_ENTRY vtt_S7873C9[] = {
  {&(_ZTV7S7873C9[3]),  3,12},
  {&(_ZTV7S7873C9[10]),  10,12},
};
extern VTBL_ENTRY _ZTI7S7873C9[];
extern  VTBL_ENTRY _ZTV7S7873C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7873C9[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C9D0Ev,_ZTv0_n12_N7S7873C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7873C9D0Ev,_ZThn16_N7S7873C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C9D1Ev,_ZTv0_n12_N7S7873C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7873C9D1Ev,_ZThn16_N7S7873C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7873C9 = {  "S7873C9", // class name
  bases_S7873C9, 1,
  &(vtc_S7873C9[0]), // expected_vtbl_contents
  &(vtt_S7873C9[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S7873C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7873C9),12, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7873C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7873C8  : S7873C9 {
  int s7873c8f0[4];
  virtual void  v14(); // _ZN7S7873C83v14Ev
  virtual void  v15(); // _ZN7S7873C83v15Ev
  ~S7873C8(); // tgen
  S7873C8(); // tgen
};
//SIG(-1 S7873C8) C1{ BC2{ VBC3{ vd m Fi} vd v3 v4 Fp[2] Fi:1} v1 v2 Fi[4]}


void  S7873C8 ::v14(){vfunc_called(this, "_ZN7S7873C83v14Ev");}
void  S7873C8 ::v15(){vfunc_called(this, "_ZN7S7873C83v15Ev");}
S7873C8 ::~S7873C8(){ note_dtor("S7873C8", this);} // tgen
S7873C8 ::S7873C8(){ note_ctor("S7873C8", this);} // tgen

static void Test_S7873C8()
{
  extern Class_Descriptor cd_S7873C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S7873C8, buf);
    S7873C8 *dp, &lv = *(dp=new (buf) S7873C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S7873C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7873C8)");
    check_base_class_offset(lv, (S3577C4_nt*)(S7873C9*), ABISELECT(48,32), "S7873C8");
    check_base_class_offset(lv, (S7873C9*), 0, "S7873C8");
    check_field_offset(lv, s7873c8f0, ABISELECT(28,16), "S7873C8.s7873c8f0");
    test_class_info(&lv, &cd_S7873C8);
    dp->~S7873C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7873C8(Test_S7873C8, "S7873C8", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S7873C8C1Ev();
extern void _ZN7S7873C8D1Ev();
Name_Map name_map_S7873C8[] = {
  NSPAIR(_ZN7S7873C8C1Ev),
  NSPAIR(_ZN7S7873C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S7873C9;
extern VTBL_ENTRY _ZTI7S7873C9[];
extern  VTBL_ENTRY _ZTV7S7873C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7873C9[];
static Base_Class bases_S7873C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(48,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7873C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7873C8[];
extern void _ZN7S7873C8D1Ev();
extern void _ZN7S7873C8D0Ev();
extern void _ZN7S7873C93v12Ev();
extern void _ZN7S7873C93v13Ev();
extern void _ZN7S7873C83v14Ev();
extern void _ZN7S7873C83v15Ev();
extern void ABISELECT(_ZTv0_n24_N7S7873C8D1Ev,_ZTv0_n12_N7S7873C8D1Ev)();
extern void ABISELECT(_ZThn48_N7S7873C8D1Ev,_ZThn32_N7S7873C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7873C8D0Ev,_ZTv0_n12_N7S7873C8D0Ev)();
extern void ABISELECT(_ZThn48_N7S7873C8D0Ev,_ZThn32_N7S7873C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7873C8[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7873C8[0]),
  (VTBL_ENTRY)&_ZN7S7873C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7873C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7873C93v12Ev,
  (VTBL_ENTRY)&_ZN7S7873C93v13Ev,
  (VTBL_ENTRY)&_ZN7S7873C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7873C83v15Ev,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7873C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C8D1Ev,_ZTv0_n12_N7S7873C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C8D0Ev,_ZTv0_n12_N7S7873C8D0Ev),
};
extern VTBL_ENTRY _ZTV7S7873C8[];
extern void _ZN7S7873C9D1Ev();
extern void _ZN7S7873C9D0Ev();
extern void _ZN7S7873C93v12Ev();
extern void _ZN7S7873C93v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7873C9__7S7873C8[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S7873C9[0]),
  (VTBL_ENTRY)&_ZN7S7873C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7873C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7873C93v12Ev,
  (VTBL_ENTRY)&_ZN7S7873C93v13Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7873C9D1Ev,_ZTv0_n12_N7S7873C9D1Ev)();
extern void ABISELECT(_ZThn48_N7S7873C9D1Ev,_ZThn32_N7S7873C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7873C9D0Ev,_ZTv0_n12_N7S7873C9D0Ev)();
extern void ABISELECT(_ZThn48_N7S7873C9D0Ev,_ZThn32_N7S7873C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S7873C9__7S7873C8[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7873C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C9D1Ev,_ZTv0_n12_N7S7873C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C9D0Ev,_ZTv0_n12_N7S7873C9D0Ev),
};
static  VTT_ENTRY vtt_S7873C8[] = {
  {&(_ZTV7S7873C8[3]),  3,14},
  {&(_tg__ZTV7S7873C9__7S7873C8[3]),  3,7},
  {&(_tg__ZTV10S3577C4_nt__7S7873C9__7S7873C8[3]),  3,5},
  {&(_ZTV7S7873C8[12]),  12,14},
};
extern VTBL_ENTRY _ZTI7S7873C8[];
extern  VTBL_ENTRY _ZTV7S7873C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7873C8[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C9D0Ev,_ZTv0_n12_N7S7873C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7873C9D0Ev,_ZThn32_N7S7873C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C9D1Ev,_ZTv0_n12_N7S7873C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7873C9D1Ev,_ZThn32_N7S7873C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C8D0Ev,_ZTv0_n12_N7S7873C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7873C8D0Ev,_ZThn32_N7S7873C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C8D1Ev,_ZTv0_n12_N7S7873C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7873C8D1Ev,_ZThn32_N7S7873C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7873C8 = {  "S7873C8", // class name
  bases_S7873C8, 2,
  &(vtc_S7873C8[0]), // expected_vtbl_contents
  &(vtt_S7873C8[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S7873C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7873C8),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7873C8),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7873C1  : S7873C2 , S7873C8 {
  void *s7873c1f0[2];
  ::S4227C37 s7873c1f1;
  int s7873c1f2[4];
  ::S5327C13_nt s7873c1f3;
  virtual void  v1(); // _ZN7S7873C12v1Ev
  virtual void  v2(); // _ZN7S7873C12v2Ev
  virtual void  v3(); // _ZN7S7873C12v3Ev
  virtual void  v4(); // _ZN7S7873C12v4Ev
  ~S7873C1(); // tgen
  S7873C1(); // tgen
};
//SIG(1 S7873C1) C1{ BC2{ VBC3{ vd m Fi} vd v5 v6 v7 v8 v9 v10 v11 Fi[2] Fi:1 Fi:1 FC4{ BC5{ m Fp Fi[2]}} FC6{ m FC7{ m Fi[3]} FC7 Fc}} BC8{ BC9{ VBC3 vd v12 v13 Fp[2] Fi:1} v14 v15 Fi[4]} v1 v2 v3 v4 Fp[2] FC10{ m} Fi[4] FC11{ BC5}}


void  S7873C1 ::v1(){vfunc_called(this, "_ZN7S7873C12v1Ev");}
void  S7873C1 ::v2(){vfunc_called(this, "_ZN7S7873C12v2Ev");}
void  S7873C1 ::v3(){vfunc_called(this, "_ZN7S7873C12v3Ev");}
void  S7873C1 ::v4(){vfunc_called(this, "_ZN7S7873C12v4Ev");}
S7873C1 ::~S7873C1(){ note_dtor("S7873C1", this);} // tgen
S7873C1 ::S7873C1(){ note_ctor("S7873C1", this);} // tgen

static void Test_S7873C1()
{
  extern Class_Descriptor cd_S7873C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,35)];
    init_test(&cd_S7873C1, buf);
    S7873C1 *dp, &lv = *(dp=new (buf) S7873C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,136), "sizeof(S7873C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7873C1)");
    check_base_class_offset(lv, (S3577C4_nt*)(S7873C2*), ABISELECT(176,128), "S7873C1");
    check_base_class_offset(lv, (S3577C4_nt*)(S7873C9*)(S7873C8*), ABISELECT(176,128), "S7873C1");
    check_base_class_offset(lv, (S7873C2*), 0, "S7873C1");
    check_base_class_offset(lv, (S7873C9*)(S7873C8*), ABISELECT(72,56), "S7873C1");
    check_base_class_offset(lv, (S7873C8*), ABISELECT(72,56), "S7873C1");
    check_field_offset(lv, s7873c1f0, ABISELECT(120,88), "S7873C1.s7873c1f0");
    check_field_offset(lv, s7873c1f1, ABISELECT(136,96), "S7873C1.s7873c1f1");
    check_field_offset(lv, s7873c1f2, ABISELECT(140,100), "S7873C1.s7873c1f2");
    check_field_offset(lv, s7873c1f3, ABISELECT(160,116), "S7873C1.s7873c1f3");
    test_class_info(&lv, &cd_S7873C1);
    dp->~S7873C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7873C1(Test_S7873C1, "S7873C1", ABISELECT(192,136));

#else // __cplusplus

extern void _ZN7S7873C1C1Ev();
extern void _ZN7S7873C1D1Ev();
Name_Map name_map_S7873C1[] = {
  NSPAIR(_ZN7S7873C1C1Ev),
  NSPAIR(_ZN7S7873C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S7873C2;
extern VTBL_ENTRY _ZTI7S7873C2[];
extern  VTBL_ENTRY _ZTV7S7873C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7873C2[];
extern Class_Descriptor cd_S7873C9;
extern VTBL_ENTRY _ZTI7S7873C9[];
extern  VTBL_ENTRY _ZTV7S7873C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7873C9[];
extern Class_Descriptor cd_S7873C8;
extern VTBL_ENTRY _ZTI7S7873C8[];
extern  VTBL_ENTRY _ZTV7S7873C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7873C8[];
static Base_Class bases_S7873C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(176,128), //bcp->offset
    25, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7873C2,    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_S7873C9,    ABISELECT(72,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7873C8,    ABISELECT(72,56), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7873C1[];
extern void _ZN7S7873C1D1Ev();
extern void _ZN7S7873C1D0Ev();
extern void _ZN7S7873C22v5Ev();
extern void _ZN7S7873C22v6Ev();
extern void _ZN7S7873C22v7Ev();
extern void _ZN7S7873C22v8Ev();
extern void _ZN7S7873C22v9Ev();
extern void _ZN7S7873C23v10Ev();
extern void _ZN7S7873C23v11Ev();
extern void _ZN7S7873C12v1Ev();
extern void _ZN7S7873C12v2Ev();
extern void _ZN7S7873C12v3Ev();
extern void _ZN7S7873C12v4Ev();
extern void ABISELECT(_ZThn72_N7S7873C1D1Ev,_ZThn56_N7S7873C1D1Ev)();
extern void ABISELECT(_ZThn72_N7S7873C1D0Ev,_ZThn56_N7S7873C1D0Ev)();
extern void _ZN7S7873C93v12Ev();
extern void _ZN7S7873C93v13Ev();
extern void _ZN7S7873C83v14Ev();
extern void _ZN7S7873C83v15Ev();
extern void ABISELECT(_ZTv0_n24_N7S7873C1D1Ev,_ZTv0_n12_N7S7873C1D1Ev)();
extern void ABISELECT(_ZThn176_N7S7873C1D1Ev,_ZThn128_N7S7873C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7873C1D0Ev,_ZTv0_n12_N7S7873C1D0Ev)();
extern void ABISELECT(_ZThn176_N7S7873C1D0Ev,_ZThn128_N7S7873C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7873C1[] = {
  ABISELECT(176,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7873C1[0]),
  (VTBL_ENTRY)&_ZN7S7873C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7873C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7873C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7873C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7873C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7873C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7873C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7873C12v4Ev,
  ABISELECT(104,72),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S7873C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S7873C1D1Ev,_ZThn56_N7S7873C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S7873C1D0Ev,_ZThn56_N7S7873C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7873C93v12Ev,
  (VTBL_ENTRY)&_ZN7S7873C93v13Ev,
  (VTBL_ENTRY)&_ZN7S7873C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7873C83v15Ev,
  ABISELECT(-176,-128),
  ABISELECT(-176,-128),
  (VTBL_ENTRY)&(_ZTI7S7873C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C1D1Ev,_ZTv0_n12_N7S7873C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C1D0Ev,_ZTv0_n12_N7S7873C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7873C1[];
extern void _ZN7S7873C2D1Ev();
extern void _ZN7S7873C2D0Ev();
extern void _ZN7S7873C22v5Ev();
extern void _ZN7S7873C22v6Ev();
extern void _ZN7S7873C22v7Ev();
extern void _ZN7S7873C22v8Ev();
extern void _ZN7S7873C22v9Ev();
extern void _ZN7S7873C23v10Ev();
extern void _ZN7S7873C23v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7873C2__7S7873C1[] = {
  ABISELECT(176,128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7873C2[0]),
  (VTBL_ENTRY)&_ZN7S7873C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7873C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v5Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7873C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7873C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7873C23v11Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7873C2D1Ev,_ZTv0_n12_N7S7873C2D1Ev)();
extern void ABISELECT(_ZThn176_N7S7873C2D1Ev,_ZThn128_N7S7873C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7873C2D0Ev,_ZTv0_n12_N7S7873C2D0Ev)();
extern void ABISELECT(_ZThn176_N7S7873C2D0Ev,_ZThn128_N7S7873C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S7873C2__7S7873C1[] = {
  ABISELECT(-176,-128),
  ABISELECT(-176,-128),
  (VTBL_ENTRY)&(_ZTI7S7873C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C2D1Ev,_ZTv0_n12_N7S7873C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C2D0Ev,_ZTv0_n12_N7S7873C2D0Ev),
};
extern void _ZN7S7873C8D1Ev();
extern void _ZN7S7873C8D0Ev();
extern void _ZN7S7873C93v12Ev();
extern void _ZN7S7873C93v13Ev();
extern void _ZN7S7873C83v14Ev();
extern void _ZN7S7873C83v15Ev();
static  VTBL_ENTRY _tg__ZTV7S7873C8__7S7873C1[] = {
  ABISELECT(104,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7873C8[0]),
  (VTBL_ENTRY)&_ZN7S7873C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7873C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7873C93v12Ev,
  (VTBL_ENTRY)&_ZN7S7873C93v13Ev,
  (VTBL_ENTRY)&_ZN7S7873C83v14Ev,
  (VTBL_ENTRY)&_ZN7S7873C83v15Ev,
};
extern void _ZN7S7873C9D1Ev();
extern void _ZN7S7873C9D0Ev();
extern void _ZN7S7873C93v12Ev();
extern void _ZN7S7873C93v13Ev();
static  VTBL_ENTRY _tg__ZTV7S7873C97S7873C8__7S7873C1[] = {
  ABISELECT(104,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S7873C9[0]),
  (VTBL_ENTRY)&_ZN7S7873C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7873C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7873C93v12Ev,
  (VTBL_ENTRY)&_ZN7S7873C93v13Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7873C9D1Ev,_ZTv0_n12_N7S7873C9D1Ev)();
extern void ABISELECT(_ZThn104_N7S7873C9D1Ev,_ZThn72_N7S7873C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7873C9D0Ev,_ZTv0_n12_N7S7873C9D0Ev)();
extern void ABISELECT(_ZThn104_N7S7873C9D0Ev,_ZThn72_N7S7873C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S7873C97S7873C8__7S7873C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7873C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C9D1Ev,_ZTv0_n12_N7S7873C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C9D0Ev,_ZTv0_n12_N7S7873C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7873C8D1Ev,_ZTv0_n12_N7S7873C8D1Ev)();
extern void ABISELECT(_ZThn104_N7S7873C8D1Ev,_ZThn72_N7S7873C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7873C8D0Ev,_ZTv0_n12_N7S7873C8D0Ev)();
extern void ABISELECT(_ZThn104_N7S7873C8D0Ev,_ZThn72_N7S7873C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S7873C8__7S7873C1[] = {
  ABISELECT(-104,-72),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI7S7873C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C8D1Ev,_ZTv0_n12_N7S7873C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7873C8D0Ev,_ZTv0_n12_N7S7873C8D0Ev),
};
static  VTT_ENTRY vtt_S7873C1[] = {
  {&(_ZTV7S7873C1[3]),  3,30},
  {&(_tg__ZTV7S7873C2__7S7873C1[3]),  3,12},
  {&(_tg__ZTV10S3577C4_nt__7S7873C2__7S7873C1[3]),  3,5},
  {&(_tg__ZTV7S7873C8__7S7873C1[3]),  3,9},
  {&(_tg__ZTV7S7873C97S7873C8__7S7873C1[3]),  3,7},
  {&(_tg__ZTV10S3577C4_nt__7S7873C97S7873C8__7S7873C1[3]),  3,5},
  {&(_tg__ZTV10S3577C4_nt__7S7873C8__7S7873C1[3]),  3,5},
  {&(_ZTV7S7873C1[28]),  28,30},
  {&(_ZTV7S7873C1[19]),  19,30},
};
extern VTBL_ENTRY _ZTI7S7873C1[];
extern  VTBL_ENTRY _ZTV7S7873C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7873C1[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C8D0Ev,_ZTv0_n12_N7S7873C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7873C8D0Ev,_ZThn72_N7S7873C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C8D1Ev,_ZTv0_n12_N7S7873C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7873C8D1Ev,_ZThn72_N7S7873C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C9D0Ev,_ZTv0_n12_N7S7873C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7873C9D0Ev,_ZThn72_N7S7873C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C9D1Ev,_ZTv0_n12_N7S7873C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7873C9D1Ev,_ZThn72_N7S7873C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C2D0Ev,_ZTv0_n12_N7S7873C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7873C2D0Ev,_ZThn128_N7S7873C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C2D1Ev,_ZTv0_n12_N7S7873C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7873C2D1Ev,_ZThn128_N7S7873C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C1D0Ev,_ZTv0_n12_N7S7873C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7873C1D0Ev,_ZThn128_N7S7873C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7873C1D1Ev,_ZTv0_n12_N7S7873C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7873C1D1Ev,_ZThn128_N7S7873C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7873C1 = {  "S7873C1", // class name
  bases_S7873C1, 4,
  &(vtc_S7873C1[0]), // expected_vtbl_contents
  &(vtt_S7873C1[0]), // expected_vtt_contents
  ABISELECT(192,136), // object size
  NSPAIRA(_ZTI7S7873C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7873C1),30, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7873C1),9, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S20998C8C1Ev();
extern void _ZN8S20998C8D1Ev();
Name_Map name_map_S20998C8[] = {
  NSPAIR(_ZN8S20998C8C1Ev),
  NSPAIR(_ZN8S20998C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20998C8[];
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY vtc_S20998C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C8[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
Class_Descriptor cd_S20998C8 = {  "S20998C8", // class name
  0,0,//no base classes
  &(vtc_S20998C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20998C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20998C8),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  S20998C7  : virtual S20997C6 , virtual S20998C8 , S4227C37 {
  virtual  ~S20998C7(); // _ZN8S20998C7D2Ev
  S20998C7(); // tgen
};
//SIG(-1 S20998C7) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S20998C7()
{
  extern Class_Descriptor cd_S20998C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20998C7, buf);
    S20998C7 *dp, &lv = *(dp=new (buf) S20998C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20998C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20998C7)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20998C7");
    check_base_class_offset(lv, (S20998C8*), 0, "S20998C7");
    check_base_class_offset(lv, (S4227C37*), 0, "S20998C7");
    test_class_info(&lv, &cd_S20998C7);
    dp->~S20998C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20998C7(Test_S20998C7, "S20998C7", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S20998C7C1Ev();
extern void _ZN8S20998C7D2Ev();
Name_Map name_map_S20998C7[] = {
  NSPAIR(_ZN8S20998C7C1Ev),
  NSPAIR(_ZN8S20998C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S20998C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20998C8,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20998C7[];
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C7D1Ev();
extern void _ZN8S20998C7D0Ev();
static  VTBL_ENTRY vtc_S20998C7[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C7[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D0Ev,
};
extern VTBL_ENTRY _ZTV8S20998C7[];
static  VTT_ENTRY vtt_S20998C7[] = {
  {&(_ZTV8S20998C7[5]),  5,8},
  {&(_ZTV8S20998C7[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20998C7[];
extern  VTBL_ENTRY _ZTV8S20998C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C7[];
Class_Descriptor cd_S20998C7 = {  "S20998C7", // class name
  bases_S20998C7, 3,
  &(vtc_S20998C7[0]), // expected_vtbl_contents
  &(vtt_S20998C7[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S20998C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20998C7),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20998C7),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  S20998C5  : virtual S4227C37 , virtual S20998C7 {
  virtual void  v2(); // _ZN8S20998C52v2Ev
  ~S20998C5(); // tgen
  S20998C5(); // tgen
};
//SIG(-1 S20998C5) C1{ VBC2{ m} VBC3{ VBC4{ m FL[5]} VBC5{ v2} BC2 vd} v1}


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

static void Test_S20998C5()
{
  extern Class_Descriptor cd_S20998C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20998C5, buf);
    S20998C5 *dp, &lv = *(dp=new (buf) S20998C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20998C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20998C5)");
    /*is_ambiguous_... S20998C5::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), ABISELECT(8,4), "S20998C5");
    check_base_class_offset(lv, (S20997C6*)(S20998C7*), ABISELECT(8,4), "S20998C5");
    check_base_class_offset(lv, (S20998C8*)(S20998C7*), 0, "S20998C5");
    check_base_class_offset(lv, (S4227C37*)(S20998C7*), 0, "S20998C5");
    check_base_class_offset(lv, (S20998C7*), 0, "S20998C5");
    test_class_info(&lv, &cd_S20998C5);
    dp->~S20998C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20998C5(Test_S20998C5, "S20998C5", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S20998C5C1Ev();
extern void _ZN8S20998C5D1Ev();
Name_Map name_map_S20998C5[] = {
  NSPAIR(_ZN8S20998C5C1Ev),
  NSPAIR(_ZN8S20998C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20998C7;
extern VTBL_ENTRY _ZTI8S20998C7[];
extern  VTBL_ENTRY _ZTV8S20998C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C7[];
static Base_Class bases_S20998C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20998C8,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20998C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20998C5[];
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C5D1Ev();
extern void _ZN8S20998C5D0Ev();
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY vtc_S20998C5[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C5[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20998C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20998C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S20998C5[];
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C7D1Ev();
extern void _ZN8S20998C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C7__8S20998C5[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C7[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D0Ev,
};
static  VTT_ENTRY vtt_S20998C5[] = {
  {&(_ZTV8S20998C5[8]),  8,12},
  {&(_ZTV8S20998C5[8]),  8,12},
  {&(_ZTV8S20998C5[8]),  8,12},
  {&(_tg__ZTV8S20998C7__8S20998C5[5]),  5,8},
  {&(_tg__ZTV8S20998C7__8S20998C5[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20998C5[];
extern  VTBL_ENTRY _ZTV8S20998C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C5[];
Class_Descriptor cd_S20998C5 = {  "S20998C5", // class name
  bases_S20998C5, 5,
  &(vtc_S20998C5[0]), // expected_vtbl_contents
  &(vtt_S20998C5[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S20998C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20998C5),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20998C5),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20998C9  : S20997C6 , S20998C8 {
  ~S20998C9(); // tgen
  S20998C9(); // tgen
};
//SIG(-1 S20998C9) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S20998C9()
{
  extern Class_Descriptor cd_S20998C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S20998C9, buf);
    S20998C9 *dp, &lv = *(dp=new (buf) S20998C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S20998C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20998C9)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20998C9");
    check_base_class_offset(lv, (S20998C8*), 0, "S20998C9");
    test_class_info(&lv, &cd_S20998C9);
    dp->~S20998C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20998C9(Test_S20998C9, "S20998C9", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S20998C9C1Ev();
extern void _ZN8S20998C9D1Ev();
Name_Map name_map_S20998C9[] = {
  NSPAIR(_ZN8S20998C9C1Ev),
  NSPAIR(_ZN8S20998C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
static Base_Class bases_S20998C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20998C8,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20998C9[];
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY vtc_S20998C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C9[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern VTBL_ENTRY _ZTI8S20998C9[];
extern  VTBL_ENTRY _ZTV8S20998C9[];
Class_Descriptor cd_S20998C9 = {  "S20998C9", // class name
  bases_S20998C9, 2,
  &(vtc_S20998C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S20998C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20998C9),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20998C3  : virtual S20997C6 , S20998C5 , virtual S20998C9 {
  ~S20998C3(); // tgen
  S20998C3(); // tgen
};
//SIG(-1 S20998C3) C1{ VBC2{ m FL[5]} BC3{ VBC4{ m} VBC5{ VBC2 VBC6{ v1} BC4 vd} v2} VBC7{ BC2 BC6}}


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

static void Test_S20998C3()
{
  extern Class_Descriptor cd_S20998C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,23)];
    init_test(&cd_S20998C3, buf);
    S20998C3 *dp, &lv = *(dp=new (buf) S20998C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,88), "sizeof(S20998C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20998C3)");
    /*is_ambiguous_... S20998C3::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S20998C3");
    check_base_class_offset(lv, (S20997C6*)(S20998C7*), ABISELECT(8,4), "S20998C3");
    /*is_ambiguous_... S20998C5::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20998C5*), ABISELECT(48,44), "S20998C3");
    check_base_class_offset(lv, (S20998C8*)(S20998C7*), 0, "S20998C3");
    check_base_class_offset(lv, (S4227C37*)(S20998C7*), 0, "S20998C3");
    check_base_class_offset(lv, (S20998C7*)(S20998C5*), 0, "S20998C3");
    check_base_class_offset(lv, (S20998C5*), 0, "S20998C3");
    check_base_class_offset(lv, (S20997C6*)(S20998C9*), ABISELECT(56,48), "S20998C3");
    check_base_class_offset(lv, (S20998C8*)(S20998C9*), ABISELECT(48,44), "S20998C3");
    check_base_class_offset(lv, (S20998C9*), ABISELECT(48,44), "S20998C3");
    test_class_info(&lv, &cd_S20998C3);
    dp->~S20998C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20998C3(Test_S20998C3, "S20998C3", ABISELECT(96,88));

#else // __cplusplus

extern void _ZN8S20998C3C1Ev();
extern void _ZN8S20998C3D1Ev();
Name_Map name_map_S20998C3[] = {
  NSPAIR(_ZN8S20998C3C1Ev),
  NSPAIR(_ZN8S20998C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20998C7;
extern VTBL_ENTRY _ZTI8S20998C7[];
extern  VTBL_ENTRY _ZTV8S20998C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C7[];
extern Class_Descriptor cd_S20998C5;
extern VTBL_ENTRY _ZTI8S20998C5[];
extern  VTBL_ENTRY _ZTV8S20998C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S20998C9;
extern VTBL_ENTRY _ZTI8S20998C9[];
extern  VTBL_ENTRY _ZTV8S20998C9[];
static Base_Class bases_S20998C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20998C8,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20998C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20998C5,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(56,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20998C8,    ABISELECT(48,44), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20998C9,    ABISELECT(48,44), //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
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20998C3[];
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C3D1Ev();
extern void _ZN8S20998C3D0Ev();
extern void _ZN8S20998C52v2Ev();
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY vtc_S20998C3[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C3[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20998C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20998C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S20998C3[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S20998C3[];
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C5D1Ev();
extern void _ZN8S20998C5D0Ev();
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C5__8S20998C3[] = {
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C5[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20998C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20998C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C7D1Ev();
extern void _ZN8S20998C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C7__8S20998C3[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C7[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D0Ev,
};
static  VTT_ENTRY vtt_S20998C3[] = {
  {&(_ZTV8S20998C3[9]),  9,17},
  {&(_tg__ZTV8S20998C5__8S20998C3[8]),  8,12},
  {&(_tg__ZTV8S20998C5__8S20998C3[8]),  8,12},
  {&(_tg__ZTV8S20998C5__8S20998C3[8]),  8,12},
  {&(_ZTV8S20998C3[9]),  9,17},
  {&(_ZTV8S20998C3[9]),  9,17},
  {&(_ZTV8S20998C3[16]),  16,17},
  {&(_tg__ZTV8S20998C7__8S20998C3[5]),  5,8},
  {&(_tg__ZTV8S20998C7__8S20998C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20998C3[];
extern  VTBL_ENTRY _ZTV8S20998C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C3[];
Class_Descriptor cd_S20998C3 = {  "S20998C3", // class name
  bases_S20998C3, 9,
  &(vtc_S20998C3[0]), // expected_vtbl_contents
  &(vtt_S20998C3[0]), // expected_vtt_contents
  ABISELECT(96,88), // object size
  NSPAIRA(_ZTI8S20998C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20998C3),17, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20998C3),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20998C13  : S20998C8 , virtual S20997C6 , S4227C37 {
  void *s20998c13f0[10];
  ~S20998C13(); // tgen
  S20998C13(); // tgen
};
//SIG(-1 S20998C13) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S20998C13()
{
  extern Class_Descriptor cd_S20998C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S20998C13, buf);
    S20998C13 *dp, &lv = *(dp=new (buf) S20998C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S20998C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20998C13)");
    check_base_class_offset(lv, (S20998C8*), 0, "S20998C13");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S20998C13");
    check_base_class_offset(lv, (S4227C37*), 0, "S20998C13");
    check_field_offset(lv, s20998c13f0, ABISELECT(8,4), "S20998C13.s20998c13f0");
    test_class_info(&lv, &cd_S20998C13);
    dp->~S20998C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20998C13(Test_S20998C13, "S20998C13", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN9S20998C13C1Ev();
extern void _ZN9S20998C13D1Ev();
Name_Map name_map_S20998C13[] = {
  NSPAIR(_ZN9S20998C13C1Ev),
  NSPAIR(_ZN9S20998C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S20998C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20998C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20998C13[];
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY vtc_S20998C13[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C13[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern VTBL_ENTRY _ZTV9S20998C13[];
static  VTT_ENTRY vtt_S20998C13[] = {
  {&(_ZTV9S20998C13[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20998C13[];
extern  VTBL_ENTRY _ZTV9S20998C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C13[];
Class_Descriptor cd_S20998C13 = {  "S20998C13", // class name
  bases_S20998C13, 3,
  &(vtc_S20998C13[0]), // expected_vtbl_contents
  &(vtt_S20998C13[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI9S20998C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20998C13),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20998C13),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  S20998C12  : virtual S20998C8 {
  ::S20998C13 s20998c12f0[9];
  ~S20998C12(); // tgen
  S20998C12(); // tgen
};
//SIG(-1 S20998C12) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S20998C12()
{
  extern Class_Descriptor cd_S20998C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S20998C12, buf);
    S20998C12 *dp, &lv = *(dp=new (buf) S20998C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S20998C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20998C12)");
    check_base_class_offset(lv, (S20998C8*), 0, "S20998C12");
    check_field_offset(lv, s20998c12f0, ABISELECT(8,4), "S20998C12.s20998c12f0");
    test_class_info(&lv, &cd_S20998C12);
    dp->~S20998C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20998C12(Test_S20998C12, "S20998C12", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN9S20998C12C1Ev();
extern void _ZN9S20998C12D1Ev();
Name_Map name_map_S20998C12[] = {
  NSPAIR(_ZN9S20998C12C1Ev),
  NSPAIR(_ZN9S20998C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
static Base_Class bases_S20998C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20998C8,    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 _ZTI9S20998C12[];
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY vtc_S20998C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C12[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern VTBL_ENTRY _ZTV9S20998C12[];
static  VTT_ENTRY vtt_S20998C12[] = {
  {&(_ZTV9S20998C12[4]),  4,5},
  {&(_ZTV9S20998C12[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S20998C12[];
extern  VTBL_ENTRY _ZTV9S20998C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C12[];
Class_Descriptor cd_S20998C12 = {  "S20998C12", // class name
  bases_S20998C12, 1,
  &(vtc_S20998C12[0]), // expected_vtbl_contents
  &(vtt_S20998C12[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI9S20998C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20998C12),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20998C12),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  S20998C10  : virtual S20998C8 , virtual S20998C7 , virtual S10258C6_nt , virtual S20998C5 , virtual S20998C12 {
  virtual  ~S20998C10(); // _ZN9S20998C10D2Ev
  S20998C10(); // tgen
};
//SIG(-1 S20998C10) C1{ VBC2{ v1} VBC3{ VBC4{ m FL[5]} VBC2 BC5{ m} vd} VBC6{ m FL[4]} VBC7{ VBC5 VBC3 v2} VBC8{ VBC2 FC9{ BC2 VBC4 BC5 Fp[10]}[9]} vd}


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

static void Test_S20998C10()
{
  extern Class_Descriptor cd_S20998C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(156,210)];
    init_test(&cd_S20998C10, buf);
    S20998C10 *dp, &lv = *(dp=new (buf) S20998C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1240,836), "sizeof(S20998C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20998C10)");
    check_base_class_offset(lv, (S20998C8*), 0, "S20998C10");
    check_base_class_offset(lv, (S20998C8*)(S20998C7*), 0, "S20998C10");
    check_base_class_offset(lv, (S20998C8*)(S20998C12*), 0, "S20998C10");
    check_base_class_offset(lv, (S20997C6*)(S20998C7*), ABISELECT(8,4), "S20998C10");
    check_base_class_offset(lv, (S4227C37*)(S20998C7*), 0, "S20998C10");
    check_base_class_offset(lv, (S20998C7*), 0, "S20998C10");
    check_base_class_offset(lv, (S20998C7*)(S20998C5*), 0, "S20998C10");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(48,44), "S20998C10");
    /*is_ambiguous_... S20998C5::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20998C5*), ABISELECT(80,76), "S20998C10");
    check_base_class_offset(lv, (S20998C5*), 0, "S20998C10");
    check_base_class_offset(lv, (S20998C12*), ABISELECT(80,76), "S20998C10");
    test_class_info(&lv, &cd_S20998C10);
    dp->~S20998C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20998C10(Test_S20998C10, "S20998C10", ABISELECT(1240,836));

#else // __cplusplus

extern void _ZN9S20998C10C1Ev();
extern void _ZN9S20998C10D2Ev();
Name_Map name_map_S20998C10[] = {
  NSPAIR(_ZN9S20998C10C1Ev),
  NSPAIR(_ZN9S20998C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20998C7;
extern VTBL_ENTRY _ZTI8S20998C7[];
extern  VTBL_ENTRY _ZTV8S20998C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C7[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20998C5;
extern VTBL_ENTRY _ZTI8S20998C5[];
extern  VTBL_ENTRY _ZTV8S20998C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C5[];
extern Class_Descriptor cd_S20998C12;
extern VTBL_ENTRY _ZTI9S20998C12[];
extern  VTBL_ENTRY _ZTV9S20998C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C12[];
static Base_Class bases_S20998C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20998C8,    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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20998C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(80,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20998C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20998C12,    ABISELECT(80,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20998C10[];
extern void _ZN8S20998C82v1Ev();
extern void _ZN9S20998C10D1Ev();
extern void _ZN9S20998C10D0Ev();
extern void _ZN8S20998C52v2Ev();
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY vtc_S20998C10[] = {
  ABISELECT(80,76),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C10[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20998C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20998C10D0Ev,
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  (VTBL_ENTRY)&(_ZTI9S20998C10[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern VTBL_ENTRY _ZTV9S20998C10[];
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C7D1Ev();
extern void _ZN8S20998C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C7__9S20998C10[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C7[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D0Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev)();
extern void _ZN8S20998C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev)();
extern void _ZN8S20998C5D0Ev() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C5__9S20998C10[] = {
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C5[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C12__9S20998C10[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C12[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C8__9S20998C12__9S20998C10[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI9S20998C12[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
static  VTT_ENTRY vtt_S20998C10[] = {
  {&(_ZTV9S20998C10[12]),  12,21},
  {&(_ZTV9S20998C10[12]),  12,21},
  {&(_ZTV9S20998C10[12]),  12,21},
  {&(_ZTV9S20998C10[12]),  12,21},
  {&(_ZTV9S20998C10[20]),  20,21},
  {&(_tg__ZTV8S20998C7__9S20998C10[5]),  5,8},
  {&(_tg__ZTV8S20998C7__9S20998C10[5]),  5,8},
  {&(_tg__ZTV8S20998C5__9S20998C10[8]),  8,12},
  {&(_tg__ZTV8S20998C5__9S20998C10[8]),  8,12},
  {&(_tg__ZTV8S20998C5__9S20998C10[8]),  8,12},
  {&(_tg__ZTV9S20998C12__9S20998C10[4]),  4,5},
  {&(_tg__ZTV8S20998C8__9S20998C12__9S20998C10[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20998C10[];
extern  VTBL_ENTRY _ZTV9S20998C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C10[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev), // 
  (VTBL_ENTRY)_ZN8S20998C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev), // 
  (VTBL_ENTRY)_ZN8S20998C5D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20998C10 = {  "S20998C10", // class name
  bases_S20998C10, 8,
  &(vtc_S20998C10[0]), // expected_vtbl_contents
  &(vtt_S20998C10[0]), // expected_vtt_contents
  ABISELECT(1240,836), // object size
  NSPAIRA(_ZTI9S20998C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20998C10),21, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20998C10),12, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20998C2  : virtual S20998C3 , S20998C10 {
  virtual void  v3(); // _ZN8S20998C22v3Ev
  ~S20998C2(); // tgen
  S20998C2(); // tgen
};
//SIG(-1 S20998C2) C1{ VBC2{ VBC3{ m FL[5]} BC4{ VBC5{ m} VBC6{ VBC3 VBC7{ v2} BC5 vd} v3} VBC8{ BC3 BC7}} BC9{ VBC7 VBC6 VBC10{ m FL[4]} VBC4 VBC11{ VBC7 FC12{ BC7 VBC3 BC5 Fp[10]}[9]} vd} v1}


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

static void Test_S20998C2()
{
  extern Class_Descriptor cd_S20998C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(163,222)];
    init_test(&cd_S20998C2, buf);
    S20998C2 *dp, &lv = *(dp=new (buf) S20998C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1296,884), "sizeof(S20998C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20998C2)");
    /*is_ambiguous_... S20998C3::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20998C3*), ABISELECT(16,8), "S20998C2");
    check_base_class_offset(lv, (S20997C6*)(S20998C7*), ABISELECT(16,8), "S20998C2");
    /*is_ambiguous_... S20998C5::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20998C5*)(S20998C3*), 0, "S20998C2");
    /*is_ambiguous_... S20998C2::S20998C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20998C5*), 0, "S20998C2");
    check_base_class_offset(lv, (S20998C8*)(S20998C7*), ABISELECT(8,4), "S20998C2");
    check_base_class_offset(lv, (S20998C8*)(S20998C10*), ABISELECT(8,4), "S20998C2");
    check_base_class_offset(lv, (S20998C8*)(S20998C12*), ABISELECT(8,4), "S20998C2");
    check_base_class_offset(lv, (S4227C37*)(S20998C7*), ABISELECT(8,4), "S20998C2");
    check_base_class_offset(lv, (S20998C7*)(S20998C5*)(S20998C3*), ABISELECT(8,4), "S20998C2");
    check_base_class_offset(lv, (S20998C7*)(S20998C10*), ABISELECT(8,4), "S20998C2");
    /*is_ambiguous_... S20998C2::S20998C5 */ AMB_check_base_class_offset(lv, (S20998C7*)(S20998C5*), ABISELECT(8,4), "S20998C2");
    check_base_class_offset(lv, (S20998C5*)(S20998C3*), ABISELECT(8,4), "S20998C2");
    check_base_class_offset(lv, (S20997C6*)(S20998C9*), ABISELECT(64,52), "S20998C2");
    check_base_class_offset(lv, (S20998C8*)(S20998C9*), ABISELECT(56,48), "S20998C2");
    check_base_class_offset(lv, (S20998C9*)(S20998C3*), ABISELECT(56,48), "S20998C2");
    check_base_class_offset(lv, (S20998C3*), ABISELECT(8,4), "S20998C2");
    check_base_class_offset(lv, (S10258C6_nt*)(S20998C10*), ABISELECT(104,92), "S20998C2");
    check_base_class_offset(lv, (S20998C5*)(S20998C10*), 0, "S20998C2");
    check_base_class_offset(lv, (S20998C12*)(S20998C10*), ABISELECT(136,124), "S20998C2");
    check_base_class_offset(lv, (S20998C10*), 0, "S20998C2");
    test_class_info(&lv, &cd_S20998C2);
    dp->~S20998C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20998C2(Test_S20998C2, "S20998C2", ABISELECT(1296,884));

#else // __cplusplus

extern void _ZN8S20998C2C1Ev();
extern void _ZN8S20998C2D1Ev();
Name_Map name_map_S20998C2[] = {
  NSPAIR(_ZN8S20998C2C1Ev),
  NSPAIR(_ZN8S20998C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20998C7;
extern VTBL_ENTRY _ZTI8S20998C7[];
extern  VTBL_ENTRY _ZTV8S20998C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C7[];
extern Class_Descriptor cd_S20998C5;
extern VTBL_ENTRY _ZTI8S20998C5[];
extern  VTBL_ENTRY _ZTV8S20998C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S20998C9;
extern VTBL_ENTRY _ZTI8S20998C9[];
extern  VTBL_ENTRY _ZTV8S20998C9[];
extern Class_Descriptor cd_S20998C3;
extern VTBL_ENTRY _ZTI8S20998C3[];
extern  VTBL_ENTRY _ZTV8S20998C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C3[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20998C5;
extern VTBL_ENTRY _ZTI8S20998C5[];
extern  VTBL_ENTRY _ZTV8S20998C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C5[];
extern Class_Descriptor cd_S20998C12;
extern VTBL_ENTRY _ZTI9S20998C12[];
extern  VTBL_ENTRY _ZTV9S20998C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C12[];
extern Class_Descriptor cd_S20998C10;
extern VTBL_ENTRY _ZTI9S20998C10[];
extern  VTBL_ENTRY _ZTV9S20998C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C10[];
static Base_Class bases_S20998C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20998C8,    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
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20998C7,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20998C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //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_S20997C6,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20998C8,    ABISELECT(56,48), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20998C9,    ABISELECT(56,48), //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
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20998C3,    ABISELECT(8,4), //bcp->offset
    19, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(104,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20998C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20998C12,    ABISELECT(136,124), //bcp->offset
    37, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20998C10,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20998C2[];
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C2D1Ev,_ZTv0_n24_N8S20998C2D1Ev)();
extern void _ZN8S20998C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C2D0Ev,_ZTv0_n24_N8S20998C2D0Ev)();
extern void _ZN8S20998C2D0Ev() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
extern void _ZN8S20998C22v3Ev();
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C2D1Ev,_ZTv0_n24_N8S20998C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S20998C2D1Ev,_ZThn4_N8S20998C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C2D0Ev,_ZTv0_n24_N8S20998C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S20998C2D0Ev,_ZThn4_N8S20998C2D0Ev)() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY vtc_S20998C2[] = {
  ABISELECT(56,48),
  ABISELECT(8,4),
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C2[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C2D1Ev,_ZTv0_n24_N8S20998C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C2D0Ev,_ZTv0_n24_N8S20998C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
  (VTBL_ENTRY)&_ZN8S20998C22v3Ev,
  0,
  ABISELECT(48,44),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20998C2[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C2D1Ev,_ZTv0_n24_N8S20998C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C2D0Ev,_ZTv0_n24_N8S20998C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20998C2[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI8S20998C2[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern VTBL_ENTRY _ZTV8S20998C2[];
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev)();
extern void _ZN9S20998C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev)();
extern void _ZN9S20998C10D0Ev() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C10__8S20998C2[] = {
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C10[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev)();
extern void ABISELECT(_ZThn8_N9S20998C10D1Ev,_ZThn4_N9S20998C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev)();
extern void ABISELECT(_ZThn8_N9S20998C10D0Ev,_ZThn4_N9S20998C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20998C7__9S20998C10__8S20998C2[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20998C10[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev),
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C12__9S20998C10__8S20998C2[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI9S20998C10[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C3D1Ev,_ZTv0_n24_N8S20998C3D1Ev)();
extern void _ZN8S20998C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C3D0Ev,_ZTv0_n24_N8S20998C3D0Ev)();
extern void _ZN8S20998C3D0Ev() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C3__8S20998C2[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C3[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C3D1Ev,_ZTv0_n24_N8S20998C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C3D0Ev,_ZTv0_n24_N8S20998C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev)();
extern void _ZN8S20998C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev)();
extern void _ZN8S20998C5D0Ev() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C58S20998C3__8S20998C2[] = {
  0,
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C5[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C88S20998C9__A1__8S20998C3__8S20998C2[] = {
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S20998C3[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C7D1Ev();
extern void _ZN8S20998C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C7__8S20998C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C7[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D0Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev)();
extern void _ZN8S20998C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev)();
extern void _ZN8S20998C5D0Ev() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C5__A1__8S20998C2[] = {
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C5[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev)();
extern void ABISELECT(_ZThn8_N8S20998C5D1Ev,_ZThn4_N8S20998C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev)();
extern void ABISELECT(_ZThn8_N8S20998C5D0Ev,_ZThn4_N8S20998C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20998C7__8S20998C5__A1__8S20998C2[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20998C5[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev),
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C12__8S20998C2[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C12[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C8__9S20998C12__8S20998C2[] = {
  0,
  ABISELECT(128,120),
  (VTBL_ENTRY)&(_ZTI9S20998C12[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
static  VTT_ENTRY vtt_S20998C2[] = {
  {&(_ZTV8S20998C2[14]),  14,42},
  {&(_tg__ZTV9S20998C10__8S20998C2[12]),  12,16},
  {&(_tg__ZTV8S20998C7__9S20998C10__8S20998C2[6]),  6,9},
  {&(_tg__ZTV8S20998C7__9S20998C10__8S20998C2[6]),  6,9},
  {&(_tg__ZTV9S20998C10__8S20998C2[12]),  12,16},
  {&(_tg__ZTV9S20998C12__9S20998C10__8S20998C2[4]),  4,5},
  {&(_ZTV8S20998C2[29]),  29,42},
  {&(_ZTV8S20998C2[29]),  29,42},
  {&(_ZTV8S20998C2[29]),  29,42},
  {&(_ZTV8S20998C2[36]),  36,42},
  {&(_ZTV8S20998C2[14]),  14,42},
  {&(_ZTV8S20998C2[41]),  41,42},
  {&(_tg__ZTV8S20998C3__8S20998C2[9]),  9,13},
  {&(_tg__ZTV8S20998C58S20998C3__8S20998C2[8]),  8,12},
  {&(_tg__ZTV8S20998C58S20998C3__8S20998C2[8]),  8,12},
  {&(_tg__ZTV8S20998C58S20998C3__8S20998C2[8]),  8,12},
  {&(_tg__ZTV8S20998C3__8S20998C2[9]),  9,13},
  {&(_tg__ZTV8S20998C3__8S20998C2[9]),  9,13},
  {&(_tg__ZTV8S20998C88S20998C9__A1__8S20998C3__8S20998C2[3]),  3,4},
  {&(_tg__ZTV8S20998C7__8S20998C2[5]),  5,8},
  {&(_tg__ZTV8S20998C7__8S20998C2[5]),  5,8},
  {&(_tg__ZTV8S20998C5__A1__8S20998C2[8]),  8,12},
  {&(_tg__ZTV8S20998C7__8S20998C5__A1__8S20998C2[6]),  6,9},
  {&(_tg__ZTV8S20998C7__8S20998C5__A1__8S20998C2[6]),  6,9},
  {&(_tg__ZTV9S20998C12__8S20998C2[4]),  4,5},
  {&(_tg__ZTV8S20998C8__9S20998C12__8S20998C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20998C2[];
extern  VTBL_ENTRY _ZTV8S20998C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C2[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20998C5D0Ev,_ZThn4_N8S20998C5D0Ev),
  (VTBL_ENTRY)_ZN8S20998C5D0Ev,
  (VTBL_ENTRY)_ZN8S20998C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20998C5D1Ev,_ZThn4_N8S20998C5D1Ev),
  (VTBL_ENTRY)_ZN8S20998C5D1Ev,
  (VTBL_ENTRY)_ZN8S20998C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C3D0Ev,_ZTv0_n24_N8S20998C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20998C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C3D1Ev,_ZTv0_n24_N8S20998C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20998C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20998C10D0Ev,_ZThn4_N9S20998C10D0Ev),
  (VTBL_ENTRY)_ZN9S20998C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20998C10D1Ev,_ZThn4_N9S20998C10D1Ev),
  (VTBL_ENTRY)_ZN9S20998C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C2D0Ev,_ZTv0_n24_N8S20998C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20998C2D0Ev,_ZThn4_N8S20998C2D0Ev),
  (VTBL_ENTRY)_ZN8S20998C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C2D1Ev,_ZTv0_n24_N8S20998C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20998C2D1Ev,_ZThn4_N8S20998C2D1Ev),
  (VTBL_ENTRY)_ZN8S20998C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20998C2 = {  "S20998C2", // class name
  bases_S20998C2, 14,
  &(vtc_S20998C2[0]), // expected_vtbl_contents
  &(vtt_S20998C2[0]), // expected_vtt_contents
  ABISELECT(1296,884), // object size
  NSPAIRA(_ZTI8S20998C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20998C2),42, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20998C2),26, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20998C14  : virtual S10258C6_nt , virtual S20998C7 {
  virtual  ~S20998C14(); // _ZN9S20998C14D2Ev
  S20998C14(); // tgen
};
//SIG(-1 S20998C14) C1{ VBC2{ m FL[4]} VBC3{ VBC4{ m FL[5]} VBC5{ v1} BC6{ m} vd} vd}


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

static void Test_S20998C14()
{
  extern Class_Descriptor cd_S20998C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,20)];
    init_test(&cd_S20998C14, buf);
    S20998C14 *dp, &lv = *(dp=new (buf) S20998C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,76), "sizeof(S20998C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20998C14)");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(8,4), "S20998C14");
    check_base_class_offset(lv, (S20997C6*)(S20998C7*), ABISELECT(40,36), "S20998C14");
    check_base_class_offset(lv, (S20998C8*)(S20998C7*), 0, "S20998C14");
    check_base_class_offset(lv, (S4227C37*)(S20998C7*), 0, "S20998C14");
    check_base_class_offset(lv, (S20998C7*), 0, "S20998C14");
    test_class_info(&lv, &cd_S20998C14);
    dp->~S20998C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20998C14(Test_S20998C14, "S20998C14", ABISELECT(80,76));

#else // __cplusplus

extern void _ZN9S20998C14C1Ev();
extern void _ZN9S20998C14D2Ev();
Name_Map name_map_S20998C14[] = {
  NSPAIR(_ZN9S20998C14C1Ev),
  NSPAIR(_ZN9S20998C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20998C7;
extern VTBL_ENTRY _ZTI8S20998C7[];
extern  VTBL_ENTRY _ZTV8S20998C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C7[];
static Base_Class bases_S20998C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10258C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(40,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20998C8,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20998C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20998C14[];
extern void _ZN8S20998C82v1Ev();
extern void _ZN9S20998C14D1Ev();
extern void _ZN9S20998C14D0Ev();
static  VTBL_ENTRY vtc_S20998C14[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C14[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20998C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20998C14D0Ev,
};
extern VTBL_ENTRY _ZTV9S20998C14[];
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C7D1Ev();
extern void _ZN8S20998C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C7__9S20998C14[] = {
  0,
  ABISELECT(40,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C7[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D0Ev,
};
static  VTT_ENTRY vtt_S20998C14[] = {
  {&(_ZTV9S20998C14[8]),  8,11},
  {&(_ZTV9S20998C14[8]),  8,11},
  {&(_ZTV9S20998C14[8]),  8,11},
  {&(_tg__ZTV8S20998C7__9S20998C14[5]),  5,8},
  {&(_tg__ZTV8S20998C7__9S20998C14[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20998C14[];
extern  VTBL_ENTRY _ZTV9S20998C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C14[];
Class_Descriptor cd_S20998C14 = {  "S20998C14", // class name
  bases_S20998C14, 5,
  &(vtc_S20998C14[0]), // expected_vtbl_contents
  &(vtt_S20998C14[0]), // expected_vtt_contents
  ABISELECT(80,76), // object size
  NSPAIRA(_ZTI9S20998C14),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20998C14),11, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20998C14),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20998C15  : virtual S20998C13 {
  ~S20998C15(); // tgen
  S20998C15(); // tgen
};
//SIG(-1 S20998C15) C1{ VBC2{ BC3{ v1} VBC4{ m FL[5]} BC5{ m} Fp[10]}}


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

static void Test_S20998C15()
{
  extern Class_Descriptor cd_S20998C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S20998C15, buf);
    S20998C15 *dp, &lv = *(dp=new (buf) S20998C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S20998C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20998C15)");
    check_base_class_offset(lv, (S20998C8*)(S20998C13*), ABISELECT(8,4), "S20998C15");
    check_base_class_offset(lv, (S20997C6*)(S20998C13*), ABISELECT(96,48), "S20998C15");
    check_base_class_offset(lv, (S4227C37*)(S20998C13*), ABISELECT(8,4), "S20998C15");
    check_base_class_offset(lv, (S20998C13*), ABISELECT(8,4), "S20998C15");
    test_class_info(&lv, &cd_S20998C15);
    dp->~S20998C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20998C15(Test_S20998C15, "S20998C15", ABISELECT(136,88));

#else // __cplusplus

extern void _ZN9S20998C15C1Ev();
extern void _ZN9S20998C15D1Ev();
Name_Map name_map_S20998C15[] = {
  NSPAIR(_ZN9S20998C15C1Ev),
  NSPAIR(_ZN9S20998C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20998C13;
extern VTBL_ENTRY _ZTI9S20998C13[];
extern  VTBL_ENTRY _ZTV9S20998C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C13[];
static Base_Class bases_S20998C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20998C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20997C6,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20998C13,    ABISELECT(8,4), //bcp->offset
    4, //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 _ZTI9S20998C15[];
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY vtc_S20998C15[] = {
  ABISELECT(96,48),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C15[0]),
  0,
  ABISELECT(88,44),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20998C15[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern VTBL_ENTRY _ZTV9S20998C15[];
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C13__9S20998C15[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C13[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
static  VTT_ENTRY vtt_S20998C15[] = {
  {&(_ZTV9S20998C15[4]),  4,9},
  {&(_ZTV9S20998C15[8]),  8,9},
  {&(_tg__ZTV9S20998C13__9S20998C15[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20998C15[];
extern  VTBL_ENTRY _ZTV9S20998C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C15[];
Class_Descriptor cd_S20998C15 = {  "S20998C15", // class name
  bases_S20998C15, 4,
  &(vtc_S20998C15[0]), // expected_vtbl_contents
  &(vtt_S20998C15[0]), // expected_vtt_contents
  ABISELECT(136,88), // object size
  NSPAIRA(_ZTI9S20998C15),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20998C15),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20998C15),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20998C1  : virtual S20998C2 , S20998C14 , virtual S20998C15 , virtual S20998C10 {
  ~S20998C1(); // tgen
  S20998C1(); // tgen
};
//SIG(1 S20998C1) C1{ VBC2{ VBC3{ VBC4{ m FL[5]} BC5{ VBC6{ m} VBC7{ VBC4 VBC8{ v1} BC6 vd} v2} VBC9{ BC4 BC8}} BC10{ VBC8 VBC7 VBC11{ m FL[4]} VBC5 VBC12{ VBC8 FC13{ BC8 VBC4 BC6 Fp[10]}[9]} vd} v3} BC14{ VBC11 VBC7 vd} VBC15{ VBC13} VBC10}


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

static void Test_S20998C1()
{
  extern Class_Descriptor cd_S20998C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(177,236)];
    init_test(&cd_S20998C1, buf);
    S20998C1 *dp, &lv = *(dp=new (buf) S20998C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1408,940), "sizeof(S20998C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20998C1)");
    /*is_ambiguous_... S20998C3::S20997C6 */ AMB_check_base_class_offset(lv, (S20997C6*)(S20998C3*), ABISELECT(24,12), "S20998C1");
    check_base_class_offset(lv, (S20997C6*)(S20998C7*), ABISELECT(24,12), "S20998C1");
    check_base_class_offset(lv, (S20997C6*)(S20998C13*), ABISELECT(24,12), "S20998C1");
    /*is_ambiguous_... S20998C5::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20998C5*)(S20998C3*), 0, "S20998C1");
    /*is_ambiguous_... S20998C1::S20998C5 */ AMB_check_base_class_offset(lv, (S4227C37*)(S20998C5*), 0, "S20998C1");
    check_base_class_offset(lv, (S20998C8*)(S20998C7*), ABISELECT(16,8), "S20998C1");
    check_base_class_offset(lv, (S20998C8*)(S20998C10*)(S20998C2*), ABISELECT(16,8), "S20998C1");
    check_base_class_offset(lv, (S20998C8*)(S20998C12*), ABISELECT(16,8), "S20998C1");
    /*is_ambiguous_... S20998C1::S20998C10 */ AMB_check_base_class_offset(lv, (S20998C8*)(S20998C10*), ABISELECT(16,8), "S20998C1");
    check_base_class_offset(lv, (S4227C37*)(S20998C7*), ABISELECT(16,8), "S20998C1");
    check_base_class_offset(lv, (S20998C7*)(S20998C5*)(S20998C3*), ABISELECT(16,8), "S20998C1");
    check_base_class_offset(lv, (S20998C7*)(S20998C10*)(S20998C2*), ABISELECT(16,8), "S20998C1");
    /*is_ambiguous_... S20998C1::S20998C5 */ AMB_check_base_class_offset(lv, (S20998C7*)(S20998C5*), ABISELECT(16,8), "S20998C1");
    check_base_class_offset(lv, (S20998C7*)(S20998C14*), ABISELECT(16,8), "S20998C1");
    /*is_ambiguous_... S20998C1::S20998C10 */ AMB_check_base_class_offset(lv, (S20998C7*)(S20998C10*), ABISELECT(16,8), "S20998C1");
    check_base_class_offset(lv, (S20998C5*)(S20998C3*), ABISELECT(16,8), "S20998C1");
    check_base_class_offset(lv, (S20997C6*)(S20998C9*), ABISELECT(72,56), "S20998C1");
    check_base_class_offset(lv, (S20998C8*)(S20998C9*), ABISELECT(64,52), "S20998C1");
    check_base_class_offset(lv, (S20998C9*)(S20998C3*), ABISELECT(64,52), "S20998C1");
    check_base_class_offset(lv, (S20998C3*)(S20998C2*), ABISELECT(16,8), "S20998C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S20998C10*)(S20998C2*), ABISELECT(112,96), "S20998C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S20998C14*), ABISELECT(112,96), "S20998C1");
    /*is_ambiguous_... S20998C1::S20998C10 */ AMB_check_base_class_offset(lv, (S10258C6_nt*)(S20998C10*), ABISELECT(112,96), "S20998C1");
    check_base_class_offset(lv, (S20998C5*)(S20998C10*)(S20998C2*), ABISELECT(8,4), "S20998C1");
    /*is_ambiguous_... S20998C1::S20998C10 */ AMB_check_base_class_offset(lv, (S20998C5*)(S20998C10*), ABISELECT(8,4), "S20998C1");
    check_base_class_offset(lv, (S20998C12*)(S20998C10*)(S20998C2*), ABISELECT(144,128), "S20998C1");
    /*is_ambiguous_... S20998C1::S20998C10 */ AMB_check_base_class_offset(lv, (S20998C12*)(S20998C10*), ABISELECT(144,128), "S20998C1");
    check_base_class_offset(lv, (S20998C10*)(S20998C2*), ABISELECT(8,4), "S20998C1");
    check_base_class_offset(lv, (S20998C2*), ABISELECT(8,4), "S20998C1");
    check_base_class_offset(lv, (S20998C14*), 0, "S20998C1");
    check_base_class_offset(lv, (S20998C8*)(S20998C13*), ABISELECT(1312,892), "S20998C1");
    check_base_class_offset(lv, (S4227C37*)(S20998C13*), ABISELECT(1312,892), "S20998C1");
    check_base_class_offset(lv, (S20998C13*)(S20998C15*), ABISELECT(1312,892), "S20998C1");
    check_base_class_offset(lv, (S20998C15*), ABISELECT(1304,888), "S20998C1");
    /*is_ambiguous_... S20998C1::S20998C10 */ AMB_check_base_class_offset(lv, (S20998C10*), ABISELECT(1400,936), "S20998C1");
    test_class_info(&lv, &cd_S20998C1);
    dp->~S20998C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20998C1(Test_S20998C1, "S20998C1", ABISELECT(1408,940));

#else // __cplusplus

extern void _ZN8S20998C1C1Ev();
extern void _ZN8S20998C1D1Ev();
Name_Map name_map_S20998C1[] = {
  NSPAIR(_ZN8S20998C1C1Ev),
  NSPAIR(_ZN8S20998C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20998C7;
extern VTBL_ENTRY _ZTI8S20998C7[];
extern  VTBL_ENTRY _ZTV8S20998C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C7[];
extern Class_Descriptor cd_S20998C5;
extern VTBL_ENTRY _ZTI8S20998C5[];
extern  VTBL_ENTRY _ZTV8S20998C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S20998C9;
extern VTBL_ENTRY _ZTI8S20998C9[];
extern  VTBL_ENTRY _ZTV8S20998C9[];
extern Class_Descriptor cd_S20998C3;
extern VTBL_ENTRY _ZTI8S20998C3[];
extern  VTBL_ENTRY _ZTV8S20998C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C3[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S20998C5;
extern VTBL_ENTRY _ZTI8S20998C5[];
extern  VTBL_ENTRY _ZTV8S20998C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C5[];
extern Class_Descriptor cd_S20998C12;
extern VTBL_ENTRY _ZTI9S20998C12[];
extern  VTBL_ENTRY _ZTV9S20998C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C12[];
extern Class_Descriptor cd_S20998C10;
extern VTBL_ENTRY _ZTI9S20998C10[];
extern  VTBL_ENTRY _ZTV9S20998C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C10[];
extern Class_Descriptor cd_S20998C2;
extern VTBL_ENTRY _ZTI8S20998C2[];
extern  VTBL_ENTRY _ZTV8S20998C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C2[];
extern Class_Descriptor cd_S20998C14;
extern VTBL_ENTRY _ZTI9S20998C14[];
extern  VTBL_ENTRY _ZTV9S20998C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C14[];
extern Class_Descriptor cd_S20998C8;
extern VTBL_ENTRY _ZTI8S20998C8[];
extern  VTBL_ENTRY _ZTV8S20998C8[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20998C13;
extern VTBL_ENTRY _ZTI9S20998C13[];
extern  VTBL_ENTRY _ZTV9S20998C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C13[];
extern Class_Descriptor cd_S20998C15;
extern VTBL_ENTRY _ZTI9S20998C15[];
extern  VTBL_ENTRY _ZTV9S20998C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C15[];
extern Class_Descriptor cd_S20998C10;
extern VTBL_ENTRY _ZTI9S20998C10[];
extern  VTBL_ENTRY _ZTV9S20998C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20998C10[];
static Base_Class bases_S20998C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20998C8,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20998C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20998C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20997C6,    ABISELECT(72,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20998C8,    ABISELECT(64,52), //bcp->offset
    54, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20998C9,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20998C3,    ABISELECT(16,8), //bcp->offset
    40, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S10258C6_nt,    ABISELECT(112,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
    13, //immediately_derived
  0, 1},
  {&cd_S20998C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20998C12,    ABISELECT(144,128), //bcp->offset
    58, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20998C10,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20998C2,    ABISELECT(8,4), //bcp->offset
    20, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20998C14,    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
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20998C8,    ABISELECT(1312,892), //bcp->offset
    -1, //bcp->virtual_function_table_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
    18, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,892), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20998C13,    ABISELECT(1312,892), //bcp->offset
    67, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    19, //immediately_derived
  0, 1},
  {&cd_S20998C15,    ABISELECT(1304,888), //bcp->offset
    63, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20998C10,    ABISELECT(1400,936), //bcp->offset
    72, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20998C1[];
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C1D1Ev,_ZTv0_n24_N8S20998C1D1Ev)();
extern void _ZN8S20998C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C1D0Ev,_ZTv0_n24_N8S20998C1D0Ev)();
extern void _ZN8S20998C1D0Ev() __attribute__((weak));
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C1D1Ev,_ZTv0_n24_N8S20998C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S20998C1D1Ev,_ZThn4_N8S20998C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C1D0Ev,_ZTv0_n24_N8S20998C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S20998C1D0Ev,_ZThn4_N8S20998C1D0Ev)() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
extern void _ZN8S20998C22v3Ev();
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C1D1Ev,_ZTv0_n24_N8S20998C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20998C1D1Ev,_ZThn8_N8S20998C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C1D0Ev,_ZTv0_n24_N8S20998C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20998C1D0Ev,_ZThn8_N8S20998C1D0Ev)() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C1D1Ev,_ZTv0_n24_N8S20998C1D1Ev)();
extern void ABISELECT(_ZThn1400_N8S20998C1D1Ev,_ZThn936_N8S20998C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C1D0Ev,_ZTv0_n24_N8S20998C1D0Ev)();
extern void ABISELECT(_ZThn1400_N8S20998C1D0Ev,_ZThn936_N8S20998C1D0Ev)() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY vtc_S20998C1[] = {
  ABISELECT(1400,936),
  ABISELECT(1312,892),
  ABISELECT(1304,888),
  ABISELECT(144,128),
  ABISELECT(8,4),
  ABISELECT(64,52),
  0,
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(112,96),
  0,
  ABISELECT(16,8),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C1[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C1D1Ev,_ZTv0_n24_N8S20998C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C1D0Ev,_ZTv0_n24_N8S20998C1D0Ev),
  0,
  ABISELECT(56,48),
  ABISELECT(8,4),
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20998C1[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C1D1Ev,_ZTv0_n24_N8S20998C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C1D0Ev,_ZTv0_n24_N8S20998C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
  (VTBL_ENTRY)&_ZN8S20998C22v3Ev,
  0,
  ABISELECT(48,44),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20998C1[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C1D1Ev,_ZTv0_n24_N8S20998C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C1D0Ev,_ZTv0_n24_N8S20998C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
  0,
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S20998C1[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-144,-128),
  (VTBL_ENTRY)&(_ZTI8S20998C1[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  ABISELECT(-1280,-876),
  ABISELECT(8,4),
  ABISELECT(-1304,-888),
  (VTBL_ENTRY)&(_ZTI8S20998C1[0]),
  0,
  ABISELECT(-1288,-880),
  ABISELECT(-1312,-892),
  (VTBL_ENTRY)&(_ZTI8S20998C1[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  ABISELECT(-1256,-808),
  ABISELECT(-1392,-932),
  ABISELECT(-1288,-840),
  ABISELECT(-1392,-932),
  ABISELECT(-1384,-928),
  ABISELECT(-1400,-936),
  ABISELECT(-1400,-936),
  ABISELECT(-1384,-928),
  ABISELECT(-1376,-924),
  ABISELECT(-1384,-928),
  ABISELECT(-1400,-936),
  (VTBL_ENTRY)&(_ZTI8S20998C1[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C1D1Ev,_ZTv0_n24_N8S20998C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C1D0Ev,_ZTv0_n24_N8S20998C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S20998C1[];
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20998C14D1Ev,_ZTv0_n24_N9S20998C14D1Ev)();
extern void _ZN9S20998C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20998C14D0Ev,_ZTv0_n24_N9S20998C14D0Ev)();
extern void _ZN9S20998C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20998C14__8S20998C1[] = {
  ABISELECT(16,8),
  ABISELECT(112,96),
  0,
  ABISELECT(16,8),
  ABISELECT(24,12),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C14[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C14D1Ev,_ZTv0_n24_N9S20998C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C14D0Ev,_ZTv0_n24_N9S20998C14D0Ev),
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20998C14D1Ev,_ZTv0_n24_N9S20998C14D1Ev)();
extern void ABISELECT(_ZThn16_N9S20998C14D1Ev,_ZThn8_N9S20998C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20998C14D0Ev,_ZTv0_n24_N9S20998C14D0Ev)();
extern void ABISELECT(_ZThn16_N9S20998C14D0Ev,_ZThn8_N9S20998C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20998C7__9S20998C14__8S20998C1[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20998C14[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C14D1Ev,_ZTv0_n24_N9S20998C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C14D0Ev,_ZTv0_n24_N9S20998C14D0Ev),
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C2D1Ev,_ZTv0_n24_N8S20998C2D1Ev)();
extern void _ZN8S20998C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C2D0Ev,_ZTv0_n24_N8S20998C2D0Ev)();
extern void _ZN8S20998C2D0Ev() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
extern void _ZN8S20998C22v3Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C2__8S20998C1[] = {
  ABISELECT(56,48),
  ABISELECT(8,4),
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C2[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C2D1Ev,_ZTv0_n24_N8S20998C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C2D0Ev,_ZTv0_n24_N8S20998C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
  (VTBL_ENTRY)&_ZN8S20998C22v3Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev)();
extern void _ZN9S20998C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev)();
extern void _ZN9S20998C10D0Ev() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C108S20998C2__8S20998C1[] = {
  ABISELECT(136,124),
  0,
  ABISELECT(104,92),
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C10[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev)();
extern void ABISELECT(_ZThn8_N9S20998C10D1Ev,_ZThn4_N9S20998C10D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev)();
extern void ABISELECT(_ZThn8_N9S20998C10D0Ev,_ZThn4_N9S20998C10D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20998C7__9S20998C108S20998C2__8S20998C1[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20998C10[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev),
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C12__9S20998C108S20998C2__8S20998C1[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI9S20998C10[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C2D1Ev,_ZTv0_n24_N8S20998C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S20998C2D1Ev,_ZThn4_N8S20998C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C2D0Ev,_ZTv0_n24_N8S20998C2D0Ev)();
extern void ABISELECT(_ZThn8_N8S20998C2D0Ev,_ZThn4_N8S20998C2D0Ev)() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C3__8S20998C2__8S20998C1[] = {
  0,
  ABISELECT(48,44),
  0,
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20998C2[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C2D1Ev,_ZTv0_n24_N8S20998C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C2D0Ev,_ZTv0_n24_N8S20998C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C88S20998C9__A1__8S20998C2__8S20998C1[] = {
  0,
  ABISELECT(-56,-48),
  (VTBL_ENTRY)&(_ZTI8S20998C2[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C12__8S20998C2__8S20998C1[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(-136,-124),
  (VTBL_ENTRY)&(_ZTI8S20998C2[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C3D1Ev,_ZTv0_n24_N8S20998C3D1Ev)();
extern void _ZN8S20998C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C3D0Ev,_ZTv0_n24_N8S20998C3D0Ev)();
extern void _ZN8S20998C3D0Ev() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C3__8S20998C1[] = {
  ABISELECT(48,44),
  0,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C3[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C3D1Ev,_ZTv0_n24_N8S20998C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C3D0Ev,_ZTv0_n24_N8S20998C3D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev)();
extern void _ZN8S20998C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev)();
extern void _ZN8S20998C5D0Ev() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C58S20998C3__8S20998C1[] = {
  0,
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C5[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C88S20998C9__A1__8S20998C3__8S20998C1[] = {
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S20998C3[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void _ZN8S20998C7D1Ev();
extern void _ZN8S20998C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C7__8S20998C1[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C7[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D1Ev,
  (VTBL_ENTRY)&_ZN8S20998C7D0Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev)();
extern void _ZN8S20998C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev)();
extern void _ZN8S20998C5D0Ev() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C5__A1__8S20998C1[] = {
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20998C5[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev)();
extern void ABISELECT(_ZThn8_N8S20998C5D1Ev,_ZThn4_N8S20998C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev)();
extern void ABISELECT(_ZThn8_N8S20998C5D0Ev,_ZThn4_N8S20998C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20998C7__8S20998C5__A1__8S20998C1[] = {
  ABISELECT(-8,-4),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20998C5[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev),
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C12__8S20998C1[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C12[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C8__9S20998C12__8S20998C1[] = {
  0,
  ABISELECT(128,120),
  (VTBL_ENTRY)&(_ZTI9S20998C12[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20998C15__8S20998C1[] = {
  ABISELECT(-1280,-876),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C15[0]),
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C13__9S20998C15__8S20998C1[] = {
  0,
  ABISELECT(-1288,-880),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20998C15[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C13__8S20998C1[] = {
  ABISELECT(-1288,-880),
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C13[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev)();
extern void _ZN9S20998C10D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev)();
extern void _ZN9S20998C10D0Ev() __attribute__((weak));
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C10__A1__8S20998C1[] = {
  ABISELECT(-1256,-808),
  ABISELECT(-1392,-932),
  ABISELECT(-1288,-840),
  ABISELECT(-1392,-932),
  ABISELECT(-1384,-928),
  ABISELECT(-1400,-936),
  0,
  ABISELECT(-1384,-928),
  ABISELECT(-1376,-924),
  ABISELECT(-1384,-928),
  0,
  (VTBL_ENTRY)&(_ZTI9S20998C10[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20998C7__9S20998C10__A1__8S20998C1[] = {
  ABISELECT(1384,928),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(1384,928),
  (VTBL_ENTRY)&(_ZTI9S20998C10[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev),
};
extern void _ZN8S20998C82v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev)();
extern void ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev)();
extern void _ZN8S20998C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S20998C5__9S20998C10__A1__8S20998C1[] = {
  0,
  ABISELECT(8,4),
  ABISELECT(-8,-4),
  ABISELECT(1392,932),
  ABISELECT(8,4),
  ABISELECT(16,8),
  ABISELECT(8,4),
  ABISELECT(1392,932),
  (VTBL_ENTRY)&(_ZTI9S20998C10[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev),
  (VTBL_ENTRY)&_ZN8S20998C52v2Ev,
};
extern void _ZN8S20998C82v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20998C12__9S20998C10__A1__8S20998C1[] = {
  ABISELECT(-128,-120),
  ABISELECT(-128,-120),
  ABISELECT(1256,808),
  (VTBL_ENTRY)&(_ZTI9S20998C10[0]),
  (VTBL_ENTRY)&_ZN8S20998C82v1Ev,
};
static  VTT_ENTRY vtt_S20998C1[] = {
  {&(_ZTV8S20998C1[17]),  17,88},
  {&(_tg__ZTV9S20998C14__8S20998C1[8]),  8,11},
  {&(_tg__ZTV8S20998C7__9S20998C14__8S20998C1[6]),  6,9},
  {&(_tg__ZTV8S20998C7__9S20998C14__8S20998C1[6]),  6,9},
  {&(_ZTV8S20998C1[35]),  35,88},
  {&(_ZTV8S20998C1[50]),  50,88},
  {&(_ZTV8S20998C1[50]),  50,88},
  {&(_ZTV8S20998C1[50]),  50,88},
  {&(_ZTV8S20998C1[57]),  57,88},
  {&(_ZTV8S20998C1[35]),  35,88},
  {&(_ZTV8S20998C1[62]),  62,88},
  {&(_ZTV8S20998C1[67]),  67,88},
  {&(_ZTV8S20998C1[71]),  71,88},
  {&(_ZTV8S20998C1[84]),  84,88},
  {&(_tg__ZTV8S20998C2__8S20998C1[14]),  14,19},
  {&(_tg__ZTV9S20998C108S20998C2__8S20998C1[12]),  12,16},
  {&(_tg__ZTV8S20998C7__9S20998C108S20998C2__8S20998C1[6]),  6,9},
  {&(_tg__ZTV8S20998C7__9S20998C108S20998C2__8S20998C1[6]),  6,9},
  {&(_tg__ZTV9S20998C108S20998C2__8S20998C1[12]),  12,16},
  {&(_tg__ZTV9S20998C12__9S20998C108S20998C2__8S20998C1[4]),  4,5},
  {&(_tg__ZTV8S20998C3__8S20998C2__8S20998C1[10]),  10,14},
  {&(_tg__ZTV8S20998C3__8S20998C2__8S20998C1[10]),  10,14},
  {&(_tg__ZTV8S20998C3__8S20998C2__8S20998C1[10]),  10,14},
  {&(_tg__ZTV8S20998C88S20998C9__A1__8S20998C2__8S20998C1[3]),  3,4},
  {&(_tg__ZTV8S20998C2__8S20998C1[14]),  14,19},
  {&(_tg__ZTV9S20998C12__8S20998C2__8S20998C1[4]),  4,5},
  {&(_tg__ZTV8S20998C3__8S20998C1[9]),  9,13},
  {&(_tg__ZTV8S20998C58S20998C3__8S20998C1[8]),  8,12},
  {&(_tg__ZTV8S20998C58S20998C3__8S20998C1[8]),  8,12},
  {&(_tg__ZTV8S20998C58S20998C3__8S20998C1[8]),  8,12},
  {&(_tg__ZTV8S20998C3__8S20998C1[9]),  9,13},
  {&(_tg__ZTV8S20998C3__8S20998C1[9]),  9,13},
  {&(_tg__ZTV8S20998C88S20998C9__A1__8S20998C3__8S20998C1[3]),  3,4},
  {&(_tg__ZTV8S20998C7__8S20998C1[5]),  5,8},
  {&(_tg__ZTV8S20998C7__8S20998C1[5]),  5,8},
  {&(_tg__ZTV8S20998C5__A1__8S20998C1[8]),  8,12},
  {&(_tg__ZTV8S20998C7__8S20998C5__A1__8S20998C1[6]),  6,9},
  {&(_tg__ZTV8S20998C7__8S20998C5__A1__8S20998C1[6]),  6,9},
  {&(_tg__ZTV9S20998C12__8S20998C1[4]),  4,5},
  {&(_tg__ZTV8S20998C8__9S20998C12__8S20998C1[3]),  3,4},
  {&(_tg__ZTV9S20998C15__8S20998C1[4]),  4,4},
  {&(_tg__ZTV9S20998C13__9S20998C15__8S20998C1[4]),  4,5},
  {&(_tg__ZTV9S20998C13__8S20998C1[3]),  3,4},
  {&(_tg__ZTV9S20998C10__A1__8S20998C1[12]),  12,16},
  {&(_tg__ZTV8S20998C7__9S20998C10__A1__8S20998C1[6]),  6,9},
  {&(_tg__ZTV8S20998C7__9S20998C10__A1__8S20998C1[6]),  6,9},
  {&(_tg__ZTV8S20998C5__9S20998C10__A1__8S20998C1[9]),  9,13},
  {&(_tg__ZTV9S20998C12__9S20998C10__A1__8S20998C1[4]),  4,5},
};
extern VTBL_ENTRY _ZTI8S20998C1[];
extern  VTBL_ENTRY _ZTV8S20998C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20998C1[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C5D0Ev,_ZTv0_n24_N8S20998C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20998C5D0Ev,_ZThn4_N8S20998C5D0Ev),
  (VTBL_ENTRY)_ZN8S20998C5D0Ev,
  (VTBL_ENTRY)_ZN8S20998C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C5D1Ev,_ZTv0_n24_N8S20998C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20998C5D1Ev,_ZThn4_N8S20998C5D1Ev),
  (VTBL_ENTRY)_ZN8S20998C5D1Ev,
  (VTBL_ENTRY)_ZN8S20998C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C3D0Ev,_ZTv0_n24_N8S20998C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S20998C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C3D1Ev,_ZTv0_n24_N8S20998C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S20998C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20998C10D0Ev,_ZTv0_n24_N9S20998C10D0Ev), // 
  (VTBL_ENTRY)_ZN9S20998C10D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20998C10D0Ev,_ZThn4_N9S20998C10D0Ev),
  (VTBL_ENTRY)_ZN9S20998C10D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20998C10D1Ev,_ZTv0_n24_N9S20998C10D1Ev), // 
  (VTBL_ENTRY)_ZN9S20998C10D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn8_N9S20998C10D1Ev,_ZThn4_N9S20998C10D1Ev),
  (VTBL_ENTRY)_ZN9S20998C10D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C2D0Ev,_ZTv0_n24_N8S20998C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20998C2D0Ev,_ZThn4_N8S20998C2D0Ev),
  (VTBL_ENTRY)_ZN8S20998C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C2D1Ev,_ZTv0_n24_N8S20998C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20998C2D1Ev,_ZThn4_N8S20998C2D1Ev),
  (VTBL_ENTRY)_ZN8S20998C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20998C14D0Ev,_ZTv0_n24_N9S20998C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20998C14D0Ev,_ZThn8_N9S20998C14D0Ev),
  (VTBL_ENTRY)_ZN9S20998C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20998C14D1Ev,_ZTv0_n24_N9S20998C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20998C14D1Ev,_ZThn8_N9S20998C14D1Ev),
  (VTBL_ENTRY)_ZN9S20998C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C1D0Ev,_ZTv0_n24_N8S20998C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N8S20998C1D0Ev,_ZThn936_N8S20998C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20998C1D0Ev,_ZThn8_N8S20998C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20998C1D0Ev,_ZThn4_N8S20998C1D0Ev),
  (VTBL_ENTRY)_ZN8S20998C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20998C1D1Ev,_ZTv0_n24_N8S20998C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn1400_N8S20998C1D1Ev,_ZThn936_N8S20998C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20998C1D1Ev,_ZThn8_N8S20998C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S20998C1D1Ev,_ZThn4_N8S20998C1D1Ev),
  (VTBL_ENTRY)_ZN8S20998C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20998C1 = {  "S20998C1", // class name
  bases_S20998C1, 21,
  &(vtc_S20998C1[0]), // expected_vtbl_contents
  &(vtt_S20998C1[0]), // expected_vtt_contents
  ABISELECT(1408,940), // object size
  NSPAIRA(_ZTI8S20998C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20998C1),88, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20998C1),48, //virtual table table var
  15, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9914C2  {
  void *s9914c2f0;
  ::S4227C37 s9914c2f1;
  int s9914c2f2;
  ::S9141C28_nt s9914c2f3;
  unsigned int s9914c2f4:1;
  unsigned int s9914c2f5:1;
  unsigned int s9914c2f6:1;
  unsigned int s9914c2f7:1;
  unsigned int s9914c2f8:1;
  unsigned int s9914c2f9:1;
  unsigned int s9914c2f10:1;
  int s9914c2f11:3;
  int s9914c2f12:3;
  ::S5327C13_nt s9914c2f13;
  int s9914c2f14;
  virtual  ~S9914C2(); // _ZN7S9914C2D1Ev
  virtual void  v5(); // _ZN7S9914C22v5Ev
  virtual void  v6(); // _ZN7S9914C22v6Ev
  virtual void  v7(); // _ZN7S9914C22v7Ev
  virtual void  v8(); // _ZN7S9914C22v8Ev
  virtual void  v9(); // _ZN7S9914C22v9Ev
  virtual void  v10(); // _ZN7S9914C23v10Ev
  virtual void  v11(); // _ZN7S9914C23v11Ev
  virtual void  v12(); // _ZN7S9914C23v12Ev
  virtual void  v13(); // _ZN7S9914C23v13Ev
  virtual void  v14(); // _ZN7S9914C23v14Ev
  virtual void  v15(); // _ZN7S9914C23v15Ev
  virtual void  v16(); // _ZN7S9914C23v16Ev
  virtual void  v17(); // _ZN7S9914C23v17Ev
  virtual void  v18(); // _ZN7S9914C23v18Ev
  virtual void  v19(); // _ZN7S9914C23v19Ev
  virtual void  v20(); // _ZN7S9914C23v20Ev
  virtual void  v21(); // _ZN7S9914C23v21Ev
  virtual void  v22(); // _ZN7S9914C23v22Ev
  S9914C2(); // tgen
};
//SIG(-1 S9914C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S9914C2 ::~S9914C2(){ note_dtor("S9914C2", this);}
void  S9914C2 ::v5(){vfunc_called(this, "_ZN7S9914C22v5Ev");}
void  S9914C2 ::v6(){vfunc_called(this, "_ZN7S9914C22v6Ev");}
void  S9914C2 ::v7(){vfunc_called(this, "_ZN7S9914C22v7Ev");}
void  S9914C2 ::v8(){vfunc_called(this, "_ZN7S9914C22v8Ev");}
void  S9914C2 ::v9(){vfunc_called(this, "_ZN7S9914C22v9Ev");}
void  S9914C2 ::v10(){vfunc_called(this, "_ZN7S9914C23v10Ev");}
void  S9914C2 ::v11(){vfunc_called(this, "_ZN7S9914C23v11Ev");}
void  S9914C2 ::v12(){vfunc_called(this, "_ZN7S9914C23v12Ev");}
void  S9914C2 ::v13(){vfunc_called(this, "_ZN7S9914C23v13Ev");}
void  S9914C2 ::v14(){vfunc_called(this, "_ZN7S9914C23v14Ev");}
void  S9914C2 ::v15(){vfunc_called(this, "_ZN7S9914C23v15Ev");}
void  S9914C2 ::v16(){vfunc_called(this, "_ZN7S9914C23v16Ev");}
void  S9914C2 ::v17(){vfunc_called(this, "_ZN7S9914C23v17Ev");}
void  S9914C2 ::v18(){vfunc_called(this, "_ZN7S9914C23v18Ev");}
void  S9914C2 ::v19(){vfunc_called(this, "_ZN7S9914C23v19Ev");}
void  S9914C2 ::v20(){vfunc_called(this, "_ZN7S9914C23v20Ev");}
void  S9914C2 ::v21(){vfunc_called(this, "_ZN7S9914C23v21Ev");}
void  S9914C2 ::v22(){vfunc_called(this, "_ZN7S9914C23v22Ev");}
S9914C2 ::S9914C2(){ note_ctor("S9914C2", this);} // tgen

static void Test_S9914C2()
{
  extern Class_Descriptor cd_S9914C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S9914C2, buf);
    S9914C2 *dp, &lv = *(dp=new (buf) S9914C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S9914C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9914C2)");
    check_field_offset(lv, s9914c2f0, ABISELECT(8,4), "S9914C2.s9914c2f0");
    check_field_offset(lv, s9914c2f1, ABISELECT(16,8), "S9914C2.s9914c2f1");
    check_field_offset(lv, s9914c2f2, ABISELECT(20,12), "S9914C2.s9914c2f2");
    check_field_offset(lv, s9914c2f3, ABISELECT(24,16), "S9914C2.s9914c2f3");
    set_bf_and_test(lv, s9914c2f4, ABISELECT(40,28), 0, 1, 1, "S9914C2");
    set_bf_and_test(lv, s9914c2f5, ABISELECT(40,28), 1, 1, 1, "S9914C2");
    set_bf_and_test(lv, s9914c2f6, ABISELECT(40,28), 2, 1, 1, "S9914C2");
    set_bf_and_test(lv, s9914c2f7, ABISELECT(40,28), 3, 1, 1, "S9914C2");
    set_bf_and_test(lv, s9914c2f8, ABISELECT(40,28), 4, 1, 1, "S9914C2");
    set_bf_and_test(lv, s9914c2f9, ABISELECT(40,28), 5, 1, 1, "S9914C2");
    set_bf_and_test(lv, s9914c2f10, ABISELECT(40,28), 6, 1, 1, "S9914C2");
    set_bf_and_test(lv, s9914c2f11, ABISELECT(40,28), 7, 3, 1, "S9914C2");
    set_bf_and_test(lv, s9914c2f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S9914C2");
    set_bf_and_test(lv, s9914c2f12, ABISELECT(41,29), 2, 3, 1, "S9914C2");
    set_bf_and_test(lv, s9914c2f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S9914C2");
    check_field_offset(lv, s9914c2f13, ABISELECT(48,32), "S9914C2.s9914c2f13");
    check_field_offset(lv, s9914c2f14, ABISELECT(64,44), "S9914C2.s9914c2f14");
    test_class_info(&lv, &cd_S9914C2);
    dp->~S9914C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9914C2(Test_S9914C2, "S9914C2", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S9914C2C1Ev();
extern void _ZN7S9914C2D1Ev();
Name_Map name_map_S9914C2[] = {
  NSPAIR(_ZN7S9914C2C1Ev),
  NSPAIR(_ZN7S9914C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9914C2[];
extern void _ZN7S9914C2D1Ev();
extern void _ZN7S9914C2D0Ev();
extern void _ZN7S9914C22v5Ev();
extern void _ZN7S9914C22v6Ev();
extern void _ZN7S9914C22v7Ev();
extern void _ZN7S9914C22v8Ev();
extern void _ZN7S9914C22v9Ev();
extern void _ZN7S9914C23v10Ev();
extern void _ZN7S9914C23v11Ev();
extern void _ZN7S9914C23v12Ev();
extern void _ZN7S9914C23v13Ev();
extern void _ZN7S9914C23v14Ev();
extern void _ZN7S9914C23v15Ev();
extern void _ZN7S9914C23v16Ev();
extern void _ZN7S9914C23v17Ev();
extern void _ZN7S9914C23v18Ev();
extern void _ZN7S9914C23v19Ev();
extern void _ZN7S9914C23v20Ev();
extern void _ZN7S9914C23v21Ev();
extern void _ZN7S9914C23v22Ev();
static  VTBL_ENTRY vtc_S9914C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9914C2[0]),
  (VTBL_ENTRY)&_ZN7S9914C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9914C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9914C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9914C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9914C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9914C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9914C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S9914C2[];
extern  VTBL_ENTRY _ZTV7S9914C2[];
Class_Descriptor cd_S9914C2 = {  "S9914C2", // class name
  0,0,//no base classes
  &(vtc_S9914C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S9914C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9914C2),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9914C1  : S9914C2 {
  ::S3444C17_nt s9914c1f0;
  int s9914c1f1[3];
  virtual void  v1(); // _ZN7S9914C12v1Ev
  virtual void  v2(); // _ZN7S9914C12v2Ev
  virtual void  v3(); // _ZN7S9914C12v3Ev
  virtual void  v4(); // _ZN7S9914C12v4Ev
  ~S9914C1(); // tgen
  S9914C1(); // tgen
};
//SIG(1 S9914C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} v1 v2 v3 v4 FC7{ m Fi[4]} Fi[3]}


void  S9914C1 ::v1(){vfunc_called(this, "_ZN7S9914C12v1Ev");}
void  S9914C1 ::v2(){vfunc_called(this, "_ZN7S9914C12v2Ev");}
void  S9914C1 ::v3(){vfunc_called(this, "_ZN7S9914C12v3Ev");}
void  S9914C1 ::v4(){vfunc_called(this, "_ZN7S9914C12v4Ev");}
S9914C1 ::~S9914C1(){ note_dtor("S9914C1", this);} // tgen
S9914C1 ::S9914C1(){ note_ctor("S9914C1", this);} // tgen

static void Test_S9914C1()
{
  extern Class_Descriptor cd_S9914C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,20)];
    init_test(&cd_S9914C1, buf);
    S9914C1 *dp, &lv = *(dp=new (buf) S9914C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,76), "sizeof(S9914C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9914C1)");
    check_base_class_offset(lv, (S9914C2*), 0, "S9914C1");
    check_field_offset(lv, s9914c1f0, ABISELECT(68,48), "S9914C1.s9914c1f0");
    check_field_offset(lv, s9914c1f1, ABISELECT(84,64), "S9914C1.s9914c1f1");
    test_class_info(&lv, &cd_S9914C1);
    dp->~S9914C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9914C1(Test_S9914C1, "S9914C1", ABISELECT(96,76));

#else // __cplusplus

extern void _ZN7S9914C1C1Ev();
extern void _ZN7S9914C1D1Ev();
Name_Map name_map_S9914C1[] = {
  NSPAIR(_ZN7S9914C1C1Ev),
  NSPAIR(_ZN7S9914C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9914C2;
extern VTBL_ENTRY _ZTI7S9914C2[];
extern  VTBL_ENTRY _ZTV7S9914C2[];
static Base_Class bases_S9914C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9914C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9914C1[];
extern void _ZN7S9914C1D1Ev();
extern void _ZN7S9914C1D0Ev();
extern void _ZN7S9914C22v5Ev();
extern void _ZN7S9914C22v6Ev();
extern void _ZN7S9914C22v7Ev();
extern void _ZN7S9914C22v8Ev();
extern void _ZN7S9914C22v9Ev();
extern void _ZN7S9914C23v10Ev();
extern void _ZN7S9914C23v11Ev();
extern void _ZN7S9914C23v12Ev();
extern void _ZN7S9914C23v13Ev();
extern void _ZN7S9914C23v14Ev();
extern void _ZN7S9914C23v15Ev();
extern void _ZN7S9914C23v16Ev();
extern void _ZN7S9914C23v17Ev();
extern void _ZN7S9914C23v18Ev();
extern void _ZN7S9914C23v19Ev();
extern void _ZN7S9914C23v20Ev();
extern void _ZN7S9914C23v21Ev();
extern void _ZN7S9914C23v22Ev();
extern void _ZN7S9914C12v1Ev();
extern void _ZN7S9914C12v2Ev();
extern void _ZN7S9914C12v3Ev();
extern void _ZN7S9914C12v4Ev();
static  VTBL_ENTRY vtc_S9914C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9914C1[0]),
  (VTBL_ENTRY)&_ZN7S9914C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9914C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9914C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9914C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9914C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9914C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9914C22v9Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v10Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v11Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v12Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v13Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v14Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v15Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v16Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v17Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v18Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v19Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v20Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v21Ev,
  (VTBL_ENTRY)&_ZN7S9914C23v22Ev,
  (VTBL_ENTRY)&_ZN7S9914C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9914C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9914C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9914C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9914C1[];
extern  VTBL_ENTRY _ZTV7S9914C1[];
Class_Descriptor cd_S9914C1 = {  "S9914C1", // class name
  bases_S9914C1, 1,
  &(vtc_S9914C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,76), // object size
  NSPAIRA(_ZTI7S9914C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9914C1),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10034C2  {
  void *s10034c2f0;
  ::S4227C37 s10034c2f1;
  int s10034c2f2;
  ::S9141C28_nt s10034c2f3;
  unsigned int s10034c2f4:1;
  unsigned int s10034c2f5:1;
  unsigned int s10034c2f6:1;
  unsigned int s10034c2f7:1;
  unsigned int s10034c2f8:1;
  unsigned int s10034c2f9:1;
  unsigned int s10034c2f10:1;
  int s10034c2f11:3;
  int s10034c2f12:3;
  ::S5327C13_nt s10034c2f13;
  int s10034c2f14;
  virtual  ~S10034C2(); // _ZN8S10034C2D1Ev
  virtual void  v6(); // _ZN8S10034C22v6Ev
  virtual void  v7(); // _ZN8S10034C22v7Ev
  virtual void  v8(); // _ZN8S10034C22v8Ev
  virtual void  v9(); // _ZN8S10034C22v9Ev
  virtual void  v10(); // _ZN8S10034C23v10Ev
  virtual void  v11(); // _ZN8S10034C23v11Ev
  virtual void  v12(); // _ZN8S10034C23v12Ev
  virtual void  v13(); // _ZN8S10034C23v13Ev
  virtual void  v14(); // _ZN8S10034C23v14Ev
  virtual void  v15(); // _ZN8S10034C23v15Ev
  virtual void  v16(); // _ZN8S10034C23v16Ev
  virtual void  v17(); // _ZN8S10034C23v17Ev
  virtual void  v18(); // _ZN8S10034C23v18Ev
  virtual void  v19(); // _ZN8S10034C23v19Ev
  virtual void  v20(); // _ZN8S10034C23v20Ev
  virtual void  v21(); // _ZN8S10034C23v21Ev
  virtual void  v22(); // _ZN8S10034C23v22Ev
  virtual void  v23(); // _ZN8S10034C23v23Ev
  S10034C2(); // tgen
};
//SIG(-1 S10034C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 Fp FC2{ m} Fi FC3{ BC4{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC5{ BC4} Fi}


 S10034C2 ::~S10034C2(){ note_dtor("S10034C2", this);}
void  S10034C2 ::v6(){vfunc_called(this, "_ZN8S10034C22v6Ev");}
void  S10034C2 ::v7(){vfunc_called(this, "_ZN8S10034C22v7Ev");}
void  S10034C2 ::v8(){vfunc_called(this, "_ZN8S10034C22v8Ev");}
void  S10034C2 ::v9(){vfunc_called(this, "_ZN8S10034C22v9Ev");}
void  S10034C2 ::v10(){vfunc_called(this, "_ZN8S10034C23v10Ev");}
void  S10034C2 ::v11(){vfunc_called(this, "_ZN8S10034C23v11Ev");}
void  S10034C2 ::v12(){vfunc_called(this, "_ZN8S10034C23v12Ev");}
void  S10034C2 ::v13(){vfunc_called(this, "_ZN8S10034C23v13Ev");}
void  S10034C2 ::v14(){vfunc_called(this, "_ZN8S10034C23v14Ev");}
void  S10034C2 ::v15(){vfunc_called(this, "_ZN8S10034C23v15Ev");}
void  S10034C2 ::v16(){vfunc_called(this, "_ZN8S10034C23v16Ev");}
void  S10034C2 ::v17(){vfunc_called(this, "_ZN8S10034C23v17Ev");}
void  S10034C2 ::v18(){vfunc_called(this, "_ZN8S10034C23v18Ev");}
void  S10034C2 ::v19(){vfunc_called(this, "_ZN8S10034C23v19Ev");}
void  S10034C2 ::v20(){vfunc_called(this, "_ZN8S10034C23v20Ev");}
void  S10034C2 ::v21(){vfunc_called(this, "_ZN8S10034C23v21Ev");}
void  S10034C2 ::v22(){vfunc_called(this, "_ZN8S10034C23v22Ev");}
void  S10034C2 ::v23(){vfunc_called(this, "_ZN8S10034C23v23Ev");}
S10034C2 ::S10034C2(){ note_ctor("S10034C2", this);} // tgen

static void Test_S10034C2()
{
  extern Class_Descriptor cd_S10034C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S10034C2, buf);
    S10034C2 *dp, &lv = *(dp=new (buf) S10034C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S10034C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10034C2)");
    check_field_offset(lv, s10034c2f0, ABISELECT(8,4), "S10034C2.s10034c2f0");
    check_field_offset(lv, s10034c2f1, ABISELECT(16,8), "S10034C2.s10034c2f1");
    check_field_offset(lv, s10034c2f2, ABISELECT(20,12), "S10034C2.s10034c2f2");
    check_field_offset(lv, s10034c2f3, ABISELECT(24,16), "S10034C2.s10034c2f3");
    set_bf_and_test(lv, s10034c2f4, ABISELECT(40,28), 0, 1, 1, "S10034C2");
    set_bf_and_test(lv, s10034c2f5, ABISELECT(40,28), 1, 1, 1, "S10034C2");
    set_bf_and_test(lv, s10034c2f6, ABISELECT(40,28), 2, 1, 1, "S10034C2");
    set_bf_and_test(lv, s10034c2f7, ABISELECT(40,28), 3, 1, 1, "S10034C2");
    set_bf_and_test(lv, s10034c2f8, ABISELECT(40,28), 4, 1, 1, "S10034C2");
    set_bf_and_test(lv, s10034c2f9, ABISELECT(40,28), 5, 1, 1, "S10034C2");
    set_bf_and_test(lv, s10034c2f10, ABISELECT(40,28), 6, 1, 1, "S10034C2");
    set_bf_and_test(lv, s10034c2f11, ABISELECT(40,28), 7, 3, 1, "S10034C2");
    set_bf_and_test(lv, s10034c2f11, ABISELECT(40,28), 7, 3, hide_sll(1LL<<2), "S10034C2");
    set_bf_and_test(lv, s10034c2f12, ABISELECT(41,29), 2, 3, 1, "S10034C2");
    set_bf_and_test(lv, s10034c2f12, ABISELECT(41,29), 2, 3, hide_sll(1LL<<2), "S10034C2");
    check_field_offset(lv, s10034c2f13, ABISELECT(48,32), "S10034C2.s10034c2f13");
    check_field_offset(lv, s10034c2f14, ABISELECT(64,44), "S10034C2.s10034c2f14");
    test_class_info(&lv, &cd_S10034C2);
    dp->~S10034C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10034C2(Test_S10034C2, "S10034C2", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN8S10034C2C1Ev();
extern void _ZN8S10034C2D1Ev();
Name_Map name_map_S10034C2[] = {
  NSPAIR(_ZN8S10034C2C1Ev),
  NSPAIR(_ZN8S10034C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10034C2[];
extern void _ZN8S10034C2D1Ev();
extern void _ZN8S10034C2D0Ev();
extern void _ZN8S10034C22v6Ev();
extern void _ZN8S10034C22v7Ev();
extern void _ZN8S10034C22v8Ev();
extern void _ZN8S10034C22v9Ev();
extern void _ZN8S10034C23v10Ev();
extern void _ZN8S10034C23v11Ev();
extern void _ZN8S10034C23v12Ev();
extern void _ZN8S10034C23v13Ev();
extern void _ZN8S10034C23v14Ev();
extern void _ZN8S10034C23v15Ev();
extern void _ZN8S10034C23v16Ev();
extern void _ZN8S10034C23v17Ev();
extern void _ZN8S10034C23v18Ev();
extern void _ZN8S10034C23v19Ev();
extern void _ZN8S10034C23v20Ev();
extern void _ZN8S10034C23v21Ev();
extern void _ZN8S10034C23v22Ev();
extern void _ZN8S10034C23v23Ev();
static  VTBL_ENTRY vtc_S10034C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10034C2[0]),
  (VTBL_ENTRY)&_ZN8S10034C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10034C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10034C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10034C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10034C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10034C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v21Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v22Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v23Ev,
};
extern VTBL_ENTRY _ZTI8S10034C2[];
extern  VTBL_ENTRY _ZTV8S10034C2[];
Class_Descriptor cd_S10034C2 = {  "S10034C2", // class name
  0,0,//no base classes
  &(vtc_S10034C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI8S10034C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10034C2),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10034C1  : S10034C2 {
  ::S4227C27 s10034c1f0;
  int s10034c1f1;
  virtual void  v1(); // _ZN8S10034C12v1Ev
  virtual void  v2(); // _ZN8S10034C12v2Ev
  virtual void  v3(); // _ZN8S10034C12v3Ev
  virtual void  v4(); // _ZN8S10034C12v4Ev
  virtual void  v5(); // _ZN8S10034C12v5Ev
  ~S10034C1(); // tgen
  S10034C1(); // tgen
};
//SIG(1 S10034C1) C1{ BC2{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 Fp FC3{ m} Fi FC4{ BC5{ m Fp Fi[2]}} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:3 FC6{ BC5} Fi} v1 v2 v3 v4 v5 FC7{ m} Fi}


void  S10034C1 ::v1(){vfunc_called(this, "_ZN8S10034C12v1Ev");}
void  S10034C1 ::v2(){vfunc_called(this, "_ZN8S10034C12v2Ev");}
void  S10034C1 ::v3(){vfunc_called(this, "_ZN8S10034C12v3Ev");}
void  S10034C1 ::v4(){vfunc_called(this, "_ZN8S10034C12v4Ev");}
void  S10034C1 ::v5(){vfunc_called(this, "_ZN8S10034C12v5Ev");}
S10034C1 ::~S10034C1(){ note_dtor("S10034C1", this);} // tgen
S10034C1 ::S10034C1(){ note_ctor("S10034C1", this);} // tgen

static void Test_S10034C1()
{
  extern Class_Descriptor cd_S10034C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,15)];
    init_test(&cd_S10034C1, buf);
    S10034C1 *dp, &lv = *(dp=new (buf) S10034C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S10034C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10034C1)");
    check_base_class_offset(lv, (S10034C2*), 0, "S10034C1");
    check_field_offset(lv, s10034c1f0, ABISELECT(68,48), "S10034C1.s10034c1f0");
    check_field_offset(lv, s10034c1f1, ABISELECT(72,52), "S10034C1.s10034c1f1");
    test_class_info(&lv, &cd_S10034C1);
    dp->~S10034C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10034C1(Test_S10034C1, "S10034C1", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN8S10034C1C1Ev();
extern void _ZN8S10034C1D1Ev();
Name_Map name_map_S10034C1[] = {
  NSPAIR(_ZN8S10034C1C1Ev),
  NSPAIR(_ZN8S10034C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10034C2;
extern VTBL_ENTRY _ZTI8S10034C2[];
extern  VTBL_ENTRY _ZTV8S10034C2[];
static Base_Class bases_S10034C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10034C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10034C1[];
extern void _ZN8S10034C1D1Ev();
extern void _ZN8S10034C1D0Ev();
extern void _ZN8S10034C22v6Ev();
extern void _ZN8S10034C22v7Ev();
extern void _ZN8S10034C22v8Ev();
extern void _ZN8S10034C22v9Ev();
extern void _ZN8S10034C23v10Ev();
extern void _ZN8S10034C23v11Ev();
extern void _ZN8S10034C23v12Ev();
extern void _ZN8S10034C23v13Ev();
extern void _ZN8S10034C23v14Ev();
extern void _ZN8S10034C23v15Ev();
extern void _ZN8S10034C23v16Ev();
extern void _ZN8S10034C23v17Ev();
extern void _ZN8S10034C23v18Ev();
extern void _ZN8S10034C23v19Ev();
extern void _ZN8S10034C23v20Ev();
extern void _ZN8S10034C23v21Ev();
extern void _ZN8S10034C23v22Ev();
extern void _ZN8S10034C23v23Ev();
extern void _ZN8S10034C12v1Ev();
extern void _ZN8S10034C12v2Ev();
extern void _ZN8S10034C12v3Ev();
extern void _ZN8S10034C12v4Ev();
extern void _ZN8S10034C12v5Ev();
static  VTBL_ENTRY vtc_S10034C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10034C1[0]),
  (VTBL_ENTRY)&_ZN8S10034C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10034C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10034C22v6Ev,
  (VTBL_ENTRY)&_ZN8S10034C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10034C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10034C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v16Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v17Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v18Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v19Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v20Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v21Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v22Ev,
  (VTBL_ENTRY)&_ZN8S10034C23v23Ev,
  (VTBL_ENTRY)&_ZN8S10034C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10034C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10034C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10034C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10034C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S10034C1[];
extern  VTBL_ENTRY _ZTV8S10034C1[];
Class_Descriptor cd_S10034C1 = {  "S10034C1", // class name
  bases_S10034C1, 1,
  &(vtc_S10034C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI8S10034C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10034C1),27, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9564C2_nt  {
  virtual  ~S9564C2_nt(); // _ZN10S9564C2_ntD1Ev
  virtual void  v3(); // _ZN10S9564C2_nt2v3Ev
  virtual void  v4(); // _ZN10S9564C2_nt2v4Ev
  S9564C2_nt(); // tgen
};
//SIG(-1 S9564C2_nt) C1{ vd v1 v2}


 S9564C2_nt ::~S9564C2_nt(){ note_dtor("S9564C2_nt", this);}
void  S9564C2_nt ::v3(){vfunc_called(this, "_ZN10S9564C2_nt2v3Ev");}
void  S9564C2_nt ::v4(){vfunc_called(this, "_ZN10S9564C2_nt2v4Ev");}
S9564C2_nt ::S9564C2_nt(){ note_ctor("S9564C2_nt", this);} // tgen

//skip512 S9564C2_nt

#else // __cplusplus

extern void _ZN10S9564C2_ntC1Ev();
extern void _ZN10S9564C2_ntD1Ev();
Name_Map name_map_S9564C2_nt[] = {
  NSPAIR(_ZN10S9564C2_ntC1Ev),
  NSPAIR(_ZN10S9564C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9564C2_nt[];
extern void _ZN10S9564C2_ntD1Ev();
extern void _ZN10S9564C2_ntD0Ev();
extern void _ZN10S9564C2_nt2v3Ev();
extern void _ZN10S9564C2_nt2v4Ev();
static  VTBL_ENTRY vtc_S9564C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9564C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S9564C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9564C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9564C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S9564C2_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S9564C2_nt[];
VTBL_ENTRY *P__ZTI10S9564C2_nt = _ZTI10S9564C2_nt; 
extern  VTBL_ENTRY _ZTV10S9564C2_nt[];
Class_Descriptor cd_S9564C2_nt = {  "S9564C2_nt", // class name
  0,0,//no base classes
  &(vtc_S9564C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S9564C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9564C2_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  S9564C1  : S9564C2_nt {
  void *s9564c1f0;
  ::S3155C5 s9564c1f1;
  virtual void  v1(); // _ZN7S9564C12v1Ev
  virtual void  v2(); // _ZN7S9564C12v2Ev
  ~S9564C1(); // tgen
  S9564C1(); // tgen
};
//SIG(1 S9564C1) C1{ BC2{ vd v3 v4} v1 v2 Fp FC3{ Fp[2] FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} FC8{ BC9{ m FC10{ BC7} Fp Fi}} FC11{ BC9} FC12{ BC9} FC13{ BC5}}}


void  S9564C1 ::v1(){vfunc_called(this, "_ZN7S9564C12v1Ev");}
void  S9564C1 ::v2(){vfunc_called(this, "_ZN7S9564C12v2Ev");}
S9564C1 ::~S9564C1(){ note_dtor("S9564C1", this);} // tgen
S9564C1 ::S9564C1(){ note_ctor("S9564C1", this);} // tgen

static void Test_S9564C1()
{
  extern Class_Descriptor cd_S9564C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,30)];
    init_test(&cd_S9564C1, buf);
    S9564C1 *dp, &lv = *(dp=new (buf) S9564C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,116), "sizeof(S9564C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9564C1)");
    check_base_class_offset(lv, (S9564C2_nt*), 0, "S9564C1");
    check_field_offset(lv, s9564c1f0, ABISELECT(8,4), "S9564C1.s9564c1f0");
    check_field_offset(lv, s9564c1f1, ABISELECT(16,8), "S9564C1.s9564c1f1");
    test_class_info(&lv, &cd_S9564C1);
    dp->~S9564C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9564C1(Test_S9564C1, "S9564C1", ABISELECT(192,116));

#else // __cplusplus

extern void _ZN7S9564C1C1Ev();
extern void _ZN7S9564C1D1Ev();
Name_Map name_map_S9564C1[] = {
  NSPAIR(_ZN7S9564C1C1Ev),
  NSPAIR(_ZN7S9564C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9564C2_nt;
extern VTBL_ENTRY _ZTI10S9564C2_nt[];
extern  VTBL_ENTRY _ZTV10S9564C2_nt[];
static Base_Class bases_S9564C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9564C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9564C1[];
extern void _ZN7S9564C1D1Ev();
extern void _ZN7S9564C1D0Ev();
extern void _ZN10S9564C2_nt2v3Ev();
extern void _ZN10S9564C2_nt2v4Ev();
extern void _ZN7S9564C12v1Ev();
extern void _ZN7S9564C12v2Ev();
static  VTBL_ENTRY vtc_S9564C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9564C1[0]),
  (VTBL_ENTRY)&_ZN7S9564C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9564C1D0Ev,
  (VTBL_ENTRY)&_ZN10S9564C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S9564C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S9564C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9564C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9564C1[];
extern  VTBL_ENTRY _ZTV7S9564C1[];
Class_Descriptor cd_S9564C1 = {  "S9564C1", // class name
  bases_S9564C1, 1,
  &(vtc_S9564C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,116), // object size
  NSPAIRA(_ZTI7S9564C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9564C1),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  S9091C2  {
  virtual  ~S9091C2(); // _ZN7S9091C2D1Ev
  virtual void  v2(); // _ZN7S9091C22v2Ev
  S9091C2(); // tgen
};
//SIG(-1 S9091C2) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S9091C2C1Ev();
extern void _ZN7S9091C2D1Ev();
Name_Map name_map_S9091C2[] = {
  NSPAIR(_ZN7S9091C2C1Ev),
  NSPAIR(_ZN7S9091C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9091C2[];
extern void _ZN7S9091C2D1Ev();
extern void _ZN7S9091C2D0Ev();
extern void _ZN7S9091C22v2Ev();
static  VTBL_ENTRY vtc_S9091C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9091C2[0]),
  (VTBL_ENTRY)&_ZN7S9091C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9091C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9091C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S9091C2[];
extern  VTBL_ENTRY _ZTV7S9091C2[];
Class_Descriptor cd_S9091C2 = {  "S9091C2", // class name
  0,0,//no base classes
  &(vtc_S9091C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9091C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9091C2),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  S9091C1  : S9091C2 {
  void *s9091c1f0;
  ::S3155C5 s9091c1f1;
  virtual  ~S9091C1(); // _ZN7S9091C1D1Ev
  virtual void  v1(); // _ZN7S9091C12v1Ev
  S9091C1(); // tgen
};
//SIG(1 S9091C1) C1{ BC2{ vd v2} vd v1 Fp FC3{ Fp[2] FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} FC8{ BC9{ m FC10{ BC7} Fp Fi}} FC11{ BC9} FC12{ BC9} FC13{ BC5}}}


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

static void Test_S9091C1()
{
  extern Class_Descriptor cd_S9091C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,30)];
    init_test(&cd_S9091C1, buf);
    S9091C1 *dp, &lv = *(dp=new (buf) S9091C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,116), "sizeof(S9091C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9091C1)");
    check_base_class_offset(lv, (S9091C2*), 0, "S9091C1");
    check_field_offset(lv, s9091c1f0, ABISELECT(8,4), "S9091C1.s9091c1f0");
    check_field_offset(lv, s9091c1f1, ABISELECT(16,8), "S9091C1.s9091c1f1");
    test_class_info(&lv, &cd_S9091C1);
    dp->~S9091C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9091C1(Test_S9091C1, "S9091C1", ABISELECT(192,116));

#else // __cplusplus

extern void _ZN7S9091C1C1Ev();
extern void _ZN7S9091C1D1Ev();
Name_Map name_map_S9091C1[] = {
  NSPAIR(_ZN7S9091C1C1Ev),
  NSPAIR(_ZN7S9091C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9091C2;
extern VTBL_ENTRY _ZTI7S9091C2[];
extern  VTBL_ENTRY _ZTV7S9091C2[];
static Base_Class bases_S9091C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9091C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9091C1[];
extern void _ZN7S9091C1D1Ev();
extern void _ZN7S9091C1D0Ev();
extern void _ZN7S9091C22v2Ev();
extern void _ZN7S9091C12v1Ev();
static  VTBL_ENTRY vtc_S9091C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9091C1[0]),
  (VTBL_ENTRY)&_ZN7S9091C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9091C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9091C22v2Ev,
  (VTBL_ENTRY)&_ZN7S9091C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S9091C1[];
extern  VTBL_ENTRY _ZTV7S9091C1[];
Class_Descriptor cd_S9091C1 = {  "S9091C1", // class name
  bases_S9091C1, 1,
  &(vtc_S9091C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,116), // object size
  NSPAIRA(_ZTI7S9091C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9091C1),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  S4160C3_nt  {
  int s4160c3f0[28];
  virtual  ~S4160C3_nt(); // _ZN10S4160C3_ntD1Ev
  virtual void  v1(); // _ZN10S4160C3_nt2v1Ev
  virtual void  v2(); // _ZN10S4160C3_nt2v2Ev
  virtual void  v3(); // _ZN10S4160C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4160C3_nt2v4Ev
  virtual void  v5(); // _ZN10S4160C3_nt2v5Ev
  virtual void  v6(); // _ZN10S4160C3_nt2v6Ev
  virtual void  v7(); // _ZN10S4160C3_nt2v7Ev
  virtual void  v8(); // _ZN10S4160C3_nt2v8Ev
  virtual void  v9(); // _ZN10S4160C3_nt2v9Ev
  virtual void  v10(); // _ZN10S4160C3_nt3v10Ev
  virtual void  v11(); // _ZN10S4160C3_nt3v11Ev
  virtual void  v12(); // _ZN10S4160C3_nt3v12Ev
  virtual void  v13(); // _ZN10S4160C3_nt3v13Ev
  virtual void  v14(); // _ZN10S4160C3_nt3v14Ev
  virtual void  v15(); // _ZN10S4160C3_nt3v15Ev
  virtual void  v16(); // _ZN10S4160C3_nt3v16Ev
  virtual void  v17(); // _ZN10S4160C3_nt3v17Ev
  virtual void  v18(); // _ZN10S4160C3_nt3v18Ev
  virtual void  v19(); // _ZN10S4160C3_nt3v19Ev
  virtual void  v20(); // _ZN10S4160C3_nt3v20Ev
  virtual void  v21(); // _ZN10S4160C3_nt3v21Ev
  virtual void  v22(); // _ZN10S4160C3_nt3v22Ev
  virtual void  v23(); // _ZN10S4160C3_nt3v23Ev
  virtual void  v24(); // _ZN10S4160C3_nt3v24Ev
  virtual void  v25(); // _ZN10S4160C3_nt3v25Ev
  S4160C3_nt(); // tgen
};
//SIG(-1 S4160C3_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 Fi[28]}


 S4160C3_nt ::~S4160C3_nt(){ note_dtor("S4160C3_nt", this);}
void  S4160C3_nt ::v1(){vfunc_called(this, "_ZN10S4160C3_nt2v1Ev");}
void  S4160C3_nt ::v2(){vfunc_called(this, "_ZN10S4160C3_nt2v2Ev");}
void  S4160C3_nt ::v3(){vfunc_called(this, "_ZN10S4160C3_nt2v3Ev");}
void  S4160C3_nt ::v4(){vfunc_called(this, "_ZN10S4160C3_nt2v4Ev");}
void  S4160C3_nt ::v5(){vfunc_called(this, "_ZN10S4160C3_nt2v5Ev");}
void  S4160C3_nt ::v6(){vfunc_called(this, "_ZN10S4160C3_nt2v6Ev");}
void  S4160C3_nt ::v7(){vfunc_called(this, "_ZN10S4160C3_nt2v7Ev");}
void  S4160C3_nt ::v8(){vfunc_called(this, "_ZN10S4160C3_nt2v8Ev");}
void  S4160C3_nt ::v9(){vfunc_called(this, "_ZN10S4160C3_nt2v9Ev");}
void  S4160C3_nt ::v10(){vfunc_called(this, "_ZN10S4160C3_nt3v10Ev");}
void  S4160C3_nt ::v11(){vfunc_called(this, "_ZN10S4160C3_nt3v11Ev");}
void  S4160C3_nt ::v12(){vfunc_called(this, "_ZN10S4160C3_nt3v12Ev");}
void  S4160C3_nt ::v13(){vfunc_called(this, "_ZN10S4160C3_nt3v13Ev");}
void  S4160C3_nt ::v14(){vfunc_called(this, "_ZN10S4160C3_nt3v14Ev");}
void  S4160C3_nt ::v15(){vfunc_called(this, "_ZN10S4160C3_nt3v15Ev");}
void  S4160C3_nt ::v16(){vfunc_called(this, "_ZN10S4160C3_nt3v16Ev");}
void  S4160C3_nt ::v17(){vfunc_called(this, "_ZN10S4160C3_nt3v17Ev");}
void  S4160C3_nt ::v18(){vfunc_called(this, "_ZN10S4160C3_nt3v18Ev");}
void  S4160C3_nt ::v19(){vfunc_called(this, "_ZN10S4160C3_nt3v19Ev");}
void  S4160C3_nt ::v20(){vfunc_called(this, "_ZN10S4160C3_nt3v20Ev");}
void  S4160C3_nt ::v21(){vfunc_called(this, "_ZN10S4160C3_nt3v21Ev");}
void  S4160C3_nt ::v22(){vfunc_called(this, "_ZN10S4160C3_nt3v22Ev");}
void  S4160C3_nt ::v23(){vfunc_called(this, "_ZN10S4160C3_nt3v23Ev");}
void  S4160C3_nt ::v24(){vfunc_called(this, "_ZN10S4160C3_nt3v24Ev");}
void  S4160C3_nt ::v25(){vfunc_called(this, "_ZN10S4160C3_nt3v25Ev");}
S4160C3_nt ::S4160C3_nt(){ note_ctor("S4160C3_nt", this);} // tgen

//skip512 S4160C3_nt

#else // __cplusplus

extern void _ZN10S4160C3_ntC1Ev();
extern void _ZN10S4160C3_ntD1Ev();
Name_Map name_map_S4160C3_nt[] = {
  NSPAIR(_ZN10S4160C3_ntC1Ev),
  NSPAIR(_ZN10S4160C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4160C3_nt[];
extern void _ZN10S4160C3_ntD1Ev();
extern void _ZN10S4160C3_ntD0Ev();
extern void _ZN10S4160C3_nt2v1Ev();
extern void _ZN10S4160C3_nt2v2Ev();
extern void _ZN10S4160C3_nt2v3Ev();
extern void _ZN10S4160C3_nt2v4Ev();
extern void _ZN10S4160C3_nt2v5Ev();
extern void _ZN10S4160C3_nt2v6Ev();
extern void _ZN10S4160C3_nt2v7Ev();
extern void _ZN10S4160C3_nt2v8Ev();
extern void _ZN10S4160C3_nt2v9Ev();
extern void _ZN10S4160C3_nt3v10Ev();
extern void _ZN10S4160C3_nt3v11Ev();
extern void _ZN10S4160C3_nt3v12Ev();
extern void _ZN10S4160C3_nt3v13Ev();
extern void _ZN10S4160C3_nt3v14Ev();
extern void _ZN10S4160C3_nt3v15Ev();
extern void _ZN10S4160C3_nt3v16Ev();
extern void _ZN10S4160C3_nt3v17Ev();
extern void _ZN10S4160C3_nt3v18Ev();
extern void _ZN10S4160C3_nt3v19Ev();
extern void _ZN10S4160C3_nt3v20Ev();
extern void _ZN10S4160C3_nt3v21Ev();
extern void _ZN10S4160C3_nt3v22Ev();
extern void _ZN10S4160C3_nt3v23Ev();
extern void _ZN10S4160C3_nt3v24Ev();
extern void _ZN10S4160C3_nt3v25Ev();
static  VTBL_ENTRY vtc_S4160C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4160C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4160C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v25Ev,
};
extern VTBL_ENTRY _ZTI10S4160C3_nt[];
VTBL_ENTRY *P__ZTI10S4160C3_nt = _ZTI10S4160C3_nt; 
extern  VTBL_ENTRY _ZTV10S4160C3_nt[];
Class_Descriptor cd_S4160C3_nt = {  "S4160C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4160C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,116), // object size
  NSPAIRA(_ZTI10S4160C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4160C3_nt),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4160C2  : S4160C3_nt {
  void *s4160c2f0[2];
  int s4160c2f1;
  ::S9141C26 s4160c2f2;
  int s4160c2f3;
  virtual void  v26(); // _ZN7S4160C23v26Ev
  virtual void  v27(); // _ZN7S4160C23v27Ev
  ~S4160C2(); // tgen
  S4160C2(); // tgen
};
//SIG(-1 S4160C2) 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 Fi[28]} v1 v2 Fp[2] Fi FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}} Fi}


void  S4160C2 ::v26(){vfunc_called(this, "_ZN7S4160C23v26Ev");}
void  S4160C2 ::v27(){vfunc_called(this, "_ZN7S4160C23v27Ev");}
S4160C2 ::~S4160C2(){ note_dtor("S4160C2", this);} // tgen
S4160C2 ::S4160C2(){ note_ctor("S4160C2", this);} // tgen

static void Test_S4160C2()
{
  extern Class_Descriptor cd_S4160C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,39)];
    init_test(&cd_S4160C2, buf);
    S4160C2 *dp, &lv = *(dp=new (buf) S4160C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,152), "sizeof(S4160C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4160C2)");
    check_base_class_offset(lv, (S4160C3_nt*), 0, "S4160C2");
    check_field_offset(lv, s4160c2f0, ABISELECT(120,116), "S4160C2.s4160c2f0");
    check_field_offset(lv, s4160c2f1, ABISELECT(136,124), "S4160C2.s4160c2f1");
    check_field_offset(lv, s4160c2f2, ABISELECT(144,128), "S4160C2.s4160c2f2");
    check_field_offset(lv, s4160c2f3, ABISELECT(176,148), "S4160C2.s4160c2f3");
    test_class_info(&lv, &cd_S4160C2);
    dp->~S4160C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4160C2(Test_S4160C2, "S4160C2", ABISELECT(184,152));

#else // __cplusplus

extern void _ZN7S4160C2C1Ev();
extern void _ZN7S4160C2D1Ev();
Name_Map name_map_S4160C2[] = {
  NSPAIR(_ZN7S4160C2C1Ev),
  NSPAIR(_ZN7S4160C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4160C3_nt;
extern VTBL_ENTRY _ZTI10S4160C3_nt[];
extern  VTBL_ENTRY _ZTV10S4160C3_nt[];
static Base_Class bases_S4160C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4160C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4160C2[];
extern void _ZN7S4160C2D1Ev();
extern void _ZN7S4160C2D0Ev();
extern void _ZN10S4160C3_nt2v1Ev();
extern void _ZN10S4160C3_nt2v2Ev();
extern void _ZN10S4160C3_nt2v3Ev();
extern void _ZN10S4160C3_nt2v4Ev();
extern void _ZN10S4160C3_nt2v5Ev();
extern void _ZN10S4160C3_nt2v6Ev();
extern void _ZN10S4160C3_nt2v7Ev();
extern void _ZN10S4160C3_nt2v8Ev();
extern void _ZN10S4160C3_nt2v9Ev();
extern void _ZN10S4160C3_nt3v10Ev();
extern void _ZN10S4160C3_nt3v11Ev();
extern void _ZN10S4160C3_nt3v12Ev();
extern void _ZN10S4160C3_nt3v13Ev();
extern void _ZN10S4160C3_nt3v14Ev();
extern void _ZN10S4160C3_nt3v15Ev();
extern void _ZN10S4160C3_nt3v16Ev();
extern void _ZN10S4160C3_nt3v17Ev();
extern void _ZN10S4160C3_nt3v18Ev();
extern void _ZN10S4160C3_nt3v19Ev();
extern void _ZN10S4160C3_nt3v20Ev();
extern void _ZN10S4160C3_nt3v21Ev();
extern void _ZN10S4160C3_nt3v22Ev();
extern void _ZN10S4160C3_nt3v23Ev();
extern void _ZN10S4160C3_nt3v24Ev();
extern void _ZN10S4160C3_nt3v25Ev();
extern void _ZN7S4160C23v26Ev();
extern void _ZN7S4160C23v27Ev();
static  VTBL_ENTRY vtc_S4160C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4160C2[0]),
  (VTBL_ENTRY)&_ZN7S4160C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4160C2D0Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN7S4160C23v26Ev,
  (VTBL_ENTRY)&_ZN7S4160C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S4160C2[];
extern  VTBL_ENTRY _ZTV7S4160C2[];
Class_Descriptor cd_S4160C2 = {  "S4160C2", // class name
  bases_S4160C2, 1,
  &(vtc_S4160C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,152), // object size
  NSPAIRA(_ZTI7S4160C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4160C2),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  S4160C1  : S4160C2 {
  ~S4160C1(); // tgen
  S4160C1(); // tgen
};
//SIG(1 S4160C1) C1{ BC2{ BC3{ 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 Fi[28]} v26 v27 Fp[2] Fi FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} Fi}}


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

static void Test_S4160C1()
{
  extern Class_Descriptor cd_S4160C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,39)];
    init_test(&cd_S4160C1, buf);
    S4160C1 *dp, &lv = *(dp=new (buf) S4160C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,152), "sizeof(S4160C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4160C1)");
    check_base_class_offset(lv, (S4160C3_nt*)(S4160C2*), 0, "S4160C1");
    check_base_class_offset(lv, (S4160C2*), 0, "S4160C1");
    test_class_info(&lv, &cd_S4160C1);
    dp->~S4160C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4160C1(Test_S4160C1, "S4160C1", ABISELECT(184,152));

#else // __cplusplus

extern void _ZN7S4160C1C1Ev();
extern void _ZN7S4160C1D1Ev();
Name_Map name_map_S4160C1[] = {
  NSPAIR(_ZN7S4160C1C1Ev),
  NSPAIR(_ZN7S4160C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4160C3_nt;
extern VTBL_ENTRY _ZTI10S4160C3_nt[];
extern  VTBL_ENTRY _ZTV10S4160C3_nt[];
extern Class_Descriptor cd_S4160C2;
extern VTBL_ENTRY _ZTI7S4160C2[];
extern  VTBL_ENTRY _ZTV7S4160C2[];
static Base_Class bases_S4160C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4160C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4160C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4160C1[];
extern void _ZN7S4160C1D1Ev();
extern void _ZN7S4160C1D0Ev();
extern void _ZN10S4160C3_nt2v1Ev();
extern void _ZN10S4160C3_nt2v2Ev();
extern void _ZN10S4160C3_nt2v3Ev();
extern void _ZN10S4160C3_nt2v4Ev();
extern void _ZN10S4160C3_nt2v5Ev();
extern void _ZN10S4160C3_nt2v6Ev();
extern void _ZN10S4160C3_nt2v7Ev();
extern void _ZN10S4160C3_nt2v8Ev();
extern void _ZN10S4160C3_nt2v9Ev();
extern void _ZN10S4160C3_nt3v10Ev();
extern void _ZN10S4160C3_nt3v11Ev();
extern void _ZN10S4160C3_nt3v12Ev();
extern void _ZN10S4160C3_nt3v13Ev();
extern void _ZN10S4160C3_nt3v14Ev();
extern void _ZN10S4160C3_nt3v15Ev();
extern void _ZN10S4160C3_nt3v16Ev();
extern void _ZN10S4160C3_nt3v17Ev();
extern void _ZN10S4160C3_nt3v18Ev();
extern void _ZN10S4160C3_nt3v19Ev();
extern void _ZN10S4160C3_nt3v20Ev();
extern void _ZN10S4160C3_nt3v21Ev();
extern void _ZN10S4160C3_nt3v22Ev();
extern void _ZN10S4160C3_nt3v23Ev();
extern void _ZN10S4160C3_nt3v24Ev();
extern void _ZN10S4160C3_nt3v25Ev();
extern void _ZN7S4160C23v26Ev();
extern void _ZN7S4160C23v27Ev();
static  VTBL_ENTRY vtc_S4160C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4160C1[0]),
  (VTBL_ENTRY)&_ZN7S4160C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4160C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v1Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S4160C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN7S4160C23v26Ev,
  (VTBL_ENTRY)&_ZN7S4160C23v27Ev,
};
extern VTBL_ENTRY _ZTI7S4160C1[];
extern  VTBL_ENTRY _ZTV7S4160C1[];
Class_Descriptor cd_S4160C1 = {  "S4160C1", // class name
  bases_S4160C1, 2,
  &(vtc_S4160C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,152), // object size
  NSPAIRA(_ZTI7S4160C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4160C1),31, //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  S3573C3  : virtual S3577C4_nt {
  void *s3573c3f0[2];
  unsigned int s3573c3f1:1;
  virtual  ~S3573C3(); // _ZN7S3573C3D2Ev
  virtual void  v2(); // _ZN7S3573C32v2Ev
  virtual void  v3(); // _ZN7S3573C32v3Ev
  S3573C3(); // tgen
};
//SIG(-1 S3573C3) C1{ VBC2{ vd m Fi} vd v1 v2 Fp[2] Fi:1}


 S3573C3 ::~S3573C3(){ note_dtor("S3573C3", this);}
void  S3573C3 ::v2(){vfunc_called(this, "_ZN7S3573C32v2Ev");}
void  S3573C3 ::v3(){vfunc_called(this, "_ZN7S3573C32v3Ev");}
S3573C3 ::S3573C3(){ note_ctor("S3573C3", this);} // tgen

static void Test_S3573C3()
{
  extern Class_Descriptor cd_S3573C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S3573C3, buf);
    S3573C3 *dp, &lv = *(dp=new (buf) S3573C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S3573C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3573C3)");
    check_base_class_offset(lv, (S3577C4_nt*), ABISELECT(32,16), "S3573C3");
    check_field_offset(lv, s3573c3f0, ABISELECT(8,4), "S3573C3.s3573c3f0");
    set_bf_and_test(lv, s3573c3f1, ABISELECT(24,12), 0, 1, 1, "S3573C3");
    test_class_info(&lv, &cd_S3573C3);
    dp->~S3573C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3573C3(Test_S3573C3, "S3573C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S3573C3C1Ev();
extern void _ZN7S3573C3D2Ev();
Name_Map name_map_S3573C3[] = {
  NSPAIR(_ZN7S3573C3C1Ev),
  NSPAIR(_ZN7S3573C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S3573C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3573C3[];
extern void _ZN7S3573C3D1Ev();
extern void _ZN7S3573C3D0Ev();
extern void _ZN7S3573C32v2Ev();
extern void _ZN7S3573C32v3Ev();
extern void ABISELECT(_ZTv0_n24_N7S3573C3D1Ev,_ZTv0_n12_N7S3573C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S3573C3D1Ev,_ZThn16_N7S3573C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3573C3D0Ev,_ZTv0_n12_N7S3573C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S3573C3D0Ev,_ZThn16_N7S3573C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3573C3[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3573C3[0]),
  (VTBL_ENTRY)&_ZN7S3573C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3573C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3573C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3573C32v3Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S3573C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3573C3D1Ev,_ZTv0_n12_N7S3573C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3573C3D0Ev,_ZTv0_n12_N7S3573C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S3573C3[];
static  VTT_ENTRY vtt_S3573C3[] = {
  {&(_ZTV7S3573C3[3]),  3,12},
  {&(_ZTV7S3573C3[10]),  10,12},
};
extern VTBL_ENTRY _ZTI7S3573C3[];
extern  VTBL_ENTRY _ZTV7S3573C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3573C3[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3573C3D0Ev,_ZTv0_n12_N7S3573C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3573C3D0Ev,_ZThn16_N7S3573C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3573C3D1Ev,_ZTv0_n12_N7S3573C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3573C3D1Ev,_ZThn16_N7S3573C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3573C3 = {  "S3573C3", // class name
  bases_S3573C3, 1,
  &(vtc_S3573C3[0]), // expected_vtbl_contents
  &(vtt_S3573C3[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S3573C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3573C3),12, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3573C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3573C2  : S3573C3 {
  int s3573c2f0;
  unsigned int s3573c2f1:1;
  virtual void  v4(); // _ZN7S3573C22v4Ev
  virtual void  v5(); // _ZN7S3573C22v5Ev
  ~S3573C2(); // tgen
  S3573C2(); // tgen
};
//SIG(-1 S3573C2) C1{ BC2{ VBC3{ vd m Fi} vd v3 v4 Fp[2] Fi:1} v1 v2 Fi Fi:1}


void  S3573C2 ::v4(){vfunc_called(this, "_ZN7S3573C22v4Ev");}
void  S3573C2 ::v5(){vfunc_called(this, "_ZN7S3573C22v5Ev");}
S3573C2 ::~S3573C2(){ note_dtor("S3573C2", this);} // tgen
S3573C2 ::S3573C2(){ note_ctor("S3573C2", this);} // tgen

static void Test_S3573C2()
{
  extern Class_Descriptor cd_S3573C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S3573C2, buf);
    S3573C2 *dp, &lv = *(dp=new (buf) S3573C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S3573C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3573C2)");
    check_base_class_offset(lv, (S3577C4_nt*)(S3573C3*), ABISELECT(40,24), "S3573C2");
    check_base_class_offset(lv, (S3573C3*), 0, "S3573C2");
    check_field_offset(lv, s3573c2f0, ABISELECT(28,16), "S3573C2.s3573c2f0");
    set_bf_and_test(lv, s3573c2f1, ABISELECT(32,20), 0, 1, 1, "S3573C2");
    test_class_info(&lv, &cd_S3573C2);
    dp->~S3573C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3573C2(Test_S3573C2, "S3573C2", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S3573C2C1Ev();
extern void _ZN7S3573C2D1Ev();
Name_Map name_map_S3573C2[] = {
  NSPAIR(_ZN7S3573C2C1Ev),
  NSPAIR(_ZN7S3573C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S3573C3;
extern VTBL_ENTRY _ZTI7S3573C3[];
extern  VTBL_ENTRY _ZTV7S3573C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3573C3[];
static Base_Class bases_S3573C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(40,24), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3573C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3573C2[];
extern void _ZN7S3573C2D1Ev();
extern void _ZN7S3573C2D0Ev();
extern void _ZN7S3573C32v2Ev();
extern void _ZN7S3573C32v3Ev();
extern void _ZN7S3573C22v4Ev();
extern void _ZN7S3573C22v5Ev();
extern void ABISELECT(_ZTv0_n24_N7S3573C2D1Ev,_ZTv0_n12_N7S3573C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S3573C2D1Ev,_ZThn24_N7S3573C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3573C2D0Ev,_ZTv0_n12_N7S3573C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S3573C2D0Ev,_ZThn24_N7S3573C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3573C2[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3573C2[0]),
  (VTBL_ENTRY)&_ZN7S3573C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3573C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3573C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3573C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3573C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3573C22v5Ev,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S3573C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3573C2D1Ev,_ZTv0_n12_N7S3573C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3573C2D0Ev,_ZTv0_n12_N7S3573C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S3573C2[];
extern void _ZN7S3573C3D1Ev();
extern void _ZN7S3573C3D0Ev();
extern void _ZN7S3573C32v2Ev();
extern void _ZN7S3573C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3573C3__7S3573C2[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3573C3[0]),
  (VTBL_ENTRY)&_ZN7S3573C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3573C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3573C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3573C32v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3573C3D1Ev,_ZTv0_n12_N7S3573C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S3573C3D1Ev,_ZThn24_N7S3573C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3573C3D0Ev,_ZTv0_n12_N7S3573C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S3573C3D0Ev,_ZThn24_N7S3573C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3573C3__7S3573C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S3573C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3573C3D1Ev,_ZTv0_n12_N7S3573C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3573C3D0Ev,_ZTv0_n12_N7S3573C3D0Ev),
};
static  VTT_ENTRY vtt_S3573C2[] = {
  {&(_ZTV7S3573C2[3]),  3,14},
  {&(_tg__ZTV7S3573C3__7S3573C2[3]),  3,7},
  {&(_tg__ZTV10S3577C4_nt__7S3573C3__7S3573C2[3]),  3,5},
  {&(_ZTV7S3573C2[12]),  12,14},
};
extern VTBL_ENTRY _ZTI7S3573C2[];
extern  VTBL_ENTRY _ZTV7S3573C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3573C2[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3573C3D0Ev,_ZTv0_n12_N7S3573C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3573C3D0Ev,_ZThn24_N7S3573C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3573C3D1Ev,_ZTv0_n12_N7S3573C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3573C3D1Ev,_ZThn24_N7S3573C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3573C2D0Ev,_ZTv0_n12_N7S3573C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3573C2D0Ev,_ZThn24_N7S3573C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3573C2D1Ev,_ZTv0_n12_N7S3573C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3573C2D1Ev,_ZThn24_N7S3573C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3573C2 = {  "S3573C2", // class name
  bases_S3573C2, 2,
  &(vtc_S3573C2[0]), // expected_vtbl_contents
  &(vtt_S3573C2[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S3573C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3573C2),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3573C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3573C1  : S3573C2 {
  ::S9141C8_nt s3573c1f0;
  int s3573c1f1;
  ::S7874C9_nt s3573c1f2;
  int s3573c1f3;
  virtual void  v1(); // _ZN7S3573C12v1Ev
  ~S3573C1(); // tgen
  S3573C1(); // tgen
};
//SIG(1 S3573C1) C1{ BC2{ BC3{ VBC4{ vd m Fi} vd v2 v3 Fp[2] Fi:1} v4 v5 Fi Fi:1} v1 FC5{ m Fp} Fi FC6{ m Fp[3] Fi Fp Fi Fp[2] FC7{ m} FC7 Fi[10] Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:2 Fi:3 Fi:1 Fi:1} Fi}


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

static void Test_S3573C1()
{
  extern Class_Descriptor cd_S3573C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,33)];
    init_test(&cd_S3573C1, buf);
    S3573C1 *dp, &lv = *(dp=new (buf) S3573C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,128), "sizeof(S3573C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3573C1)");
    check_base_class_offset(lv, (S3577C4_nt*)(S3573C3*)(S3573C2*), ABISELECT(192,120), "S3573C1");
    check_base_class_offset(lv, (S3573C3*)(S3573C2*), 0, "S3573C1");
    check_base_class_offset(lv, (S3573C2*), 0, "S3573C1");
    check_field_offset(lv, s3573c1f0, ABISELECT(40,24), "S3573C1.s3573c1f0");
    check_field_offset(lv, s3573c1f1, ABISELECT(48,28), "S3573C1.s3573c1f1");
    check_field_offset(lv, s3573c1f2, ABISELECT(56,32), "S3573C1.s3573c1f2");
    check_field_offset(lv, s3573c1f3, ABISELECT(184,116), "S3573C1.s3573c1f3");
    test_class_info(&lv, &cd_S3573C1);
    dp->~S3573C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3573C1(Test_S3573C1, "S3573C1", ABISELECT(208,128));

#else // __cplusplus

extern void _ZN7S3573C1C1Ev();
extern void _ZN7S3573C1D1Ev();
Name_Map name_map_S3573C1[] = {
  NSPAIR(_ZN7S3573C1C1Ev),
  NSPAIR(_ZN7S3573C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S3573C3;
extern VTBL_ENTRY _ZTI7S3573C3[];
extern  VTBL_ENTRY _ZTV7S3573C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3573C3[];
extern Class_Descriptor cd_S3573C2;
extern VTBL_ENTRY _ZTI7S3573C2[];
extern  VTBL_ENTRY _ZTV7S3573C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3573C2[];
static Base_Class bases_S3573C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(192,120), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3573C3,    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
    2, //immediately_derived
  0, 0},
  {&cd_S3573C2,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S3573C1[];
extern void _ZN7S3573C1D1Ev();
extern void _ZN7S3573C1D0Ev();
extern void _ZN7S3573C32v2Ev();
extern void _ZN7S3573C32v3Ev();
extern void _ZN7S3573C22v4Ev();
extern void _ZN7S3573C22v5Ev();
extern void _ZN7S3573C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S3573C1D1Ev,_ZTv0_n12_N7S3573C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S3573C1D1Ev,_ZThn120_N7S3573C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3573C1D0Ev,_ZTv0_n12_N7S3573C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S3573C1D0Ev,_ZThn120_N7S3573C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3573C1[] = {
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3573C1[0]),
  (VTBL_ENTRY)&_ZN7S3573C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3573C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3573C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3573C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3573C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3573C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3573C12v1Ev,
  ABISELECT(-192,-120),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI7S3573C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3573C1D1Ev,_ZTv0_n12_N7S3573C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3573C1D0Ev,_ZTv0_n12_N7S3573C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S3573C1[];
extern void _ZN7S3573C2D1Ev();
extern void _ZN7S3573C2D0Ev();
extern void _ZN7S3573C32v2Ev();
extern void _ZN7S3573C32v3Ev();
extern void _ZN7S3573C22v4Ev();
extern void _ZN7S3573C22v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3573C2__7S3573C1[] = {
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3573C2[0]),
  (VTBL_ENTRY)&_ZN7S3573C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3573C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3573C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3573C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3573C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3573C22v5Ev,
};
extern void _ZN7S3573C3D1Ev();
extern void _ZN7S3573C3D0Ev();
extern void _ZN7S3573C32v2Ev();
extern void _ZN7S3573C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3573C37S3573C2__7S3573C1[] = {
  ABISELECT(192,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3573C3[0]),
  (VTBL_ENTRY)&_ZN7S3573C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3573C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3573C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3573C32v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3573C3D1Ev,_ZTv0_n12_N7S3573C3D1Ev)();
extern void ABISELECT(_ZThn192_N7S3573C3D1Ev,_ZThn120_N7S3573C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3573C3D0Ev,_ZTv0_n12_N7S3573C3D0Ev)();
extern void ABISELECT(_ZThn192_N7S3573C3D0Ev,_ZThn120_N7S3573C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3573C37S3573C2__7S3573C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI7S3573C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3573C3D1Ev,_ZTv0_n12_N7S3573C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3573C3D0Ev,_ZTv0_n12_N7S3573C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3573C2D1Ev,_ZTv0_n12_N7S3573C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S3573C2D1Ev,_ZThn120_N7S3573C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3573C2D0Ev,_ZTv0_n12_N7S3573C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S3573C2D0Ev,_ZThn120_N7S3573C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3573C2__7S3573C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-192,-120),
  (VTBL_ENTRY)&(_ZTI7S3573C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3573C2D1Ev,_ZTv0_n12_N7S3573C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3573C2D0Ev,_ZTv0_n12_N7S3573C2D0Ev),
};
static  VTT_ENTRY vtt_S3573C1[] = {
  {&(_ZTV7S3573C1[3]),  3,15},
  {&(_tg__ZTV7S3573C2__7S3573C1[3]),  3,9},
  {&(_tg__ZTV7S3573C37S3573C2__7S3573C1[3]),  3,7},
  {&(_tg__ZTV10S3577C4_nt__7S3573C37S3573C2__7S3573C1[3]),  3,5},
  {&(_tg__ZTV10S3577C4_nt__7S3573C2__7S3573C1[3]),  3,5},
  {&(_ZTV7S3573C1[13]),  13,15},
};
extern VTBL_ENTRY _ZTI7S3573C1[];
extern  VTBL_ENTRY _ZTV7S3573C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3573C1[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3573C2D0Ev,_ZTv0_n12_N7S3573C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S3573C2D0Ev,_ZThn120_N7S3573C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3573C2D1Ev,_ZTv0_n12_N7S3573C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S3573C2D1Ev,_ZThn120_N7S3573C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3573C3D0Ev,_ZTv0_n12_N7S3573C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S3573C3D0Ev,_ZThn120_N7S3573C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3573C3D1Ev,_ZTv0_n12_N7S3573C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S3573C3D1Ev,_ZThn120_N7S3573C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3573C1D0Ev,_ZTv0_n12_N7S3573C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S3573C1D0Ev,_ZThn120_N7S3573C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3573C1D1Ev,_ZTv0_n12_N7S3573C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S3573C1D1Ev,_ZThn120_N7S3573C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3573C1 = {  "S3573C1", // class name
  bases_S3573C1, 3,
  &(vtc_S3573C1[0]), // expected_vtbl_contents
  &(vtt_S3573C1[0]), // expected_vtt_contents
  ABISELECT(208,128), // object size
  NSPAIRA(_ZTI7S3573C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3573C1),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3573C1),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5594C2  {
  ::S9141C26 s5594c2f0;
  void  mf5594c2(); // _ZN7S5594C28mf5594c2Ev
};
//SIG(-1 S5594C2) C1{ m FC2{ BC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp Fi}}}


void  S5594C2 ::mf5594c2(){}

static void Test_S5594C2()
{
  {
    init_simple_test("S5594C2");
    S5594C2 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S5594C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5594C2)");
    check_field_offset(lv, s5594c2f0, 0, "S5594C2.s5594c2f0");
  }
}
static Arrange_To_Call_Me vS5594C2(Test_S5594C2, "S5594C2", ABISELECT(32,20));

#else // __cplusplus

extern VTBL_ENTRY _ZTI7S5594C2[];
VTBL_ENTRY *P__ZTI7S5594C2 = _ZTI7S5594C2; 
Class_Descriptor cd_S5594C2 = {  "S5594C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S5594C2),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  S5594C12  {
  ::S3444C17_nt s5594c12f0;
  ::S5327C13_nt s5594c12f1;
  ::S3214C23 s5594c12f2;
  void  mf5594c12(); // _ZN8S5594C129mf5594c12Ev
};
//SIG(-1 S5594C12) C1{ m FC2{ m Fi[4]} FC3{ BC4{ m Fp Fi[2]}} FC5{ BC4}}


void  S5594C12 ::mf5594c12(){}

static void Test_S5594C12()
{
  {
    init_simple_test("S5594C12");
    S5594C12 lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S5594C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5594C12)");
    check_field_offset(lv, s5594c12f0, 0, "S5594C12.s5594c12f0");
    check_field_offset(lv, s5594c12f1, 16, "S5594C12.s5594c12f1");
    check_field_offset(lv, s5594c12f2, ABISELECT(32,28), "S5594C12.s5594c12f2");
  }
}
static Arrange_To_Call_Me vS5594C12(Test_S5594C12, "S5594C12", ABISELECT(48,40));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5594C1  : S5594C2 , S3577C4_nt {
  ::S9141C28_nt s5594c1f0;
  ::S3444C17_nt s5594c1f1;
  ::S3214C22 s5594c1f2;
  int s5594c1f3;
  ::S5594C12 s5594c1f4;
  ::S9141C20_nt s5594c1f5;
  unsigned int s5594c1f6:1;
  virtual  ~S5594C1(); // _ZN7S5594C1D1Ev
  S5594C1(); // tgen
};
//SIG(1 S5594C1) C1{ BC2{ m FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}}} BC7{ vd m Fi} vd FC5 FC8{ m Fi[4]} FC9{ BC10{ BC6}} Fi FC11{ m FC8 FC12{ BC6} FC10} FC13{ BC14{ m FC10 Fp Fi}} Fi:1}


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

static void Test_S5594C1()
{
  extern Class_Descriptor cd_S5594C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(25,35)];
    init_test(&cd_S5594C1, buf);
    S5594C1 *dp, &lv = *(dp=new (buf) S5594C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,136), "sizeof(S5594C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5594C1)");
    check_base_class_offset(lv, (S5594C2*), ABISELECT(16,8), "S5594C1");
    check_base_class_offset(lv, (S3577C4_nt*), 0, "S5594C1");
    check_field_offset(lv, s5594c1f0, ABISELECT(48,28), "S5594C1.s5594c1f0");
    check_field_offset(lv, s5594c1f1, ABISELECT(64,40), "S5594C1.s5594c1f1");
    check_field_offset(lv, s5594c1f2, ABISELECT(80,56), "S5594C1.s5594c1f2");
    check_field_offset(lv, s5594c1f3, ABISELECT(96,68), "S5594C1.s5594c1f3");
    check_field_offset(lv, s5594c1f4, ABISELECT(104,72), "S5594C1.s5594c1f4");
    check_field_offset(lv, s5594c1f5, ABISELECT(152,112), "S5594C1.s5594c1f5");
    set_bf_and_test(lv, s5594c1f6, ABISELECT(184,132), 0, 1, 1, "S5594C1");
    test_class_info(&lv, &cd_S5594C1);
    dp->~S5594C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5594C1(Test_S5594C1, "S5594C1", ABISELECT(192,136));

#else // __cplusplus

extern void _ZN7S5594C1C1Ev();
extern void _ZN7S5594C1D1Ev();
Name_Map name_map_S5594C1[] = {
  NSPAIR(_ZN7S5594C1C1Ev),
  NSPAIR(_ZN7S5594C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5594C2;
extern VTBL_ENTRY _ZTI7S5594C2[];
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S5594C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5594C2,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3577C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5594C1[];
extern void _ZN7S5594C1D1Ev();
extern void _ZN7S5594C1D0Ev();
static  VTBL_ENTRY vtc_S5594C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5594C1[0]),
  (VTBL_ENTRY)&_ZN7S5594C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5594C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S5594C1[];
extern  VTBL_ENTRY _ZTV7S5594C1[];
Class_Descriptor cd_S5594C1 = {  "S5594C1", // class name
  bases_S5594C1, 2,
  &(vtc_S5594C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(192,136), // object size
  NSPAIRA(_ZTI7S5594C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5594C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7876C2  : virtual S3577C4_nt {
  int s7876c2f0[2];
  unsigned int s7876c2f1:1;
  unsigned int s7876c2f2:1;
  ::S9141C28_nt s7876c2f3;
  ::S9142C8_nt s7876c2f4;
  virtual  ~S7876C2(); // _ZN7S7876C2D2Ev
  virtual void  v8(); // _ZN7S7876C22v8Ev
  virtual void  v9(); // _ZN7S7876C22v9Ev
  virtual void  v10(); // _ZN7S7876C23v10Ev
  virtual void  v11(); // _ZN7S7876C23v11Ev
  virtual void  v12(); // _ZN7S7876C23v12Ev
  virtual void  v13(); // _ZN7S7876C23v13Ev
  virtual void  v14(); // _ZN7S7876C23v14Ev
  S7876C2(); // tgen
};
//SIG(-1 S7876C2) C1{ VBC2{ vd m Fi} vd v1 v2 v3 v4 v5 v6 v7 Fi[2] Fi:1 Fi:1 FC3{ BC4{ m Fp Fi[2]}} FC5{ m FC6{ m Fi[3]} FC6 Fc}}


 S7876C2 ::~S7876C2(){ note_dtor("S7876C2", this);}
void  S7876C2 ::v8(){vfunc_called(this, "_ZN7S7876C22v8Ev");}
void  S7876C2 ::v9(){vfunc_called(this, "_ZN7S7876C22v9Ev");}
void  S7876C2 ::v10(){vfunc_called(this, "_ZN7S7876C23v10Ev");}
void  S7876C2 ::v11(){vfunc_called(this, "_ZN7S7876C23v11Ev");}
void  S7876C2 ::v12(){vfunc_called(this, "_ZN7S7876C23v12Ev");}
void  S7876C2 ::v13(){vfunc_called(this, "_ZN7S7876C23v13Ev");}
void  S7876C2 ::v14(){vfunc_called(this, "_ZN7S7876C23v14Ev");}
S7876C2 ::S7876C2(){ note_ctor("S7876C2", this);} // tgen

static void Test_S7876C2()
{
  extern Class_Descriptor cd_S7876C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S7876C2, buf);
    S7876C2 *dp, &lv = *(dp=new (buf) S7876C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S7876C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7876C2)");
    check_base_class_offset(lv, (S3577C4_nt*), ABISELECT(72,56), "S7876C2");
    check_field_offset(lv, s7876c2f0, ABISELECT(8,4), "S7876C2.s7876c2f0");
    set_bf_and_test(lv, s7876c2f1, ABISELECT(16,12), 0, 1, 1, "S7876C2");
    set_bf_and_test(lv, s7876c2f2, ABISELECT(16,12), 1, 1, 1, "S7876C2");
    check_field_offset(lv, s7876c2f3, ABISELECT(24,16), "S7876C2.s7876c2f3");
    check_field_offset(lv, s7876c2f4, ABISELECT(40,28), "S7876C2.s7876c2f4");
    test_class_info(&lv, &cd_S7876C2);
    dp->~S7876C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7876C2(Test_S7876C2, "S7876C2", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN7S7876C2C1Ev();
extern void _ZN7S7876C2D2Ev();
Name_Map name_map_S7876C2[] = {
  NSPAIR(_ZN7S7876C2C1Ev),
  NSPAIR(_ZN7S7876C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S7876C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(72,56), //bcp->offset
    12, //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 _ZTI7S7876C2[];
extern void _ZN7S7876C2D1Ev();
extern void _ZN7S7876C2D0Ev();
extern void _ZN7S7876C22v8Ev();
extern void _ZN7S7876C22v9Ev();
extern void _ZN7S7876C23v10Ev();
extern void _ZN7S7876C23v11Ev();
extern void _ZN7S7876C23v12Ev();
extern void _ZN7S7876C23v13Ev();
extern void _ZN7S7876C23v14Ev();
extern void ABISELECT(_ZTv0_n24_N7S7876C2D1Ev,_ZTv0_n12_N7S7876C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7876C2D1Ev,_ZThn56_N7S7876C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7876C2D0Ev,_ZTv0_n12_N7S7876C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7876C2D0Ev,_ZThn56_N7S7876C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7876C2[] = {
  ABISELECT(72,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7876C2[0]),
  (VTBL_ENTRY)&_ZN7S7876C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7876C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7876C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7876C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v14Ev,
  ABISELECT(-72,-56),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S7876C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7876C2D1Ev,_ZTv0_n12_N7S7876C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7876C2D0Ev,_ZTv0_n12_N7S7876C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7876C2[];
static  VTT_ENTRY vtt_S7876C2[] = {
  {&(_ZTV7S7876C2[3]),  3,17},
  {&(_ZTV7S7876C2[15]),  15,17},
};
extern VTBL_ENTRY _ZTI7S7876C2[];
extern  VTBL_ENTRY _ZTV7S7876C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7876C2[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7876C2D0Ev,_ZTv0_n12_N7S7876C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7876C2D0Ev,_ZThn56_N7S7876C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7876C2D1Ev,_ZTv0_n12_N7S7876C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7876C2D1Ev,_ZThn56_N7S7876C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7876C2 = {  "S7876C2", // class name
  bases_S7876C2, 1,
  &(vtc_S7876C2[0]), // expected_vtbl_contents
  &(vtt_S7876C2[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI7S7876C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7876C2),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7876C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7876C1  : S7876C2 {
  ::S5327C13_nt s7876c1f0;
  void *s7876c1f1[2];
  int s7876c1f2;
  ::S4227C37 s7876c1f3;
  unsigned int s7876c1f4:1;
  virtual void  v1(); // _ZN7S7876C12v1Ev
  virtual void  v2(); // _ZN7S7876C12v2Ev
  virtual void  v3(); // _ZN7S7876C12v3Ev
  virtual void  v4(); // _ZN7S7876C12v4Ev
  virtual void  v5(); // _ZN7S7876C12v5Ev
  virtual void  v6(); // _ZN7S7876C12v6Ev
  virtual void  v7(); // _ZN7S7876C12v7Ev
  ~S7876C1(); // tgen
  S7876C1(); // tgen
};
//SIG(1 S7876C1) C1{ BC2{ VBC3{ vd m Fi} vd v8 v9 v10 v11 v12 v13 v14 Fi[2] Fi:1 Fi:1 FC4{ BC5{ m Fp Fi[2]}} FC6{ m FC7{ m Fi[3]} FC7 Fc}} v1 v2 v3 v4 v5 v6 v7 FC8{ BC5} Fp[2] Fi FC9{ m} Fi:1}


void  S7876C1 ::v1(){vfunc_called(this, "_ZN7S7876C12v1Ev");}
void  S7876C1 ::v2(){vfunc_called(this, "_ZN7S7876C12v2Ev");}
void  S7876C1 ::v3(){vfunc_called(this, "_ZN7S7876C12v3Ev");}
void  S7876C1 ::v4(){vfunc_called(this, "_ZN7S7876C12v4Ev");}
void  S7876C1 ::v5(){vfunc_called(this, "_ZN7S7876C12v5Ev");}
void  S7876C1 ::v6(){vfunc_called(this, "_ZN7S7876C12v6Ev");}
void  S7876C1 ::v7(){vfunc_called(this, "_ZN7S7876C12v7Ev");}
S7876C1 ::~S7876C1(){ note_dtor("S7876C1", this);} // tgen
S7876C1 ::S7876C1(){ note_ctor("S7876C1", this);} // tgen

static void Test_S7876C1()
{
  extern Class_Descriptor cd_S7876C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,24)];
    init_test(&cd_S7876C1, buf);
    S7876C1 *dp, &lv = *(dp=new (buf) S7876C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,92), "sizeof(S7876C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7876C1)");
    check_base_class_offset(lv, (S3577C4_nt*)(S7876C2*), ABISELECT(112,84), "S7876C1");
    check_base_class_offset(lv, (S7876C2*), 0, "S7876C1");
    check_field_offset(lv, s7876c1f0, ABISELECT(72,56), "S7876C1.s7876c1f0");
    check_field_offset(lv, s7876c1f1, ABISELECT(88,68), "S7876C1.s7876c1f1");
    check_field_offset(lv, s7876c1f2, ABISELECT(104,76), "S7876C1.s7876c1f2");
    check_field_offset(lv, s7876c1f3, ABISELECT(108,80), "S7876C1.s7876c1f3");
    set_bf_and_test(lv, s7876c1f4, ABISELECT(109,81), 0, 1, 1, "S7876C1");
    test_class_info(&lv, &cd_S7876C1);
    dp->~S7876C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7876C1(Test_S7876C1, "S7876C1", ABISELECT(128,92));

#else // __cplusplus

extern void _ZN7S7876C1C1Ev();
extern void _ZN7S7876C1D1Ev();
Name_Map name_map_S7876C1[] = {
  NSPAIR(_ZN7S7876C1C1Ev),
  NSPAIR(_ZN7S7876C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S7876C2;
extern VTBL_ENTRY _ZTI7S7876C2[];
extern  VTBL_ENTRY _ZTV7S7876C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7876C2[];
static Base_Class bases_S7876C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(112,84), //bcp->offset
    19, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7876C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7876C1[];
extern void _ZN7S7876C1D1Ev();
extern void _ZN7S7876C1D0Ev();
extern void _ZN7S7876C22v8Ev();
extern void _ZN7S7876C22v9Ev();
extern void _ZN7S7876C23v10Ev();
extern void _ZN7S7876C23v11Ev();
extern void _ZN7S7876C23v12Ev();
extern void _ZN7S7876C23v13Ev();
extern void _ZN7S7876C23v14Ev();
extern void _ZN7S7876C12v1Ev();
extern void _ZN7S7876C12v2Ev();
extern void _ZN7S7876C12v3Ev();
extern void _ZN7S7876C12v4Ev();
extern void _ZN7S7876C12v5Ev();
extern void _ZN7S7876C12v6Ev();
extern void _ZN7S7876C12v7Ev();
extern void ABISELECT(_ZTv0_n24_N7S7876C1D1Ev,_ZTv0_n12_N7S7876C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7876C1D1Ev,_ZThn84_N7S7876C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7876C1D0Ev,_ZTv0_n12_N7S7876C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S7876C1D0Ev,_ZThn84_N7S7876C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7876C1[] = {
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7876C1[0]),
  (VTBL_ENTRY)&_ZN7S7876C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7876C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7876C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7876C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v14Ev,
  (VTBL_ENTRY)&_ZN7S7876C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7876C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7876C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7876C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7876C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7876C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7876C12v7Ev,
  ABISELECT(-112,-84),
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI7S7876C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7876C1D1Ev,_ZTv0_n12_N7S7876C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7876C1D0Ev,_ZTv0_n12_N7S7876C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7876C1[];
extern void _ZN7S7876C2D1Ev();
extern void _ZN7S7876C2D0Ev();
extern void _ZN7S7876C22v8Ev();
extern void _ZN7S7876C22v9Ev();
extern void _ZN7S7876C23v10Ev();
extern void _ZN7S7876C23v11Ev();
extern void _ZN7S7876C23v12Ev();
extern void _ZN7S7876C23v13Ev();
extern void _ZN7S7876C23v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7876C2__7S7876C1[] = {
  ABISELECT(112,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7876C2[0]),
  (VTBL_ENTRY)&_ZN7S7876C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7876C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7876C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7876C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v13Ev,
  (VTBL_ENTRY)&_ZN7S7876C23v14Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7876C2D1Ev,_ZTv0_n12_N7S7876C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7876C2D1Ev,_ZThn84_N7S7876C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7876C2D0Ev,_ZTv0_n12_N7S7876C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7876C2D0Ev,_ZThn84_N7S7876C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S7876C2__7S7876C1[] = {
  ABISELECT(-112,-84),
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI7S7876C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7876C2D1Ev,_ZTv0_n12_N7S7876C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7876C2D0Ev,_ZTv0_n12_N7S7876C2D0Ev),
};
static  VTT_ENTRY vtt_S7876C1[] = {
  {&(_ZTV7S7876C1[3]),  3,24},
  {&(_tg__ZTV7S7876C2__7S7876C1[3]),  3,12},
  {&(_tg__ZTV10S3577C4_nt__7S7876C2__7S7876C1[3]),  3,5},
  {&(_ZTV7S7876C1[22]),  22,24},
};
extern VTBL_ENTRY _ZTI7S7876C1[];
extern  VTBL_ENTRY _ZTV7S7876C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7876C1[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7876C2D0Ev,_ZTv0_n12_N7S7876C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7876C2D0Ev,_ZThn84_N7S7876C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7876C2D1Ev,_ZTv0_n12_N7S7876C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7876C2D1Ev,_ZThn84_N7S7876C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7876C1D0Ev,_ZTv0_n12_N7S7876C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7876C1D0Ev,_ZThn84_N7S7876C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7876C1D1Ev,_ZTv0_n12_N7S7876C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7876C1D1Ev,_ZThn84_N7S7876C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7876C1 = {  "S7876C1", // class name
  bases_S7876C1, 2,
  &(vtc_S7876C1[0]), // expected_vtbl_contents
  &(vtt_S7876C1[0]), // expected_vtt_contents
  ABISELECT(128,92), // object size
  NSPAIRA(_ZTI7S7876C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7876C1),24, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7876C1),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN7S7528C3C1Ev();
extern void _ZN7S7528C3D1Ev();
Name_Map name_map_S7528C3[] = {
  NSPAIR(_ZN7S7528C3C1Ev),
  NSPAIR(_ZN7S7528C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7528C3[];
extern void _ZN7S7528C32v1Ev();
static  VTBL_ENTRY vtc_S7528C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C3[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
};
extern VTBL_ENTRY _ZTI7S7528C3[];
extern  VTBL_ENTRY _ZTV7S7528C3[];
Class_Descriptor cd_S7528C3 = {  "S7528C3", // class name
  0,0,//no base classes
  &(vtc_S7528C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7528C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7528C3),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  S7528C4  : virtual S20997C6 , virtual S7528C3 , S4227C37 {
  virtual  ~S7528C4(); // _ZN7S7528C4D2Ev
  S7528C4(); // tgen
};
//SIG(-1 S7528C4) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S7528C4()
{
  extern Class_Descriptor cd_S7528C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7528C4, buf);
    S7528C4 *dp, &lv = *(dp=new (buf) S7528C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S7528C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7528C4)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S7528C4");
    check_base_class_offset(lv, (S7528C3*), 0, "S7528C4");
    check_base_class_offset(lv, (S4227C37*), 0, "S7528C4");
    test_class_info(&lv, &cd_S7528C4);
    dp->~S7528C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7528C4(Test_S7528C4, "S7528C4", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S7528C4C1Ev();
extern void _ZN7S7528C4D2Ev();
Name_Map name_map_S7528C4[] = {
  NSPAIR(_ZN7S7528C4C1Ev),
  NSPAIR(_ZN7S7528C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7528C3;
extern VTBL_ENTRY _ZTI7S7528C3[];
extern  VTBL_ENTRY _ZTV7S7528C3[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S7528C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7528C3,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7528C4[];
extern void _ZN7S7528C32v1Ev();
extern void _ZN7S7528C4D1Ev();
extern void _ZN7S7528C4D0Ev();
static  VTBL_ENTRY vtc_S7528C4[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C4[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7528C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7528C4D0Ev,
};
extern VTBL_ENTRY _ZTV7S7528C4[];
static  VTT_ENTRY vtt_S7528C4[] = {
  {&(_ZTV7S7528C4[5]),  5,8},
  {&(_ZTV7S7528C4[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7528C4[];
extern  VTBL_ENTRY _ZTV7S7528C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C4[];
Class_Descriptor cd_S7528C4 = {  "S7528C4", // class name
  bases_S7528C4, 3,
  &(vtc_S7528C4[0]), // expected_vtbl_contents
  &(vtt_S7528C4[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S7528C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7528C4),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7528C4),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  S7528C8  : virtual S4227C37 , virtual S7528C4 {
  virtual void  v2(); // _ZN7S7528C82v2Ev
  ~S7528C8(); // tgen
  S7528C8(); // tgen
};
//SIG(-1 S7528C8) C1{ VBC2{ m} VBC3{ VBC4{ m FL[5]} VBC5{ v2} BC2 vd} v1}


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

static void Test_S7528C8()
{
  extern Class_Descriptor cd_S7528C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7528C8, buf);
    S7528C8 *dp, &lv = *(dp=new (buf) S7528C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S7528C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7528C8)");
    /*is_ambiguous_... S7528C8::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), ABISELECT(8,4), "S7528C8");
    check_base_class_offset(lv, (S20997C6*)(S7528C4*), ABISELECT(8,4), "S7528C8");
    check_base_class_offset(lv, (S7528C3*)(S7528C4*), 0, "S7528C8");
    check_base_class_offset(lv, (S4227C37*)(S7528C4*), 0, "S7528C8");
    check_base_class_offset(lv, (S7528C4*), 0, "S7528C8");
    test_class_info(&lv, &cd_S7528C8);
    dp->~S7528C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7528C8(Test_S7528C8, "S7528C8", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN7S7528C8C1Ev();
extern void _ZN7S7528C8D1Ev();
Name_Map name_map_S7528C8[] = {
  NSPAIR(_ZN7S7528C8C1Ev),
  NSPAIR(_ZN7S7528C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7528C3;
extern VTBL_ENTRY _ZTI7S7528C3[];
extern  VTBL_ENTRY _ZTV7S7528C3[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7528C4;
extern VTBL_ENTRY _ZTI7S7528C4[];
extern  VTBL_ENTRY _ZTV7S7528C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C4[];
static Base_Class bases_S7528C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7528C3,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S7528C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7528C8[];
extern void _ZN7S7528C32v1Ev();
extern void _ZN7S7528C8D1Ev();
extern void _ZN7S7528C8D0Ev();
extern void _ZN7S7528C82v2Ev();
static  VTBL_ENTRY vtc_S7528C8[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C8[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7528C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7528C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7528C82v2Ev,
};
extern VTBL_ENTRY _ZTV7S7528C8[];
extern void _ZN7S7528C32v1Ev();
extern void _ZN7S7528C4D1Ev();
extern void _ZN7S7528C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7528C4__7S7528C8[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C4[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7528C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7528C4D0Ev,
};
static  VTT_ENTRY vtt_S7528C8[] = {
  {&(_ZTV7S7528C8[8]),  8,12},
  {&(_ZTV7S7528C8[8]),  8,12},
  {&(_ZTV7S7528C8[8]),  8,12},
  {&(_tg__ZTV7S7528C4__7S7528C8[5]),  5,8},
  {&(_tg__ZTV7S7528C4__7S7528C8[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S7528C8[];
extern  VTBL_ENTRY _ZTV7S7528C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C8[];
Class_Descriptor cd_S7528C8 = {  "S7528C8", // class name
  bases_S7528C8, 5,
  &(vtc_S7528C8[0]), // expected_vtbl_contents
  &(vtt_S7528C8[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI7S7528C8),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7528C8),12, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7528C8),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7528C9  : virtual S7528C3 {
  ::S21125C6 s7528c9f0[9];
  ~S7528C9(); // tgen
  S7528C9(); // tgen
};
//SIG(-1 S7528C9) C1{ VBC2{ v1} FC3{ BC4{ v2} VBC5{ m FL[5]} BC6{ m} Fp[10]}[9]}


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

static void Test_S7528C9()
{
  extern Class_Descriptor cd_S7528C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S7528C9, buf);
    S7528C9 *dp, &lv = *(dp=new (buf) S7528C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S7528C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7528C9)");
    check_base_class_offset(lv, (S7528C3*), 0, "S7528C9");
    check_field_offset(lv, s7528c9f0, ABISELECT(8,4), "S7528C9.s7528c9f0");
    test_class_info(&lv, &cd_S7528C9);
    dp->~S7528C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7528C9(Test_S7528C9, "S7528C9", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN7S7528C9C1Ev();
extern void _ZN7S7528C9D1Ev();
Name_Map name_map_S7528C9[] = {
  NSPAIR(_ZN7S7528C9C1Ev),
  NSPAIR(_ZN7S7528C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7528C3;
extern VTBL_ENTRY _ZTI7S7528C3[];
extern  VTBL_ENTRY _ZTV7S7528C3[];
static Base_Class bases_S7528C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7528C3,    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 _ZTI7S7528C9[];
extern void _ZN7S7528C32v1Ev();
static  VTBL_ENTRY vtc_S7528C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C9[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
};
extern VTBL_ENTRY _ZTV7S7528C9[];
static  VTT_ENTRY vtt_S7528C9[] = {
  {&(_ZTV7S7528C9[4]),  4,5},
  {&(_ZTV7S7528C9[4]),  4,5},
};
extern VTBL_ENTRY _ZTI7S7528C9[];
extern  VTBL_ENTRY _ZTV7S7528C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C9[];
Class_Descriptor cd_S7528C9 = {  "S7528C9", // class name
  bases_S7528C9, 1,
  &(vtc_S7528C9[0]), // expected_vtbl_contents
  &(vtt_S7528C9[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI7S7528C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7528C9),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7528C9),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  S7528C2  : virtual S7528C3 , virtual S7528C4 , virtual S10258C6_nt , virtual S7528C8 , virtual S7528C9 {
  virtual  ~S7528C2(); // _ZN7S7528C2D2Ev
  S7528C2(); // tgen
};
//SIG(-1 S7528C2) C1{ VBC2{ v1} VBC3{ VBC4{ m FL[5]} VBC2 BC5{ m} vd} VBC6{ m FL[4]} VBC7{ VBC5 VBC3 v2} VBC8{ VBC2 FC9{ BC10{ v3} VBC4 BC5 Fp[10]}[9]} vd}


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

static void Test_S7528C2()
{
  extern Class_Descriptor cd_S7528C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(156,210)];
    init_test(&cd_S7528C2, buf);
    S7528C2 *dp, &lv = *(dp=new (buf) S7528C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1240,836), "sizeof(S7528C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7528C2)");
    check_base_class_offset(lv, (S7528C3*), 0, "S7528C2");
    check_base_class_offset(lv, (S7528C3*)(S7528C4*), 0, "S7528C2");
    check_base_class_offset(lv, (S7528C3*)(S7528C9*), 0, "S7528C2");
    check_base_class_offset(lv, (S20997C6*)(S7528C4*), ABISELECT(8,4), "S7528C2");
    check_base_class_offset(lv, (S4227C37*)(S7528C4*), 0, "S7528C2");
    check_base_class_offset(lv, (S7528C4*), 0, "S7528C2");
    check_base_class_offset(lv, (S7528C4*)(S7528C8*), 0, "S7528C2");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(48,44), "S7528C2");
    /*is_ambiguous_... S7528C8::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7528C8*), ABISELECT(80,76), "S7528C2");
    check_base_class_offset(lv, (S7528C8*), 0, "S7528C2");
    check_base_class_offset(lv, (S7528C9*), ABISELECT(80,76), "S7528C2");
    test_class_info(&lv, &cd_S7528C2);
    dp->~S7528C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7528C2(Test_S7528C2, "S7528C2", ABISELECT(1240,836));

#else // __cplusplus

extern void _ZN7S7528C2C1Ev();
extern void _ZN7S7528C2D2Ev();
Name_Map name_map_S7528C2[] = {
  NSPAIR(_ZN7S7528C2C1Ev),
  NSPAIR(_ZN7S7528C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7528C3;
extern VTBL_ENTRY _ZTI7S7528C3[];
extern  VTBL_ENTRY _ZTV7S7528C3[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7528C4;
extern VTBL_ENTRY _ZTI7S7528C4[];
extern  VTBL_ENTRY _ZTV7S7528C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C4[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7528C8;
extern VTBL_ENTRY _ZTI7S7528C8[];
extern  VTBL_ENTRY _ZTV7S7528C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C8[];
extern Class_Descriptor cd_S7528C9;
extern VTBL_ENTRY _ZTI7S7528C9[];
extern  VTBL_ENTRY _ZTV7S7528C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C9[];
static Base_Class bases_S7528C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7528C3,    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_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7528C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S10258C6_nt,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    ABISELECT(80,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7528C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7528C9,    ABISELECT(80,76), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7528C2[];
extern void _ZN7S7528C32v1Ev();
extern void _ZN7S7528C2D1Ev();
extern void _ZN7S7528C2D0Ev();
extern void _ZN7S7528C82v2Ev();
extern void _ZN7S7528C32v1Ev();
static  VTBL_ENTRY vtc_S7528C2[] = {
  ABISELECT(80,76),
  0,
  ABISELECT(48,44),
  0,
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C2[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7528C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7528C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7528C82v2Ev,
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  (VTBL_ENTRY)&(_ZTI7S7528C2[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
};
extern VTBL_ENTRY _ZTV7S7528C2[];
extern void _ZN7S7528C32v1Ev();
extern void _ZN7S7528C4D1Ev();
extern void _ZN7S7528C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7528C4__7S7528C2[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C4[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7528C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7528C4D0Ev,
};
extern void _ZN7S7528C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7528C8D1Ev,_ZTv0_n24_N7S7528C8D1Ev)();
extern void _ZN7S7528C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7528C8D0Ev,_ZTv0_n24_N7S7528C8D0Ev)();
extern void _ZN7S7528C8D0Ev() __attribute__((weak));
extern void _ZN7S7528C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7528C8__7S7528C2[] = {
  0,
  ABISELECT(80,76),
  0,
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C8[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7528C8D1Ev,_ZTv0_n24_N7S7528C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7528C8D0Ev,_ZTv0_n24_N7S7528C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7528C82v2Ev,
};
extern void _ZN7S7528C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7528C9__7S7528C2[] = {
  ABISELECT(-80,-76),
  ABISELECT(-80,-76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C9[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
};
extern void _ZN7S7528C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7528C3__7S7528C9__7S7528C2[] = {
  0,
  ABISELECT(80,76),
  (VTBL_ENTRY)&(_ZTI7S7528C9[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
};
static  VTT_ENTRY vtt_S7528C2[] = {
  {&(_ZTV7S7528C2[12]),  12,21},
  {&(_ZTV7S7528C2[12]),  12,21},
  {&(_ZTV7S7528C2[12]),  12,21},
  {&(_ZTV7S7528C2[12]),  12,21},
  {&(_ZTV7S7528C2[20]),  20,21},
  {&(_tg__ZTV7S7528C4__7S7528C2[5]),  5,8},
  {&(_tg__ZTV7S7528C4__7S7528C2[5]),  5,8},
  {&(_tg__ZTV7S7528C8__7S7528C2[8]),  8,12},
  {&(_tg__ZTV7S7528C8__7S7528C2[8]),  8,12},
  {&(_tg__ZTV7S7528C8__7S7528C2[8]),  8,12},
  {&(_tg__ZTV7S7528C9__7S7528C2[4]),  4,5},
  {&(_tg__ZTV7S7528C3__7S7528C9__7S7528C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7528C2[];
extern  VTBL_ENTRY _ZTV7S7528C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C2[];
static VTBL_ENTRY alt_thunk_names129[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7528C8D0Ev,_ZTv0_n24_N7S7528C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7528C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7528C8D1Ev,_ZTv0_n24_N7S7528C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7528C8D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7528C2 = {  "S7528C2", // class name
  bases_S7528C2, 8,
  &(vtc_S7528C2[0]), // expected_vtbl_contents
  &(vtt_S7528C2[0]), // expected_vtt_contents
  ABISELECT(1240,836), // object size
  NSPAIRA(_ZTI7S7528C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7528C2),21, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7528C2),12, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names129,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7528C12  : S20997C6 {
};
//SIG(-1 S7528C12) C1{ BC2{ m FL[5]}}



static void Test_S7528C12()
{
  extern Class_Descriptor cd_S7528C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,11)];
    init_test(&cd_S7528C12, buf);
    S7528C12 &lv = *(new (buf) S7528C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), 40, "sizeof(S7528C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7528C12)");
    check_base_class_offset(lv, (S20997C6*), 0, "S7528C12");
    test_class_info(&lv, &cd_S7528C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7528C12(Test_S7528C12, "S7528C12", 40);

#else // __cplusplus

extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
static Base_Class bases_S7528C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S7528C12[];
Class_Descriptor cd_S7528C12 = {  "S7528C12", // class name
  bases_S7528C12, 1,
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI8S7528C12),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  S7528C11  : virtual S7528C12 {
  long double s7528c11f0;
  ~S7528C11(); // tgen
  S7528C11(); // tgen
};
//SIG(-1 S7528C11) C1{ VBC2{ BC3{ m FL[5]}} FD}


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

static void Test_S7528C11()
{
  extern Class_Descriptor cd_S7528C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,15)];
    init_test(&cd_S7528C11, buf);
    S7528C11 *dp, &lv = *(dp=new (buf) S7528C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S7528C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7528C11)");
    check_base_class_offset(lv, (S20997C6*)(S7528C12*), ABISELECT(32,16), "S7528C11");
    check_base_class_offset(lv, (S7528C12*), ABISELECT(32,16), "S7528C11");
    check_field_offset(lv, s7528c11f0, ABISELECT(16,4), "S7528C11.s7528c11f0");
    test_class_info(&lv, &cd_S7528C11);
    dp->~S7528C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7528C11(Test_S7528C11, "S7528C11", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN8S7528C11C1Ev();
extern void _ZN8S7528C11D1Ev();
Name_Map name_map_S7528C11[] = {
  NSPAIR(_ZN8S7528C11C1Ev),
  NSPAIR(_ZN8S7528C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7528C12;
extern VTBL_ENTRY _ZTI8S7528C12[];
static Base_Class bases_S7528C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7528C12,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S7528C11[];
static  VTBL_ENTRY vtc_S7528C11[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S7528C11[0]),
};
extern VTBL_ENTRY _ZTV8S7528C11[];
static  VTT_ENTRY vtt_S7528C11[] = {
  {&(_ZTV8S7528C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S7528C11[];
extern  VTBL_ENTRY _ZTV8S7528C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7528C11[];
Class_Descriptor cd_S7528C11 = {  "S7528C11", // class name
  bases_S7528C11, 2,
  &(vtc_S7528C11[0]), // expected_vtbl_contents
  &(vtt_S7528C11[0]), // expected_vtt_contents
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI8S7528C11),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S7528C11),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S7528C11),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  S7528C1  : S7528C2 , S7528C11 , virtual S20997C37 {
  ~S7528C1(); // tgen
  S7528C1(); // tgen
};
//SIG(1 S7528C1) C1{ BC2{ VBC3{ v1} VBC4{ VBC5{ m FL[5]} VBC3 BC6{ m} vd} VBC7{ m FL[4]} VBC8{ VBC6 VBC4 v2} VBC9{ VBC3 FC10{ BC11{ v3} VBC5 BC6 Fp[10]}[9]} vd} BC12{ VBC13{ BC5} FD} VBC14{ m FC6}}


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

static void Test_S7528C1()
{
  extern Class_Descriptor cd_S7528C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(84,225)];
    init_test(&cd_S7528C1, buf);
    S7528C1 *dp, &lv = *(dp=new (buf) S7528C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1328,896), "sizeof(S7528C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7528C1)");
    check_base_class_offset(lv, (S7528C3*)(S7528C2*), 0, "S7528C1");
    check_base_class_offset(lv, (S7528C3*)(S7528C4*), 0, "S7528C1");
    check_base_class_offset(lv, (S7528C3*)(S7528C9*), 0, "S7528C1");
    check_base_class_offset(lv, (S20997C6*)(S7528C4*), ABISELECT(48,20), "S7528C1");
    check_base_class_offset(lv, (S4227C37*)(S7528C4*), 0, "S7528C1");
    check_base_class_offset(lv, (S7528C4*)(S7528C2*), 0, "S7528C1");
    check_base_class_offset(lv, (S7528C4*)(S7528C8*), 0, "S7528C1");
    check_base_class_offset(lv, (S10258C6_nt*)(S7528C2*), ABISELECT(88,60), "S7528C1");
    /*is_ambiguous_... S7528C8::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S7528C8*), ABISELECT(120,92), "S7528C1");
    check_base_class_offset(lv, (S7528C8*)(S7528C2*), 0, "S7528C1");
    check_base_class_offset(lv, (S7528C9*)(S7528C2*), ABISELECT(120,92), "S7528C1");
    check_base_class_offset(lv, (S7528C2*), 0, "S7528C1");
    check_base_class_offset(lv, (S20997C6*)(S7528C12*), ABISELECT(1280,852), "S7528C1");
    check_base_class_offset(lv, (S7528C12*)(S7528C11*), ABISELECT(1280,852), "S7528C1");
    check_base_class_offset(lv, (S7528C11*), ABISELECT(16,4), "S7528C1");
    check_base_class_offset(lv, (S20997C37*), ABISELECT(1320,892), "S7528C1");
    test_class_info(&lv, &cd_S7528C1);
    dp->~S7528C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7528C1(Test_S7528C1, "S7528C1", ABISELECT(1328,896));

#else // __cplusplus

extern void _ZN7S7528C1C1Ev();
extern void _ZN7S7528C1D1Ev();
Name_Map name_map_S7528C1[] = {
  NSPAIR(_ZN7S7528C1C1Ev),
  NSPAIR(_ZN7S7528C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7528C3;
extern VTBL_ENTRY _ZTI7S7528C3[];
extern  VTBL_ENTRY _ZTV7S7528C3[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7528C4;
extern VTBL_ENTRY _ZTI7S7528C4[];
extern  VTBL_ENTRY _ZTV7S7528C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C4[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S7528C8;
extern VTBL_ENTRY _ZTI7S7528C8[];
extern  VTBL_ENTRY _ZTV7S7528C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C8[];
extern Class_Descriptor cd_S7528C9;
extern VTBL_ENTRY _ZTI7S7528C9[];
extern  VTBL_ENTRY _ZTV7S7528C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C9[];
extern Class_Descriptor cd_S7528C2;
extern VTBL_ENTRY _ZTI7S7528C2[];
extern  VTBL_ENTRY _ZTV7S7528C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S7528C12;
extern VTBL_ENTRY _ZTI8S7528C12[];
extern Class_Descriptor cd_S7528C11;
extern VTBL_ENTRY _ZTI8S7528C11[];
extern  VTBL_ENTRY _ZTV8S7528C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S7528C11[];
extern Class_Descriptor cd_S20997C37;
extern VTBL_ENTRY _ZTI9S20997C37[];
static Base_Class bases_S7528C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7528C3,    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
    3, //immediately_derived
  0, 1},
  {&cd_S20997C6,    ABISELECT(48,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7528C4,    0, //bcp->offset
    -1, //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
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S10258C6_nt,    ABISELECT(88,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(120,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7528C8,    0, //bcp->offset
    -1, //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
    8, //immediately_derived
  0, 1},
  {&cd_S7528C9,    ABISELECT(120,92), //bcp->offset
    21, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7528C2,    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
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1280,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7528C12,    ABISELECT(1280,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7528C11,    ABISELECT(16,4), //bcp->offset
    18, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C37,    ABISELECT(1320,892), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S7528C1[];
extern void _ZN7S7528C32v1Ev();
extern void _ZN7S7528C1D1Ev();
extern void _ZN7S7528C1D0Ev();
extern void _ZN7S7528C82v2Ev();
extern void _ZN7S7528C32v1Ev();
static  VTBL_ENTRY vtc_S7528C1[] = {
  ABISELECT(1320,892),
  ABISELECT(1280,852),
  ABISELECT(120,92),
  0,
  ABISELECT(88,60),
  0,
  0,
  ABISELECT(120,92),
  0,
  0,
  ABISELECT(48,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C1[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7528C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7528C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7528C82v2Ev,
  ABISELECT(1264,848),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S7528C1[0]),
  ABISELECT(-120,-92),
  ABISELECT(-120,-92),
  ABISELECT(-120,-92),
  (VTBL_ENTRY)&(_ZTI7S7528C1[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
};
extern VTBL_ENTRY _ZTV7S7528C1[];
extern void _ZN7S7528C32v1Ev();
extern void _ZN7S7528C2D1Ev();
extern void _ZN7S7528C2D0Ev();
extern void _ZN7S7528C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7528C2__7S7528C1[] = {
  ABISELECT(120,92),
  0,
  ABISELECT(88,60),
  0,
  0,
  ABISELECT(120,92),
  0,
  0,
  ABISELECT(48,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C2[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7528C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7528C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7528C82v2Ev,
};
extern void _ZN7S7528C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7528C9__7S7528C2__7S7528C1[] = {
  ABISELECT(-120,-92),
  ABISELECT(-120,-92),
  ABISELECT(-120,-92),
  (VTBL_ENTRY)&(_ZTI7S7528C2[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S7528C11__7S7528C1[] = {
  ABISELECT(1264,848),
  0,
  (VTBL_ENTRY)&(_ZTI8S7528C11[0]),
};
extern void _ZN7S7528C32v1Ev();
extern void _ZN7S7528C4D1Ev();
extern void _ZN7S7528C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7528C4__7S7528C1[] = {
  0,
  ABISELECT(48,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C4[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7528C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7528C4D0Ev,
};
extern void _ZN7S7528C32v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7528C8D1Ev,_ZTv0_n24_N7S7528C8D1Ev)();
extern void _ZN7S7528C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7528C8D0Ev,_ZTv0_n24_N7S7528C8D0Ev)();
extern void _ZN7S7528C8D0Ev() __attribute__((weak));
extern void _ZN7S7528C82v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7528C8__7S7528C1[] = {
  0,
  ABISELECT(120,92),
  0,
  0,
  ABISELECT(48,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C8[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7528C8D1Ev,_ZTv0_n24_N7S7528C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7528C8D0Ev,_ZTv0_n24_N7S7528C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7528C82v2Ev,
};
extern void _ZN7S7528C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7528C9__7S7528C1[] = {
  ABISELECT(-120,-92),
  ABISELECT(-120,-92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7528C9[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
};
extern void _ZN7S7528C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7528C3__7S7528C9__7S7528C1[] = {
  0,
  ABISELECT(120,92),
  (VTBL_ENTRY)&(_ZTI7S7528C9[0]),
  (VTBL_ENTRY)&_ZN7S7528C32v1Ev,
};
static  VTT_ENTRY vtt_S7528C1[] = {
  {&(_ZTV7S7528C1[14]),  14,26},
  {&(_tg__ZTV7S7528C2__7S7528C1[12]),  12,16},
  {&(_tg__ZTV7S7528C2__7S7528C1[12]),  12,16},
  {&(_tg__ZTV7S7528C2__7S7528C1[12]),  12,16},
  {&(_tg__ZTV7S7528C2__7S7528C1[12]),  12,16},
  {&(_tg__ZTV7S7528C9__7S7528C2__7S7528C1[4]),  4,5},
  {&(_tg__ZTV8S7528C11__7S7528C1[3]),  3,3},
  {&(_ZTV7S7528C1[14]),  14,26},
  {&(_ZTV7S7528C1[14]),  14,26},
  {&(_ZTV7S7528C1[14]),  14,26},
  {&(_ZTV7S7528C1[25]),  25,26},
  {&(_ZTV7S7528C1[21]),  21,26},
  {&(_tg__ZTV7S7528C4__7S7528C1[5]),  5,8},
  {&(_tg__ZTV7S7528C4__7S7528C1[5]),  5,8},
  {&(_tg__ZTV7S7528C8__7S7528C1[8]),  8,12},
  {&(_tg__ZTV7S7528C8__7S7528C1[8]),  8,12},
  {&(_tg__ZTV7S7528C8__7S7528C1[8]),  8,12},
  {&(_tg__ZTV7S7528C9__7S7528C1[4]),  4,5},
  {&(_tg__ZTV7S7528C3__7S7528C9__7S7528C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7528C1[];
extern  VTBL_ENTRY _ZTV7S7528C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7528C1[];
static VTBL_ENTRY alt_thunk_names130[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7528C8D0Ev,_ZTv0_n24_N7S7528C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S7528C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7528C8D1Ev,_ZTv0_n24_N7S7528C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S7528C8D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7528C1 = {  "S7528C1", // class name
  bases_S7528C1, 13,
  &(vtc_S7528C1[0]), // expected_vtbl_contents
  &(vtt_S7528C1[0]), // expected_vtt_contents
  ABISELECT(1328,896), // object size
  NSPAIRA(_ZTI7S7528C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7528C1),26, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7528C1),19, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names130,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1019C3_nt  : S3214C8_nt {
};
//SIG(-1 S1019C3_nt) C1{ BC2{ m Fi}}



//skip512 S1019C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S3214C8_nt;
extern VTBL_ENTRY _ZTI10S3214C8_nt[];
static Base_Class bases_S1019C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1019C3_nt[];
VTBL_ENTRY *P__ZTI10S1019C3_nt = _ZTI10S1019C3_nt; 
Class_Descriptor cd_S1019C3_nt = {  "S1019C3_nt", // class name
  bases_S1019C3_nt, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S1019C3_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  S1019C2  : S1019C3_nt {
  virtual  ~S1019C2(); // _ZN7S1019C2D1Ev
  virtual void  v10(); // _ZN7S1019C23v10Ev
  virtual void  v11(); // _ZN7S1019C23v11Ev
  virtual void  v12(); // _ZN7S1019C23v12Ev
  virtual void  v13(); // _ZN7S1019C23v13Ev
  virtual void  v14(); // _ZN7S1019C23v14Ev
  virtual void  v15(); // _ZN7S1019C23v15Ev
  virtual void  v16(); // _ZN7S1019C23v16Ev
  virtual void  v17(); // _ZN7S1019C23v17Ev
  virtual void  v18(); // _ZN7S1019C23v18Ev
  S1019C2(); // tgen
};
//SIG(-1 S1019C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S1019C2 ::~S1019C2(){ note_dtor("S1019C2", this);}
void  S1019C2 ::v10(){vfunc_called(this, "_ZN7S1019C23v10Ev");}
void  S1019C2 ::v11(){vfunc_called(this, "_ZN7S1019C23v11Ev");}
void  S1019C2 ::v12(){vfunc_called(this, "_ZN7S1019C23v12Ev");}
void  S1019C2 ::v13(){vfunc_called(this, "_ZN7S1019C23v13Ev");}
void  S1019C2 ::v14(){vfunc_called(this, "_ZN7S1019C23v14Ev");}
void  S1019C2 ::v15(){vfunc_called(this, "_ZN7S1019C23v15Ev");}
void  S1019C2 ::v16(){vfunc_called(this, "_ZN7S1019C23v16Ev");}
void  S1019C2 ::v17(){vfunc_called(this, "_ZN7S1019C23v17Ev");}
void  S1019C2 ::v18(){vfunc_called(this, "_ZN7S1019C23v18Ev");}
S1019C2 ::S1019C2(){ note_ctor("S1019C2", this);} // tgen

static void Test_S1019C2()
{
  extern Class_Descriptor cd_S1019C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1019C2, buf);
    S1019C2 *dp, &lv = *(dp=new (buf) S1019C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1019C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1019C2)");
    check_base_class_offset(lv, (S3214C8_nt*)(S1019C3_nt*), ABISELECT(8,4), "S1019C2");
    check_base_class_offset(lv, (S1019C3_nt*), ABISELECT(8,4), "S1019C2");
    test_class_info(&lv, &cd_S1019C2);
    dp->~S1019C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1019C2(Test_S1019C2, "S1019C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1019C2C1Ev();
extern void _ZN7S1019C2D1Ev();
Name_Map name_map_S1019C2[] = {
  NSPAIR(_ZN7S1019C2C1Ev),
  NSPAIR(_ZN7S1019C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3214C8_nt;
extern VTBL_ENTRY _ZTI10S3214C8_nt[];
extern Class_Descriptor cd_S1019C3_nt;
extern VTBL_ENTRY _ZTI10S1019C3_nt[];
static Base_Class bases_S1019C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1019C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1019C2[];
extern void _ZN7S1019C2D1Ev();
extern void _ZN7S1019C2D0Ev();
extern void _ZN7S1019C23v10Ev();
extern void _ZN7S1019C23v11Ev();
extern void _ZN7S1019C23v12Ev();
extern void _ZN7S1019C23v13Ev();
extern void _ZN7S1019C23v14Ev();
extern void _ZN7S1019C23v15Ev();
extern void _ZN7S1019C23v16Ev();
extern void _ZN7S1019C23v17Ev();
extern void _ZN7S1019C23v18Ev();
static  VTBL_ENTRY vtc_S1019C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1019C2[0]),
  (VTBL_ENTRY)&_ZN7S1019C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1019C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S1019C2[];
extern  VTBL_ENTRY _ZTV7S1019C2[];
Class_Descriptor cd_S1019C2 = {  "S1019C2", // class name
  bases_S1019C2, 2,
  &(vtc_S1019C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1019C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1019C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1019C7_nt  {
  int s1019c7f0[2];
  void  mf1019c7(); // _ZN10S1019C7_nt8mf1019c7Ev
};
//SIG(-1 S1019C7_nt) C1{ m Fi[2]}


void  S1019C7_nt ::mf1019c7(){}

//skip512 S1019C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1019C6_nt  {
  ::S3214C4_nt s1019c6f0;
  ::S1019C7_nt s1019c6f1;
  void  mf1019c6(); // _ZN10S1019C6_nt8mf1019c6Ev
};
//SIG(-1 S1019C6_nt) C1{ m FC2{ m Fi[2]} FC3{ m Fi[2]}}


void  S1019C6_nt ::mf1019c6(){}

//skip512 S1019C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1019C1  : S1019C2 {
  void *s1019c1f0[2];
  ::S3214C4_nt s1019c1f1;
  ::S1019C6_nt s1019c1f2;
  int s1019c1f3;
  ::S1019C6_nt s1019c1f4;
  ::S9141C8_nt s1019c1f5;
  virtual  ~S1019C1(); // _ZN7S1019C1D1Ev
  virtual void  v1(); // _ZN7S1019C12v1Ev
  virtual void  v2(); // _ZN7S1019C12v2Ev
  virtual void  v3(); // _ZN7S1019C12v3Ev
  virtual void  v4(); // _ZN7S1019C12v4Ev
  virtual void  v5(); // _ZN7S1019C12v5Ev
  virtual void  v6(); // _ZN7S1019C12v6Ev
  virtual void  v7(); // _ZN7S1019C12v7Ev
  virtual void  v8(); // _ZN7S1019C12v8Ev
  virtual void  v9(); // _ZN7S1019C12v9Ev
  S1019C1(); // tgen
};
//SIG(1 S1019C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[2] FC5{ m Fi[2]} FC6{ m FC5 FC7{ m Fi[2]}} Fi FC6 FC8{ m Fp}}


 S1019C1 ::~S1019C1(){ note_dtor("S1019C1", this);}
void  S1019C1 ::v1(){vfunc_called(this, "_ZN7S1019C12v1Ev");}
void  S1019C1 ::v2(){vfunc_called(this, "_ZN7S1019C12v2Ev");}
void  S1019C1 ::v3(){vfunc_called(this, "_ZN7S1019C12v3Ev");}
void  S1019C1 ::v4(){vfunc_called(this, "_ZN7S1019C12v4Ev");}
void  S1019C1 ::v5(){vfunc_called(this, "_ZN7S1019C12v5Ev");}
void  S1019C1 ::v6(){vfunc_called(this, "_ZN7S1019C12v6Ev");}
void  S1019C1 ::v7(){vfunc_called(this, "_ZN7S1019C12v7Ev");}
void  S1019C1 ::v8(){vfunc_called(this, "_ZN7S1019C12v8Ev");}
void  S1019C1 ::v9(){vfunc_called(this, "_ZN7S1019C12v9Ev");}
S1019C1 ::S1019C1(){ note_ctor("S1019C1", this);} // tgen

static void Test_S1019C1()
{
  extern Class_Descriptor cd_S1019C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S1019C1, buf);
    S1019C1 *dp, &lv = *(dp=new (buf) S1019C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S1019C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1019C1)");
    check_base_class_offset(lv, (S3214C8_nt*)(S1019C3_nt*)(S1019C2*), ABISELECT(8,4), "S1019C1");
    check_base_class_offset(lv, (S1019C3_nt*)(S1019C2*), ABISELECT(8,4), "S1019C1");
    check_base_class_offset(lv, (S1019C2*), 0, "S1019C1");
    check_field_offset(lv, s1019c1f0, ABISELECT(16,8), "S1019C1.s1019c1f0");
    check_field_offset(lv, s1019c1f1, ABISELECT(32,16), "S1019C1.s1019c1f1");
    check_field_offset(lv, s1019c1f2, ABISELECT(40,24), "S1019C1.s1019c1f2");
    check_field_offset(lv, s1019c1f3, ABISELECT(56,40), "S1019C1.s1019c1f3");
    check_field_offset(lv, s1019c1f4, ABISELECT(60,44), "S1019C1.s1019c1f4");
    check_field_offset(lv, s1019c1f5, ABISELECT(80,60), "S1019C1.s1019c1f5");
    test_class_info(&lv, &cd_S1019C1);
    dp->~S1019C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1019C1(Test_S1019C1, "S1019C1", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN7S1019C1C1Ev();
extern void _ZN7S1019C1D1Ev();
Name_Map name_map_S1019C1[] = {
  NSPAIR(_ZN7S1019C1C1Ev),
  NSPAIR(_ZN7S1019C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3214C8_nt;
extern VTBL_ENTRY _ZTI10S3214C8_nt[];
extern Class_Descriptor cd_S1019C3_nt;
extern VTBL_ENTRY _ZTI10S1019C3_nt[];
extern Class_Descriptor cd_S1019C2;
extern VTBL_ENTRY _ZTI7S1019C2[];
extern  VTBL_ENTRY _ZTV7S1019C2[];
static Base_Class bases_S1019C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1019C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1019C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1019C1[];
extern void _ZN7S1019C1D1Ev();
extern void _ZN7S1019C1D0Ev();
extern void _ZN7S1019C23v10Ev();
extern void _ZN7S1019C23v11Ev();
extern void _ZN7S1019C23v12Ev();
extern void _ZN7S1019C23v13Ev();
extern void _ZN7S1019C23v14Ev();
extern void _ZN7S1019C23v15Ev();
extern void _ZN7S1019C23v16Ev();
extern void _ZN7S1019C23v17Ev();
extern void _ZN7S1019C23v18Ev();
extern void _ZN7S1019C12v1Ev();
extern void _ZN7S1019C12v2Ev();
extern void _ZN7S1019C12v3Ev();
extern void _ZN7S1019C12v4Ev();
extern void _ZN7S1019C12v5Ev();
extern void _ZN7S1019C12v6Ev();
extern void _ZN7S1019C12v7Ev();
extern void _ZN7S1019C12v8Ev();
extern void _ZN7S1019C12v9Ev();
static  VTBL_ENTRY vtc_S1019C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1019C1[0]),
  (VTBL_ENTRY)&_ZN7S1019C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1019C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1019C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1019C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1019C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1019C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1019C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1019C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1019C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1019C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1019C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1019C12v9Ev,
};
extern VTBL_ENTRY _ZTI7S1019C1[];
extern  VTBL_ENTRY _ZTV7S1019C1[];
Class_Descriptor cd_S1019C1 = {  "S1019C1", // class name
  bases_S1019C1, 3,
  &(vtc_S1019C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI7S1019C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1019C1),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  S1018C3  : S3214C8_nt {
};
//SIG(-1 S1018C3) C1{ BC2{ m Fi}}



static void Test_S1018C3()
{
  extern Class_Descriptor cd_S1018C3;
  void *lvp;
  {
    int buf[2];
    init_test(&cd_S1018C3, buf);
    S1018C3 &lv = *(new (buf) S1018C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), 4, "sizeof(S1018C3)");
    check2(__alignof__(lv), 4, "__alignof__(S1018C3)");
    check_base_class_offset(lv, (S3214C8_nt*), 0, "S1018C3");
    test_class_info(&lv, &cd_S1018C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1018C3(Test_S1018C3, "S1018C3", 4);

#else // __cplusplus

extern Class_Descriptor cd_S3214C8_nt;
extern VTBL_ENTRY _ZTI10S3214C8_nt[];
static Base_Class bases_S1018C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1018C3[];
Class_Descriptor cd_S1018C3 = {  "S1018C3", // class name
  bases_S1018C3, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI7S1018C3),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  S1018C2  : S1018C3 {
  virtual  ~S1018C2(); // _ZN7S1018C2D1Ev
  virtual void  v10(); // _ZN7S1018C23v10Ev
  virtual void  v11(); // _ZN7S1018C23v11Ev
  virtual void  v12(); // _ZN7S1018C23v12Ev
  virtual void  v13(); // _ZN7S1018C23v13Ev
  virtual void  v14(); // _ZN7S1018C23v14Ev
  virtual void  v15(); // _ZN7S1018C23v15Ev
  virtual void  v16(); // _ZN7S1018C23v16Ev
  virtual void  v17(); // _ZN7S1018C23v17Ev
  virtual void  v18(); // _ZN7S1018C23v18Ev
  S1018C2(); // tgen
};
//SIG(-1 S1018C2) C1{ BC2{ BC3{ m Fi}} vd v1 v2 v3 v4 v5 v6 v7 v8 v9}


 S1018C2 ::~S1018C2(){ note_dtor("S1018C2", this);}
void  S1018C2 ::v10(){vfunc_called(this, "_ZN7S1018C23v10Ev");}
void  S1018C2 ::v11(){vfunc_called(this, "_ZN7S1018C23v11Ev");}
void  S1018C2 ::v12(){vfunc_called(this, "_ZN7S1018C23v12Ev");}
void  S1018C2 ::v13(){vfunc_called(this, "_ZN7S1018C23v13Ev");}
void  S1018C2 ::v14(){vfunc_called(this, "_ZN7S1018C23v14Ev");}
void  S1018C2 ::v15(){vfunc_called(this, "_ZN7S1018C23v15Ev");}
void  S1018C2 ::v16(){vfunc_called(this, "_ZN7S1018C23v16Ev");}
void  S1018C2 ::v17(){vfunc_called(this, "_ZN7S1018C23v17Ev");}
void  S1018C2 ::v18(){vfunc_called(this, "_ZN7S1018C23v18Ev");}
S1018C2 ::S1018C2(){ note_ctor("S1018C2", this);} // tgen

static void Test_S1018C2()
{
  extern Class_Descriptor cd_S1018C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S1018C2, buf);
    S1018C2 *dp, &lv = *(dp=new (buf) S1018C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S1018C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1018C2)");
    check_base_class_offset(lv, (S3214C8_nt*)(S1018C3*), ABISELECT(8,4), "S1018C2");
    check_base_class_offset(lv, (S1018C3*), ABISELECT(8,4), "S1018C2");
    test_class_info(&lv, &cd_S1018C2);
    dp->~S1018C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1018C2(Test_S1018C2, "S1018C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S1018C2C1Ev();
extern void _ZN7S1018C2D1Ev();
Name_Map name_map_S1018C2[] = {
  NSPAIR(_ZN7S1018C2C1Ev),
  NSPAIR(_ZN7S1018C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3214C8_nt;
extern VTBL_ENTRY _ZTI10S3214C8_nt[];
extern Class_Descriptor cd_S1018C3;
extern VTBL_ENTRY _ZTI7S1018C3[];
static Base_Class bases_S1018C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1018C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1018C2[];
extern void _ZN7S1018C2D1Ev();
extern void _ZN7S1018C2D0Ev();
extern void _ZN7S1018C23v10Ev();
extern void _ZN7S1018C23v11Ev();
extern void _ZN7S1018C23v12Ev();
extern void _ZN7S1018C23v13Ev();
extern void _ZN7S1018C23v14Ev();
extern void _ZN7S1018C23v15Ev();
extern void _ZN7S1018C23v16Ev();
extern void _ZN7S1018C23v17Ev();
extern void _ZN7S1018C23v18Ev();
static  VTBL_ENTRY vtc_S1018C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1018C2[0]),
  (VTBL_ENTRY)&_ZN7S1018C2D1Ev,
  (VTBL_ENTRY)&_ZN7S1018C2D0Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v18Ev,
};
extern VTBL_ENTRY _ZTI7S1018C2[];
extern  VTBL_ENTRY _ZTV7S1018C2[];
Class_Descriptor cd_S1018C2 = {  "S1018C2", // class name
  bases_S1018C2, 2,
  &(vtc_S1018C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S1018C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S1018C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1018C9_nt  {
  void *s1018c9f0;
  void  mf1018c9(); // _ZN10S1018C9_nt8mf1018c9Ev
};
//SIG(-1 S1018C9_nt) C1{ m Fp}


void  S1018C9_nt ::mf1018c9(){}

//skip512 S1018C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1018C1  : S1018C2 {
  void *s1018c1f0;
  ::S3214C4_nt s1018c1f1;
  ::S1019C6_nt s1018c1f2;
  ::S9141C8_nt s1018c1f3;
  ::S1018C9_nt s1018c1f4;
  virtual  ~S1018C1(); // _ZN7S1018C1D1Ev
  virtual void  v1(); // _ZN7S1018C12v1Ev
  virtual void  v2(); // _ZN7S1018C12v2Ev
  virtual void  v3(); // _ZN7S1018C12v3Ev
  virtual void  v4(); // _ZN7S1018C12v4Ev
  virtual void  v5(); // _ZN7S1018C12v5Ev
  virtual void  v6(); // _ZN7S1018C12v6Ev
  virtual void  v7(); // _ZN7S1018C12v7Ev
  virtual void  v8(); // _ZN7S1018C12v8Ev
  virtual void  v9(); // _ZN7S1018C12v9Ev
  S1018C1(); // tgen
};
//SIG(1 S1018C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v10 v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp FC5{ m Fi[2]} FC6{ m FC5 FC7{ m Fi[2]}} FC8{ m Fp} FC9{ m Fp}}


 S1018C1 ::~S1018C1(){ note_dtor("S1018C1", this);}
void  S1018C1 ::v1(){vfunc_called(this, "_ZN7S1018C12v1Ev");}
void  S1018C1 ::v2(){vfunc_called(this, "_ZN7S1018C12v2Ev");}
void  S1018C1 ::v3(){vfunc_called(this, "_ZN7S1018C12v3Ev");}
void  S1018C1 ::v4(){vfunc_called(this, "_ZN7S1018C12v4Ev");}
void  S1018C1 ::v5(){vfunc_called(this, "_ZN7S1018C12v5Ev");}
void  S1018C1 ::v6(){vfunc_called(this, "_ZN7S1018C12v6Ev");}
void  S1018C1 ::v7(){vfunc_called(this, "_ZN7S1018C12v7Ev");}
void  S1018C1 ::v8(){vfunc_called(this, "_ZN7S1018C12v8Ev");}
void  S1018C1 ::v9(){vfunc_called(this, "_ZN7S1018C12v9Ev");}
S1018C1 ::S1018C1(){ note_ctor("S1018C1", this);} // tgen

static void Test_S1018C1()
{
  extern Class_Descriptor cd_S1018C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S1018C1, buf);
    S1018C1 *dp, &lv = *(dp=new (buf) S1018C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S1018C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1018C1)");
    check_base_class_offset(lv, (S3214C8_nt*)(S1018C3*)(S1018C2*), ABISELECT(8,4), "S1018C1");
    check_base_class_offset(lv, (S1018C3*)(S1018C2*), ABISELECT(8,4), "S1018C1");
    check_base_class_offset(lv, (S1018C2*), 0, "S1018C1");
    check_field_offset(lv, s1018c1f0, ABISELECT(16,8), "S1018C1.s1018c1f0");
    check_field_offset(lv, s1018c1f1, ABISELECT(24,12), "S1018C1.s1018c1f1");
    check_field_offset(lv, s1018c1f2, ABISELECT(32,20), "S1018C1.s1018c1f2");
    check_field_offset(lv, s1018c1f3, ABISELECT(48,36), "S1018C1.s1018c1f3");
    check_field_offset(lv, s1018c1f4, ABISELECT(56,40), "S1018C1.s1018c1f4");
    test_class_info(&lv, &cd_S1018C1);
    dp->~S1018C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1018C1(Test_S1018C1, "S1018C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S1018C1C1Ev();
extern void _ZN7S1018C1D1Ev();
Name_Map name_map_S1018C1[] = {
  NSPAIR(_ZN7S1018C1C1Ev),
  NSPAIR(_ZN7S1018C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3214C8_nt;
extern VTBL_ENTRY _ZTI10S3214C8_nt[];
extern Class_Descriptor cd_S1018C3;
extern VTBL_ENTRY _ZTI7S1018C3[];
extern Class_Descriptor cd_S1018C2;
extern VTBL_ENTRY _ZTI7S1018C2[];
extern  VTBL_ENTRY _ZTV7S1018C2[];
static Base_Class bases_S1018C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C8_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1018C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S1018C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1018C1[];
extern void _ZN7S1018C1D1Ev();
extern void _ZN7S1018C1D0Ev();
extern void _ZN7S1018C23v10Ev();
extern void _ZN7S1018C23v11Ev();
extern void _ZN7S1018C23v12Ev();
extern void _ZN7S1018C23v13Ev();
extern void _ZN7S1018C23v14Ev();
extern void _ZN7S1018C23v15Ev();
extern void _ZN7S1018C23v16Ev();
extern void _ZN7S1018C23v17Ev();
extern void _ZN7S1018C23v18Ev();
extern void _ZN7S1018C12v1Ev();
extern void _ZN7S1018C12v2Ev();
extern void _ZN7S1018C12v3Ev();
extern void _ZN7S1018C12v4Ev();
extern void _ZN7S1018C12v5Ev();
extern void _ZN7S1018C12v6Ev();
extern void _ZN7S1018C12v7Ev();
extern void _ZN7S1018C12v8Ev();
extern void _ZN7S1018C12v9Ev();
static  VTBL_ENTRY vtc_S1018C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1018C1[0]),
  (VTBL_ENTRY)&_ZN7S1018C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1018C1D0Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v10Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v11Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v12Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v13Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v14Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v15Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v16Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v17Ev,
  (VTBL_ENTRY)&_ZN7S1018C23v18Ev,
  (VTBL_ENTRY)&_ZN7S1018C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1018C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1018C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1018C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1018C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1018C12v6Ev,
  (VTBL_ENTRY)&_ZN7S1018C12v7Ev,
  (VTBL_ENTRY)&_ZN7S1018C12v8Ev,
  (VTBL_ENTRY)&_ZN7S1018C12v9Ev,
};
extern VTBL_ENTRY _ZTI7S1018C1[];
extern  VTBL_ENTRY _ZTV7S1018C1[];
Class_Descriptor cd_S1018C1 = {  "S1018C1", // class name
  bases_S1018C1, 3,
  &(vtc_S1018C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S1018C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1018C1),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  S9676C2_nt  {
  ::S4227C19_nt s9676c2f0;
  int s9676c2f1[2];
  char s9676c2f2;
  virtual  ~S9676C2_nt(); // _ZN10S9676C2_ntD1Ev
  virtual void  v4(); // _ZN10S9676C2_nt2v4Ev
  virtual void  v5(); // _ZN10S9676C2_nt2v5Ev
  virtual void  v6(); // _ZN10S9676C2_nt2v6Ev
  S9676C2_nt(); // tgen
};
//SIG(-1 S9676C2_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9676C2_nt ::~S9676C2_nt(){ note_dtor("S9676C2_nt", this);}
void  S9676C2_nt ::v4(){vfunc_called(this, "_ZN10S9676C2_nt2v4Ev");}
void  S9676C2_nt ::v5(){vfunc_called(this, "_ZN10S9676C2_nt2v5Ev");}
void  S9676C2_nt ::v6(){vfunc_called(this, "_ZN10S9676C2_nt2v6Ev");}
S9676C2_nt ::S9676C2_nt(){ note_ctor("S9676C2_nt", this);} // tgen

//skip512 S9676C2_nt

#else // __cplusplus

extern void _ZN10S9676C2_ntC1Ev();
extern void _ZN10S9676C2_ntD1Ev();
Name_Map name_map_S9676C2_nt[] = {
  NSPAIR(_ZN10S9676C2_ntC1Ev),
  NSPAIR(_ZN10S9676C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9676C2_nt[];
extern void _ZN10S9676C2_ntD1Ev();
extern void _ZN10S9676C2_ntD0Ev();
extern void _ZN10S9676C2_nt2v4Ev();
extern void _ZN10S9676C2_nt2v5Ev();
extern void _ZN10S9676C2_nt2v6Ev();
static  VTBL_ENTRY vtc_S9676C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9676C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S9676C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9676C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9676C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S9676C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S9676C2_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI10S9676C2_nt[];
VTBL_ENTRY *P__ZTI10S9676C2_nt = _ZTI10S9676C2_nt; 
extern  VTBL_ENTRY _ZTV10S9676C2_nt[];
Class_Descriptor cd_S9676C2_nt = {  "S9676C2_nt", // class name
  0,0,//no base classes
  &(vtc_S9676C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S9676C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9676C2_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  S9676C7_nt  {
  __tsi64 s9676c7f0;
};
//SIG(-1 S9676C7_nt) C1{ FL}



//skip512 S9676C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S9676C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9676C1  : S9676C2_nt {
  int s9676c1f0;
  void *s9676c1f1[4];
  ::S4227C45 s9676c1f2;
  char s9676c1f3;
  int s9676c1f4[5];
  __tsi64 s9676c1f5[9];
  char s9676c1f6;
  ::S9676C7_nt s9676c1f7;
  ::S9676C7_nt s9676c1f8;
  ::S4227C41_nt s9676c1f9;
  ::S4227C41_nt s9676c1f10;
  ::S9676C9_nt s9676c1f11;
  virtual  ~S9676C1(); // _ZN7S9676C1D1Ev
  virtual void  v1(); // _ZN7S9676C12v1Ev
  virtual void  v2(); // _ZN7S9676C12v2Ev
  virtual void  v3(); // _ZN7S9676C12v3Ev
  S9676C1(); // tgen
};
//SIG(1 S9676C1) C1{ BC2{ vd v4 v5 v6 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 Fi Fp[4] FC5{ m Fp Fi[2] FC6{ m}} Fc Fi[5] FL[9] Fc FC7{ FL} FC7 FC8{ FL[4]} FC8 FC9{ FL[4]}}


 S9676C1 ::~S9676C1(){ note_dtor("S9676C1", this);}
void  S9676C1 ::v1(){vfunc_called(this, "_ZN7S9676C12v1Ev");}
void  S9676C1 ::v2(){vfunc_called(this, "_ZN7S9676C12v2Ev");}
void  S9676C1 ::v3(){vfunc_called(this, "_ZN7S9676C12v3Ev");}
S9676C1 ::S9676C1(){ note_ctor("S9676C1", this);} // tgen

static void Test_S9676C1()
{
  extern Class_Descriptor cd_S9676C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,70)];
    init_test(&cd_S9676C1, buf);
    S9676C1 *dp, &lv = *(dp=new (buf) S9676C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,276), "sizeof(S9676C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9676C1)");
    check_base_class_offset(lv, (S9676C2_nt*), 0, "S9676C1");
    check_field_offset(lv, s9676c1f0, ABISELECT(36,28), "S9676C1.s9676c1f0");
    check_field_offset(lv, s9676c1f1, ABISELECT(40,32), "S9676C1.s9676c1f1");
    check_field_offset(lv, s9676c1f2, ABISELECT(72,48), "S9676C1.s9676c1f2");
    check_field_offset(lv, s9676c1f3, ABISELECT(96,64), "S9676C1.s9676c1f3");
    check_field_offset(lv, s9676c1f4, ABISELECT(100,68), "S9676C1.s9676c1f4");
    check_field_offset(lv, s9676c1f5, ABISELECT(120,88), "S9676C1.s9676c1f5");
    check_field_offset(lv, s9676c1f6, ABISELECT(192,160), "S9676C1.s9676c1f6");
    check_field_offset(lv, s9676c1f7, ABISELECT(200,164), "S9676C1.s9676c1f7");
    check_field_offset(lv, s9676c1f8, ABISELECT(208,172), "S9676C1.s9676c1f8");
    check_field_offset(lv, s9676c1f9, ABISELECT(216,180), "S9676C1.s9676c1f9");
    check_field_offset(lv, s9676c1f10, ABISELECT(248,212), "S9676C1.s9676c1f10");
    check_field_offset(lv, s9676c1f11, ABISELECT(280,244), "S9676C1.s9676c1f11");
    test_class_info(&lv, &cd_S9676C1);
    dp->~S9676C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9676C1(Test_S9676C1, "S9676C1", ABISELECT(312,276));

#else // __cplusplus

extern void _ZN7S9676C1C1Ev();
extern void _ZN7S9676C1D1Ev();
Name_Map name_map_S9676C1[] = {
  NSPAIR(_ZN7S9676C1C1Ev),
  NSPAIR(_ZN7S9676C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9676C2_nt;
extern VTBL_ENTRY _ZTI10S9676C2_nt[];
extern  VTBL_ENTRY _ZTV10S9676C2_nt[];
static Base_Class bases_S9676C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9676C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9676C1[];
extern void _ZN7S9676C1D1Ev();
extern void _ZN7S9676C1D0Ev();
extern void _ZN10S9676C2_nt2v4Ev();
extern void _ZN10S9676C2_nt2v5Ev();
extern void _ZN10S9676C2_nt2v6Ev();
extern void _ZN7S9676C12v1Ev();
extern void _ZN7S9676C12v2Ev();
extern void _ZN7S9676C12v3Ev();
static  VTBL_ENTRY vtc_S9676C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9676C1[0]),
  (VTBL_ENTRY)&_ZN7S9676C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9676C1D0Ev,
  (VTBL_ENTRY)&_ZN10S9676C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S9676C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S9676C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN7S9676C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9676C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9676C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9676C1[];
extern  VTBL_ENTRY _ZTV7S9676C1[];
Class_Descriptor cd_S9676C1 = {  "S9676C1", // class name
  bases_S9676C1, 1,
  &(vtc_S9676C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,276), // object size
  NSPAIRA(_ZTI7S9676C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9676C1),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  S5747C2  {
  int s5747c2f0;
  ::S4227C19_nt s5747c2f1;
  int s5747c2f2;
  ::S4227C19_nt s5747c2f3;
  __tsi64 s5747c2f4[3];
  int s5747c2f5;
  short s5747c2f6[2];
  char s5747c2f7[2];
  void  mf5747c2(); // _ZN7S5747C28mf5747c2Ev
};
//SIG(-1 S5747C2) C1{ m Fi FC2{ m Fp Fi FC3{ m}} Fi FC2 FL[3] Fi Fs[2] Fc[2]}


void  S5747C2 ::mf5747c2(){}

static void Test_S5747C2()
{
  {
    init_simple_test("S5747C2");
    S5747C2 lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S5747C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5747C2)");
    check_field_offset(lv, s5747c2f0, 0, "S5747C2.s5747c2f0");
    check_field_offset(lv, s5747c2f1, ABISELECT(8,4), "S5747C2.s5747c2f1");
    check_field_offset(lv, s5747c2f2, ABISELECT(24,16), "S5747C2.s5747c2f2");
    check_field_offset(lv, s5747c2f3, ABISELECT(32,20), "S5747C2.s5747c2f3");
    check_field_offset(lv, s5747c2f4, ABISELECT(48,32), "S5747C2.s5747c2f4");
    check_field_offset(lv, s5747c2f5, ABISELECT(72,56), "S5747C2.s5747c2f5");
    check_field_offset(lv, s5747c2f6, ABISELECT(76,60), "S5747C2.s5747c2f6");
    check_field_offset(lv, s5747c2f7, ABISELECT(80,64), "S5747C2.s5747c2f7");
  }
}
static Arrange_To_Call_Me vS5747C2(Test_S5747C2, "S5747C2", ABISELECT(88,68));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5747C1  : S5747C2 {
  ::S4227C25 s5747c1f0;
  ::S4227C21 s5747c1f1;
  ::S4227C5_nt s5747c1f2;
  char s5747c1f3;
};
//SIG(1 S5747C1) C1{ BC2{ m Fi FC3{ m Fp Fi FC4{ m}} Fi FC3 FL[3] Fi Fs[2] Fc[2]} FC5{ m Fp Fi FC6{ m} FC7{ m}} FC8{ m Fp Fi FC4 FC6} FC9{ m Fp Fi FC10{ m} FC10} Fc}



static void Test_S5747C1()
{
  extern Class_Descriptor cd_S5747C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,28)];
    init_test(&cd_S5747C1, buf);
    S5747C1 &lv = *(new (buf) S5747C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,108), "sizeof(S5747C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5747C1)");
    check_base_class_offset(lv, (S5747C2*), 0, "S5747C1");
    check_field_offset(lv, s5747c1f0, ABISELECT(88,68), "S5747C1.s5747c1f0");
    check_field_offset(lv, s5747c1f1, ABISELECT(104,80), "S5747C1.s5747c1f1");
    check_field_offset(lv, s5747c1f2, ABISELECT(120,92), "S5747C1.s5747c1f2");
    check_field_offset(lv, s5747c1f3, ABISELECT(136,104), "S5747C1.s5747c1f3");
    test_class_info(&lv, &cd_S5747C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5747C1(Test_S5747C1, "S5747C1", ABISELECT(144,108));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S13352C6  {
  ::S4227C19_nt s13352c6f0;
  ::S4227C19_nt s13352c6f1;
  ::S4227C19_nt s13352c6f2;
  ::S4227C19_nt s13352c6f3;
  ::S4227C19_nt s13352c6f4;
  int s13352c6f5;
};
//SIG(-1 S13352C6) C1{ FC2{ m Fp Fi FC3{ m}} FC2 FC2 FC2 FC2 Fi}



static void Test_S13352C6()
{
  {
    init_simple_test("S13352C6");
    S13352C6 lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S13352C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13352C6)");
    check_field_offset(lv, s13352c6f0, 0, "S13352C6.s13352c6f0");
    check_field_offset(lv, s13352c6f1, ABISELECT(16,12), "S13352C6.s13352c6f1");
    check_field_offset(lv, s13352c6f2, ABISELECT(32,24), "S13352C6.s13352c6f2");
    check_field_offset(lv, s13352c6f3, ABISELECT(48,36), "S13352C6.s13352c6f3");
    check_field_offset(lv, s13352c6f4, ABISELECT(64,48), "S13352C6.s13352c6f4");
    check_field_offset(lv, s13352c6f5, ABISELECT(80,60), "S13352C6.s13352c6f5");
  }
}
static Arrange_To_Call_Me vS13352C6(Test_S13352C6, "S13352C6", ABISELECT(88,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13352C1  {
  int s13352c1f0[3];
  ::S4227C45 s13352c1f1;
  int s13352c1f2;
  ::S4227C45 s13352c1f3;
  int s13352c1f4;
  ::S4227C36 s13352c1f5;
  char s13352c1f6;
  ::S13352C6 s13352c1f7;
  ::S4227C19_nt s13352c1f8;
  int s13352c1f9;
  ::S4227C19_nt s13352c1f10;
  ::S4227C19_nt s13352c1f11;
  ::S4227C19_nt s13352c1f12;
  ::S4227C19_nt s13352c1f13;
  ::S4227C19_nt s13352c1f14;
  ::S4227C19_nt s13352c1f15;
};
//SIG(1 S13352C1) C1{ Fi[3] FC2{ m Fp Fi[2] FC3{ m}} Fi FC2 Fi FC4{ m Fp Fi[2] FC3} Fc FC5{ FC6{ m Fp Fi FC7{ m}} FC6 FC6 FC6 FC6 Fi} FC6 Fi FC6 FC6 FC6 FC6 FC6 FC6}



static void Test_S13352C1()
{
  {
    init_simple_test("S13352C1");
    S13352C1 lv;
    check2(sizeof(lv), ABISELECT(320,224), "sizeof(S13352C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13352C1)");
    check_field_offset(lv, s13352c1f0, 0, "S13352C1.s13352c1f0");
    check_field_offset(lv, s13352c1f1, ABISELECT(16,12), "S13352C1.s13352c1f1");
    check_field_offset(lv, s13352c1f2, ABISELECT(40,28), "S13352C1.s13352c1f2");
    check_field_offset(lv, s13352c1f3, ABISELECT(48,32), "S13352C1.s13352c1f3");
    check_field_offset(lv, s13352c1f4, ABISELECT(72,48), "S13352C1.s13352c1f4");
    check_field_offset(lv, s13352c1f5, ABISELECT(80,52), "S13352C1.s13352c1f5");
    check_field_offset(lv, s13352c1f6, ABISELECT(104,68), "S13352C1.s13352c1f6");
    check_field_offset(lv, s13352c1f7, ABISELECT(112,72), "S13352C1.s13352c1f7");
    check_field_offset(lv, s13352c1f8, ABISELECT(200,136), "S13352C1.s13352c1f8");
    check_field_offset(lv, s13352c1f9, ABISELECT(216,148), "S13352C1.s13352c1f9");
    check_field_offset(lv, s13352c1f10, ABISELECT(224,152), "S13352C1.s13352c1f10");
    check_field_offset(lv, s13352c1f11, ABISELECT(240,164), "S13352C1.s13352c1f11");
    check_field_offset(lv, s13352c1f12, ABISELECT(256,176), "S13352C1.s13352c1f12");
    check_field_offset(lv, s13352c1f13, ABISELECT(272,188), "S13352C1.s13352c1f13");
    check_field_offset(lv, s13352c1f14, ABISELECT(288,200), "S13352C1.s13352c1f14");
    check_field_offset(lv, s13352c1f15, ABISELECT(304,212), "S13352C1.s13352c1f15");
  }
}
static Arrange_To_Call_Me vS13352C1(Test_S13352C1, "S13352C1", ABISELECT(320,224));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6049C1  : S7874C9_nt {
  int s6049c1f0[2];
  void *s6049c1f1;
  ::S3214C8_nt s6049c1f2;
  int s6049c1f3;
  ::S9141C28_nt s6049c1f4;
};
//SIG(1 S6049C1) C1{ BC2{ m Fp[3] Fi Fp Fi Fp[2] FC3{ m} FC3 Fi[10] Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:2 Fi:3 Fi:1 Fi:1} Fi[2] Fp FC4{ m Fi} Fi FC5{ BC6{ m Fp Fi[2]}}}



static void Test_S6049C1()
{
  extern Class_Descriptor cd_S6049C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(22,30)];
    init_test(&cd_S6049C1, buf);
    S6049C1 &lv = *(new (buf) S6049C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(168,116), "sizeof(S6049C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6049C1)");
    check_base_class_offset(lv, (S7874C9_nt*), 0, "S6049C1");
    check_field_offset(lv, s6049c1f0, ABISELECT(128,84), "S6049C1.s6049c1f0");
    check_field_offset(lv, s6049c1f1, ABISELECT(136,92), "S6049C1.s6049c1f1");
    check_field_offset(lv, s6049c1f2, ABISELECT(144,96), "S6049C1.s6049c1f2");
    check_field_offset(lv, s6049c1f3, ABISELECT(148,100), "S6049C1.s6049c1f3");
    check_field_offset(lv, s6049c1f4, ABISELECT(152,104), "S6049C1.s6049c1f4");
    test_class_info(&lv, &cd_S6049C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6049C1(Test_S6049C1, "S6049C1", ABISELECT(168,116));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S8083C1  : S3577C4_nt {
  void *s8083c1f0;
  ::S9141C28_nt s8083c1f1;
  ::S5327C13_nt s8083c1f2;
  ::S5327C13_nt s8083c1f3;
  ::S5327C13_nt s8083c1f4;
  ::S5327C13_nt s8083c1f5;
  void *s8083c1f6;
  ::S7874C12_nt s8083c1f7;
  ::S7874C12_nt s8083c1f8;
  ::S7874C12_nt s8083c1f9;
  ::S7874C12_nt s8083c1f10;
  int s8083c1f11[4];
  ::S9141C26 s8083c1f12;
  ::S3214C23 s8083c1f13;
  int s8083c1f14;
  ~S8083C1(); // tgen
  S8083C1(); // tgen
};
//SIG(1 S8083C1) C1{ BC2{ vd m Fi} Fp FC3{ BC4{ m Fp Fi[2]}} FC5{ BC4} FC5 FC5 FC5 Fp FC6{ m FC7{ BC4} FC8{ BC4}} FC6 FC6 FC6 Fi[4] FC9{ BC10{ m FC3 Fp Fi}} FC7 Fi}


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

static void Test_S8083C1()
{
  extern Class_Descriptor cd_S8083C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(40,57)];
    init_test(&cd_S8083C1, buf);
    S8083C1 *dp, &lv = *(dp=new (buf) S8083C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(312,224), "sizeof(S8083C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8083C1)");
    check_base_class_offset(lv, (S3577C4_nt*), 0, "S8083C1");
    check_field_offset(lv, s8083c1f0, ABISELECT(16,8), "S8083C1.s8083c1f0");
    check_field_offset(lv, s8083c1f1, ABISELECT(24,12), "S8083C1.s8083c1f1");
    check_field_offset(lv, s8083c1f2, ABISELECT(40,24), "S8083C1.s8083c1f2");
    check_field_offset(lv, s8083c1f3, ABISELECT(56,36), "S8083C1.s8083c1f3");
    check_field_offset(lv, s8083c1f4, ABISELECT(72,48), "S8083C1.s8083c1f4");
    check_field_offset(lv, s8083c1f5, ABISELECT(88,60), "S8083C1.s8083c1f5");
    check_field_offset(lv, s8083c1f6, ABISELECT(104,72), "S8083C1.s8083c1f6");
    check_field_offset(lv, s8083c1f7, ABISELECT(112,76), "S8083C1.s8083c1f7");
    check_field_offset(lv, s8083c1f8, ABISELECT(144,100), "S8083C1.s8083c1f8");
    check_field_offset(lv, s8083c1f9, ABISELECT(176,124), "S8083C1.s8083c1f9");
    check_field_offset(lv, s8083c1f10, ABISELECT(208,148), "S8083C1.s8083c1f10");
    check_field_offset(lv, s8083c1f11, ABISELECT(240,172), "S8083C1.s8083c1f11");
    check_field_offset(lv, s8083c1f12, ABISELECT(256,188), "S8083C1.s8083c1f12");
    check_field_offset(lv, s8083c1f13, ABISELECT(288,208), "S8083C1.s8083c1f13");
    check_field_offset(lv, s8083c1f14, ABISELECT(304,220), "S8083C1.s8083c1f14");
    test_class_info(&lv, &cd_S8083C1);
    dp->~S8083C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8083C1(Test_S8083C1, "S8083C1", ABISELECT(312,224));

#else // __cplusplus

extern void _ZN7S8083C1C1Ev();
extern void _ZN7S8083C1D1Ev();
Name_Map name_map_S8083C1[] = {
  NSPAIR(_ZN7S8083C1C1Ev),
  NSPAIR(_ZN7S8083C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S8083C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8083C1[];
extern void _ZN7S8083C1D1Ev();
extern void _ZN7S8083C1D0Ev();
static  VTBL_ENTRY vtc_S8083C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8083C1[0]),
  (VTBL_ENTRY)&_ZN7S8083C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8083C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8083C1[];
extern  VTBL_ENTRY _ZTV7S8083C1[];
Class_Descriptor cd_S8083C1 = {  "S8083C1", // class name
  bases_S8083C1, 1,
  &(vtc_S8083C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(312,224), // object size
  NSPAIRA(_ZTI7S8083C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8083C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17204C7_nt  {
  int s17204c7f0[8];
};
//SIG(1 S17204C7_nt) C1{ Fi[8]}



//skip512 S17204C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17204C1  {
  int s17204c1f0[3];
  void *s17204c1f1;
  int s17204c1f2;
  void *s17204c1f3[2];
  ::S3214C4_nt s17204c1f4;
  ::S9141C26 s17204c1f5;
  int s17204c1f6[3];
  short s17204c1f7;
  __tsi64 s17204c1f8;
  char s17204c1f9[16];
  __tsi64 s17204c1f10[16];
  int s17204c1f11[4];
  char s17204c1f12;
  int s17204c1f13[11];
  ::S17204C7_nt s17204c1f14[4];
  int s17204c1f15[12];
  void  mf17204c1(); // _ZN8S17204C19mf17204c1Ev
};
//SIG(1 S17204C1) C1{ m Fi[3] Fp Fi Fp[2] FC2{ m Fi[2]} FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}} Fi[3] Fs FL Fc[16] FL[16] Fi[4] Fc Fi[11] FC7{ Fi[8]}[4] Fi[12]}


void  S17204C1 ::mf17204c1(){}

static void Test_S17204C1()
{
  {
    init_simple_test("S17204C1");
    S17204C1 lv;
    check2(sizeof(lv), ABISELECT(496,464), "sizeof(S17204C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17204C1)");
    check_field_offset(lv, s17204c1f0, 0, "S17204C1.s17204c1f0");
    check_field_offset(lv, s17204c1f1, ABISELECT(16,12), "S17204C1.s17204c1f1");
    check_field_offset(lv, s17204c1f2, ABISELECT(24,16), "S17204C1.s17204c1f2");
    check_field_offset(lv, s17204c1f3, ABISELECT(32,20), "S17204C1.s17204c1f3");
    check_field_offset(lv, s17204c1f4, ABISELECT(48,28), "S17204C1.s17204c1f4");
    check_field_offset(lv, s17204c1f5, ABISELECT(56,36), "S17204C1.s17204c1f5");
    check_field_offset(lv, s17204c1f6, ABISELECT(88,56), "S17204C1.s17204c1f6");
    check_field_offset(lv, s17204c1f7, ABISELECT(100,68), "S17204C1.s17204c1f7");
    check_field_offset(lv, s17204c1f8, ABISELECT(104,72), "S17204C1.s17204c1f8");
    check_field_offset(lv, s17204c1f9, ABISELECT(112,80), "S17204C1.s17204c1f9");
    check_field_offset(lv, s17204c1f10, ABISELECT(128,96), "S17204C1.s17204c1f10");
    check_field_offset(lv, s17204c1f11, ABISELECT(256,224), "S17204C1.s17204c1f11");
    check_field_offset(lv, s17204c1f12, ABISELECT(272,240), "S17204C1.s17204c1f12");
    check_field_offset(lv, s17204c1f13, ABISELECT(276,244), "S17204C1.s17204c1f13");
    check_field_offset(lv, s17204c1f14, ABISELECT(320,288), "S17204C1.s17204c1f14");
    check_field_offset(lv, s17204c1f15, ABISELECT(448,416), "S17204C1.s17204c1f15");
  }
}
static Arrange_To_Call_Me vS17204C1(Test_S17204C1, "S17204C1", ABISELECT(496,464));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S21126C5C1Ev();
extern void _ZN8S21126C5D1Ev();
Name_Map name_map_S21126C5[] = {
  NSPAIR(_ZN8S21126C5C1Ev),
  NSPAIR(_ZN8S21126C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21126C5[];
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY vtc_S21126C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C5[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
Class_Descriptor cd_S21126C5 = {  "S21126C5", // class name
  0,0,//no base classes
  &(vtc_S21126C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21126C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21126C5),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  S21126C6  : S21126C5 , virtual S20997C6 , S4227C37 {
  void *s21126c6f0[10];
  ~S21126C6(); // tgen
  S21126C6(); // tgen
};
//SIG(-1 S21126C6) C1{ BC2{ v1} VBC3{ m FL[5]} BC4{ m} Fp[10]}


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

static void Test_S21126C6()
{
  extern Class_Descriptor cd_S21126C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S21126C6, buf);
    S21126C6 *dp, &lv = *(dp=new (buf) S21126C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S21126C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21126C6)");
    check_base_class_offset(lv, (S21126C5*), 0, "S21126C6");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(88,44), "S21126C6");
    check_base_class_offset(lv, (S4227C37*), 0, "S21126C6");
    check_field_offset(lv, s21126c6f0, ABISELECT(8,4), "S21126C6.s21126c6f0");
    test_class_info(&lv, &cd_S21126C6);
    dp->~S21126C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21126C6(Test_S21126C6, "S21126C6", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN8S21126C6C1Ev();
extern void _ZN8S21126C6D1Ev();
Name_Map name_map_S21126C6[] = {
  NSPAIR(_ZN8S21126C6C1Ev),
  NSPAIR(_ZN8S21126C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S21126C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21126C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21126C6[];
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY vtc_S21126C6[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C6[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern VTBL_ENTRY _ZTV8S21126C6[];
static  VTT_ENTRY vtt_S21126C6[] = {
  {&(_ZTV8S21126C6[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21126C6[];
extern  VTBL_ENTRY _ZTV8S21126C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C6[];
Class_Descriptor cd_S21126C6 = {  "S21126C6", // class name
  bases_S21126C6, 3,
  &(vtc_S21126C6[0]), // expected_vtbl_contents
  &(vtt_S21126C6[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI8S21126C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21126C6),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21126C6),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  S21126C10  : virtual S21126C5 {
  ::S21126C6 s21126c10f0[9];
  ~S21126C10(); // tgen
  S21126C10(); // tgen
};
//SIG(-1 S21126C10) C1{ VBC2{ v1} FC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]}[9]}


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

static void Test_S21126C10()
{
  extern Class_Descriptor cd_S21126C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(146,191)];
    init_test(&cd_S21126C10, buf);
    S21126C10 *dp, &lv = *(dp=new (buf) S21126C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1160,760), "sizeof(S21126C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21126C10)");
    check_base_class_offset(lv, (S21126C5*), 0, "S21126C10");
    check_field_offset(lv, s21126c10f0, ABISELECT(8,4), "S21126C10.s21126c10f0");
    test_class_info(&lv, &cd_S21126C10);
    dp->~S21126C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21126C10(Test_S21126C10, "S21126C10", ABISELECT(1160,760));

#else // __cplusplus

extern void _ZN9S21126C10C1Ev();
extern void _ZN9S21126C10D1Ev();
Name_Map name_map_S21126C10[] = {
  NSPAIR(_ZN9S21126C10C1Ev),
  NSPAIR(_ZN9S21126C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
static Base_Class bases_S21126C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21126C5,    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 _ZTI9S21126C10[];
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY vtc_S21126C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C10[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern VTBL_ENTRY _ZTV9S21126C10[];
static  VTT_ENTRY vtt_S21126C10[] = {
  {&(_ZTV9S21126C10[4]),  4,5},
  {&(_ZTV9S21126C10[4]),  4,5},
};
extern VTBL_ENTRY _ZTI9S21126C10[];
extern  VTBL_ENTRY _ZTV9S21126C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C10[];
Class_Descriptor cd_S21126C10 = {  "S21126C10", // class name
  bases_S21126C10, 1,
  &(vtc_S21126C10[0]), // expected_vtbl_contents
  &(vtt_S21126C10[0]), // expected_vtt_contents
  ABISELECT(1160,760), // object size
  NSPAIRA(_ZTI9S21126C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21126C10),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21126C10),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  S21126C11  : virtual S20997C6 , virtual S21126C5 , S4227C37 {
  virtual  ~S21126C11(); // _ZN9S21126C11D2Ev
  S21126C11(); // tgen
};
//SIG(-1 S21126C11) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S21126C11()
{
  extern Class_Descriptor cd_S21126C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S21126C11, buf);
    S21126C11 *dp, &lv = *(dp=new (buf) S21126C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S21126C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21126C11)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S21126C11");
    check_base_class_offset(lv, (S21126C5*), 0, "S21126C11");
    check_base_class_offset(lv, (S4227C37*), 0, "S21126C11");
    test_class_info(&lv, &cd_S21126C11);
    dp->~S21126C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21126C11(Test_S21126C11, "S21126C11", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S21126C11C1Ev();
extern void _ZN9S21126C11D2Ev();
Name_Map name_map_S21126C11[] = {
  NSPAIR(_ZN9S21126C11C1Ev),
  NSPAIR(_ZN9S21126C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S21126C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21126C5,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21126C11[];
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C11D1Ev();
extern void _ZN9S21126C11D0Ev();
static  VTBL_ENTRY vtc_S21126C11[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D0Ev,
};
extern VTBL_ENTRY _ZTV9S21126C11[];
static  VTT_ENTRY vtt_S21126C11[] = {
  {&(_ZTV9S21126C11[5]),  5,8},
  {&(_ZTV9S21126C11[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21126C11[];
extern  VTBL_ENTRY _ZTV9S21126C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C11[];
Class_Descriptor cd_S21126C11 = {  "S21126C11", // class name
  bases_S21126C11, 3,
  &(vtc_S21126C11[0]), // expected_vtbl_contents
  &(vtt_S21126C11[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S21126C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21126C11),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21126C11),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  S21126C12  : S21126C11 {
  virtual  ~S21126C12(); // _ZN9S21126C12D2Ev
  S21126C12(); // tgen
};
//SIG(-1 S21126C12) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S21126C12()
{
  extern Class_Descriptor cd_S21126C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S21126C12, buf);
    S21126C12 *dp, &lv = *(dp=new (buf) S21126C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S21126C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21126C12)");
    check_base_class_offset(lv, (S20997C6*)(S21126C11*), ABISELECT(8,4), "S21126C12");
    check_base_class_offset(lv, (S21126C5*)(S21126C11*), 0, "S21126C12");
    check_base_class_offset(lv, (S4227C37*)(S21126C11*), 0, "S21126C12");
    check_base_class_offset(lv, (S21126C11*), 0, "S21126C12");
    test_class_info(&lv, &cd_S21126C12);
    dp->~S21126C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21126C12(Test_S21126C12, "S21126C12", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN9S21126C12C1Ev();
extern void _ZN9S21126C12D2Ev();
Name_Map name_map_S21126C12[] = {
  NSPAIR(_ZN9S21126C12C1Ev),
  NSPAIR(_ZN9S21126C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C11;
extern VTBL_ENTRY _ZTI9S21126C11[];
extern  VTBL_ENTRY _ZTV9S21126C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C11[];
static Base_Class bases_S21126C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C5,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21126C12[];
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C12D1Ev();
extern void _ZN9S21126C12D0Ev();
static  VTBL_ENTRY vtc_S21126C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C12[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C12D0Ev,
};
extern VTBL_ENTRY _ZTV9S21126C12[];
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C11D1Ev();
extern void _ZN9S21126C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C11__9S21126C12[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D0Ev,
};
static  VTT_ENTRY vtt_S21126C12[] = {
  {&(_ZTV9S21126C12[5]),  5,8},
  {&(_tg__ZTV9S21126C11__9S21126C12[5]),  5,8},
  {&(_tg__ZTV9S21126C11__9S21126C12[5]),  5,8},
  {&(_ZTV9S21126C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S21126C12[];
extern  VTBL_ENTRY _ZTV9S21126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C12[];
Class_Descriptor cd_S21126C12 = {  "S21126C12", // class name
  bases_S21126C12, 4,
  &(vtc_S21126C12[0]), // expected_vtbl_contents
  &(vtt_S21126C12[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI9S21126C12),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S21126C12),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21126C12),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  S21126C9  : virtual S4227C37 , S21126C10 , S21126C11 , S21126C12 {
  ~S21126C9(); // tgen
  S21126C9(); // tgen
};
//SIG(-1 S21126C9) C1{ VBC2{ m} BC3{ VBC4{ v1} FC5{ BC4 VBC6{ m FL[5]} BC2 Fp[10]}[9]} BC7{ VBC6 VBC4 BC2 vd} BC8{ BC7 vd}}


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

static void Test_S21126C9()
{
  extern Class_Descriptor cd_S21126C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(153,203)];
    init_test(&cd_S21126C9, buf);
    S21126C9 *dp, &lv = *(dp=new (buf) S21126C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1216,808), "sizeof(S21126C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21126C9)");
    /*is_ambiguous_... S21126C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*), 0, "S21126C9");
    check_base_class_offset(lv, (S21126C5*)(S21126C10*), 0, "S21126C9");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S21126C5*)(S21126C11*), 0, "S21126C9");
    check_base_class_offset(lv, (S21126C5*)(S21126C11*)(S21126C12*), 0, "S21126C9");
    check_base_class_offset(lv, (S21126C10*), 0, "S21126C9");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21126C11*), ABISELECT(1176,768), "S21126C9");
    check_base_class_offset(lv, (S20997C6*)(S21126C11*)(S21126C12*), ABISELECT(1176,768), "S21126C9");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21126C11*), ABISELECT(1160,760), "S21126C9");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S21126C11*), ABISELECT(1160,760), "S21126C9");
    check_base_class_offset(lv, (S4227C37*)(S21126C11*)(S21126C12*), ABISELECT(1168,764), "S21126C9");
    check_base_class_offset(lv, (S21126C11*)(S21126C12*), ABISELECT(1168,764), "S21126C9");
    check_base_class_offset(lv, (S21126C12*), ABISELECT(1168,764), "S21126C9");
    test_class_info(&lv, &cd_S21126C9);
    dp->~S21126C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21126C9(Test_S21126C9, "S21126C9", ABISELECT(1216,808));

#else // __cplusplus

extern void _ZN8S21126C9C1Ev();
extern void _ZN8S21126C9D1Ev();
Name_Map name_map_S21126C9[] = {
  NSPAIR(_ZN8S21126C9C1Ev),
  NSPAIR(_ZN8S21126C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
extern Class_Descriptor cd_S21126C10;
extern VTBL_ENTRY _ZTI9S21126C10[];
extern  VTBL_ENTRY _ZTV9S21126C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C10[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C11;
extern VTBL_ENTRY _ZTI9S21126C11[];
extern  VTBL_ENTRY _ZTV9S21126C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C11;
extern VTBL_ENTRY _ZTI9S21126C11[];
extern  VTBL_ENTRY _ZTV9S21126C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C11[];
extern Class_Descriptor cd_S21126C12;
extern VTBL_ENTRY _ZTI9S21126C12[];
extern  VTBL_ENTRY _ZTV9S21126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C12[];
static Base_Class bases_S21126C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21126C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S21126C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    ABISELECT(1176,768), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S4227C37,    ABISELECT(1160,760), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C11,    ABISELECT(1160,760), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C11,    ABISELECT(1168,764), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21126C12,    ABISELECT(1168,764), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21126C9[];
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C9D1Ev();
extern void _ZN8S21126C9D0Ev();
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21126C9D1Ev,_ZThn760_N8S21126C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21126C9D0Ev,_ZThn760_N8S21126C9D0Ev)();
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21126C9D1Ev,_ZThn764_N8S21126C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21126C9D0Ev,_ZThn764_N8S21126C9D0Ev)();
static  VTBL_ENTRY vtc_S21126C9[] = {
  ABISELECT(1176,768),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C9D0Ev,
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21126C9D1Ev,_ZThn760_N8S21126C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21126C9D0Ev,_ZThn760_N8S21126C9D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21126C9D1Ev,_ZThn764_N8S21126C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21126C9D0Ev,_ZThn764_N8S21126C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S21126C9[];
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C10__8S21126C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C10[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C11D1Ev();
extern void _ZN9S21126C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C11__8S21126C9[] = {
  ABISELECT(-1160,-760),
  ABISELECT(16,8),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C11__8S21126C9[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C12D1Ev();
extern void _ZN9S21126C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C12__8S21126C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C12[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C12D0Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C11D1Ev();
extern void _ZN9S21126C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C119S21126C12__A1__8S21126C9[] = {
  ABISELECT(-1168,-764),
  ABISELECT(8,4),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C119S21126C12__A1__8S21126C9[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C12__8S21126C9[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21126C12[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
static  VTT_ENTRY vtt_S21126C9[] = {
  {&(_ZTV8S21126C9[6]),  6,25},
  {&(_tg__ZTV9S21126C10__8S21126C9[4]),  4,5},
  {&(_tg__ZTV9S21126C10__8S21126C9[4]),  4,5},
  {&(_tg__ZTV9S21126C11__8S21126C9[5]),  5,8},
  {&(_tg__ZTV8S21126C5__9S21126C11__8S21126C9[3]),  3,4},
  {&(_tg__ZTV9S21126C12__8S21126C9[5]),  5,8},
  {&(_tg__ZTV9S21126C119S21126C12__A1__8S21126C9[5]),  5,8},
  {&(_tg__ZTV8S21126C5__9S21126C119S21126C12__A1__8S21126C9[3]),  3,4},
  {&(_tg__ZTV8S21126C5__9S21126C12__8S21126C9[3]),  3,4},
  {&(_ZTV8S21126C9[6]),  6,25},
  {&(_ZTV8S21126C9[14]),  14,25},
  {&(_ZTV8S21126C9[22]),  22,25},
};
extern VTBL_ENTRY _ZTI8S21126C9[];
extern  VTBL_ENTRY _ZTV8S21126C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C9[];
Class_Descriptor cd_S21126C9 = {  "S21126C9", // class name
  bases_S21126C9, 9,
  &(vtc_S21126C9[0]), // expected_vtbl_contents
  &(vtt_S21126C9[0]), // expected_vtt_contents
  ABISELECT(1216,808), // object size
  NSPAIRA(_ZTI8S21126C9),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S21126C9),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21126C9),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  S21126C4  : virtual S21126C5 , S21126C6 , virtual S21126C9 {
  virtual  ~S21126C4(); // _ZN8S21126C4D2Ev
  S21126C4(); // tgen
};
//SIG(-1 S21126C4) C1{ VBC2{ v1} BC3{ BC2 VBC4{ m FL[5]} BC5{ m} Fp[10]} VBC6{ VBC5 BC7{ VBC2 FC3[9]} BC8{ VBC4 VBC2 BC5 vd} BC9{ BC8 vd}} vd}


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

static void Test_S21126C4()
{
  extern Class_Descriptor cd_S21126C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(165,215)];
    init_test(&cd_S21126C4, buf);
    S21126C4 *dp, &lv = *(dp=new (buf) S21126C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1312,856), "sizeof(S21126C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21126C4)");
    /*is_ambiguous_... S21126C4::S21126C5 */ AMB_check_base_class_offset(lv, (S21126C5*), ABISELECT(128,84), "S21126C4");
    check_base_class_offset(lv, (S21126C5*)(S21126C10*)(S21126C9*), ABISELECT(128,84), "S21126C4");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S21126C5*)(S21126C11*)(S21126C9*), ABISELECT(128,84), "S21126C4");
    check_base_class_offset(lv, (S21126C5*)(S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(128,84), "S21126C4");
    check_base_class_offset(lv, (S21126C5*)(S21126C6*), 0, "S21126C4");
    check_base_class_offset(lv, (S20997C6*)(S21126C6*), ABISELECT(88,44), "S21126C4");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21126C11*)(S21126C9*), ABISELECT(88,44), "S21126C4");
    check_base_class_offset(lv, (S20997C6*)(S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(88,44), "S21126C4");
    check_base_class_offset(lv, (S4227C37*)(S21126C6*), 0, "S21126C4");
    check_base_class_offset(lv, (S21126C6*), 0, "S21126C4");
    /*is_ambiguous_... S21126C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21126C9*), ABISELECT(1304,852), "S21126C4");
    check_base_class_offset(lv, (S21126C10*)(S21126C9*), ABISELECT(128,84), "S21126C4");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21126C11*)(S21126C9*), ABISELECT(1288,844), "S21126C4");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S21126C11*)(S21126C9*), ABISELECT(1288,844), "S21126C4");
    check_base_class_offset(lv, (S4227C37*)(S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(1296,848), "S21126C4");
    check_base_class_offset(lv, (S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(1296,848), "S21126C4");
    check_base_class_offset(lv, (S21126C12*)(S21126C9*), ABISELECT(1296,848), "S21126C4");
    check_base_class_offset(lv, (S21126C9*), ABISELECT(128,84), "S21126C4");
    test_class_info(&lv, &cd_S21126C4);
    dp->~S21126C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21126C4(Test_S21126C4, "S21126C4", ABISELECT(1312,856));

#else // __cplusplus

extern void _ZN8S21126C4C1Ev();
extern void _ZN8S21126C4D2Ev();
Name_Map name_map_S21126C4[] = {
  NSPAIR(_ZN8S21126C4C1Ev),
  NSPAIR(_ZN8S21126C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C6;
extern VTBL_ENTRY _ZTI8S21126C6[];
extern  VTBL_ENTRY _ZTV8S21126C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C10;
extern VTBL_ENTRY _ZTI9S21126C10[];
extern  VTBL_ENTRY _ZTV9S21126C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C11;
extern VTBL_ENTRY _ZTI9S21126C11[];
extern  VTBL_ENTRY _ZTV9S21126C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C11;
extern VTBL_ENTRY _ZTI9S21126C11[];
extern  VTBL_ENTRY _ZTV9S21126C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C11[];
extern Class_Descriptor cd_S21126C12;
extern VTBL_ENTRY _ZTI9S21126C12[];
extern  VTBL_ENTRY _ZTV9S21126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C12[];
extern Class_Descriptor cd_S21126C9;
extern VTBL_ENTRY _ZTI8S21126C9[];
extern  VTBL_ENTRY _ZTV8S21126C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C9[];
static Base_Class bases_S21126C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21126C5,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21126C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21126C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C10,    ABISELECT(128,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1288,844), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C11,    ABISELECT(1288,844), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1296,848), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C11,    ABISELECT(1296,848), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21126C12,    ABISELECT(1296,848), //bcp->offset
    27, //bcp->virtual_function_table_offset
    5, //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
    12, //immediately_derived
  0, 0},
  {&cd_S21126C9,    ABISELECT(128,84), //bcp->offset
    9, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21126C4[];
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C4D1Ev();
extern void _ZN8S21126C4D0Ev();
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21126C4D1Ev,_ZTv0_n28_N8S21126C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21126C4D1Ev,_ZThn84_N8S21126C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21126C4D0Ev,_ZTv0_n28_N8S21126C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21126C4D0Ev,_ZThn84_N8S21126C4D0Ev)() __attribute__((weak));
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C4D1Ev,_ZTvn760_n28_N8S21126C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C4D0Ev,_ZTvn760_n28_N8S21126C4D0Ev)();
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C4D1Ev,_ZTvn764_n28_N8S21126C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C4D0Ev,_ZTvn764_n28_N8S21126C4D0Ev)();
static  VTBL_ENTRY vtc_S21126C4[] = {
  ABISELECT(1304,852),
  ABISELECT(128,84),
  ABISELECT(128,84),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C4D0Ev,
  ABISELECT(-128,-84),
  -40,
  ABISELECT(1176,768),
  0,
  0,
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C4D1Ev,_ZTv0_n28_N8S21126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C4D0Ev,_ZTv0_n28_N8S21126C4D0Ev),
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C4D1Ev,_ZTvn760_n28_N8S21126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C4D0Ev,_ZTvn760_n28_N8S21126C4D0Ev),
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C4D1Ev,_ZTvn764_n28_N8S21126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C4D0Ev,_ZTvn764_n28_N8S21126C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S21126C4[];
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C6__8S21126C4[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C6[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C9D1Ev();
extern void _ZN8S21126C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C9__8S21126C4[] = {
  -40,
  ABISELECT(1176,768),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C9D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C108S21126C9__8S21126C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C10[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C11D1Ev();
extern void _ZN9S21126C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C118S21126C9__8S21126C4[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C118S21126C9__8S21126C4[] = {
  0,
  ABISELECT(1160,760),
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C12D1Ev();
extern void _ZN9S21126C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C128S21126C9__8S21126C4[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C12[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C12D0Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C11D1Ev();
extern void _ZN9S21126C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C119S21126C128S21126C9__A1__8S21126C4[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C119S21126C128S21126C9__A1__8S21126C4[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C128S21126C9__8S21126C4[] = {
  0,
  ABISELECT(1168,764),
  (VTBL_ENTRY)&(_ZTI9S21126C12[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21126C9D1Ev,_ZThn760_N8S21126C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21126C9D0Ev,_ZThn760_N8S21126C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C11__8S21126C9__8S21126C4[] = {
  ABISELECT(-1160,-760),
  ABISELECT(-1200,-800),
  ABISELECT(-1160,-760),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21126C9D1Ev,_ZThn760_N8S21126C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21126C9D0Ev,_ZThn760_N8S21126C9D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21126C9D1Ev,_ZThn764_N8S21126C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21126C9D0Ev,_ZThn764_N8S21126C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C12__8S21126C9__8S21126C4[] = {
  ABISELECT(-1168,-764),
  ABISELECT(-1208,-804),
  ABISELECT(-1168,-764),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21126C9D1Ev,_ZThn764_N8S21126C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21126C9D0Ev,_ZThn764_N8S21126C9D0Ev),
};
static  VTT_ENTRY vtt_S21126C4[] = {
  {&(_ZTV8S21126C4[6]),  6,35},
  {&(_tg__ZTV8S21126C6__8S21126C4[3]),  3,4},
  {&(_ZTV8S21126C4[16]),  16,35},
  {&(_ZTV8S21126C4[16]),  16,35},
  {&(_ZTV8S21126C4[24]),  24,35},
  {&(_ZTV8S21126C4[32]),  32,35},
  {&(_tg__ZTV8S21126C9__8S21126C4[6]),  6,9},
  {&(_tg__ZTV9S21126C108S21126C9__8S21126C4[4]),  4,5},
  {&(_tg__ZTV9S21126C108S21126C9__8S21126C4[4]),  4,5},
  {&(_tg__ZTV9S21126C118S21126C9__8S21126C4[5]),  5,8},
  {&(_tg__ZTV8S21126C5__9S21126C118S21126C9__8S21126C4[3]),  3,4},
  {&(_tg__ZTV9S21126C128S21126C9__8S21126C4[5]),  5,8},
  {&(_tg__ZTV9S21126C119S21126C128S21126C9__A1__8S21126C4[5]),  5,8},
  {&(_tg__ZTV8S21126C5__9S21126C119S21126C128S21126C9__A1__8S21126C4[3]),  3,4},
  {&(_tg__ZTV8S21126C5__9S21126C128S21126C9__8S21126C4[3]),  3,4},
  {&(_tg__ZTV8S21126C9__8S21126C4[6]),  6,9},
  {&(_tg__ZTV9S21126C11__8S21126C9__8S21126C4[5]),  5,8},
  {&(_tg__ZTV9S21126C12__8S21126C9__8S21126C4[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21126C4[];
extern  VTBL_ENTRY _ZTV8S21126C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C4[];
static VTBL_ENTRY alt_thunk_names131[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C4D0Ev,_ZTv0_n28_N8S21126C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21126C4D0Ev,_ZThn84_N8S21126C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C4D1Ev,_ZTv0_n28_N8S21126C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21126C4D1Ev,_ZThn84_N8S21126C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21126C4 = {  "S21126C4", // class name
  bases_S21126C4, 13,
  &(vtc_S21126C4[0]), // expected_vtbl_contents
  &(vtt_S21126C4[0]), // expected_vtt_contents
  ABISELECT(1312,856), // object size
  NSPAIRA(_ZTI8S21126C4),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21126C4),35, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21126C4),18, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names131,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21126C3  : virtual S21126C4 {
  int s21126c3f0;
  ~S21126C3(); // tgen
  S21126C3(); // tgen
};
//SIG(-1 S21126C3) C1{ VBC2{ VBC3{ v1} BC4{ BC3 VBC5{ m FL[5]} BC6{ m} Fp[10]} VBC7{ VBC6 BC8{ VBC3 FC4[9]} BC9{ VBC5 VBC3 BC6 vd} BC10{ BC9 vd}} vd} Fi}


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

static void Test_S21126C3()
{
  extern Class_Descriptor cd_S21126C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(166,216)];
    init_test(&cd_S21126C3, buf);
    S21126C3 *dp, &lv = *(dp=new (buf) S21126C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1320,860), "sizeof(S21126C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21126C3)");
    /*is_ambiguous_... S21126C4::S21126C5 */ AMB_check_base_class_offset(lv, (S21126C5*)(S21126C4*), 0, "S21126C3");
    check_base_class_offset(lv, (S21126C5*)(S21126C10*)(S21126C9*), 0, "S21126C3");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S21126C5*)(S21126C11*)(S21126C9*), 0, "S21126C3");
    check_base_class_offset(lv, (S21126C5*)(S21126C11*)(S21126C12*)(S21126C9*), 0, "S21126C3");
    check_base_class_offset(lv, (S21126C5*)(S21126C6*)(S21126C4*), ABISELECT(16,8), "S21126C3");
    check_base_class_offset(lv, (S20997C6*)(S21126C6*)(S21126C4*), ABISELECT(104,52), "S21126C3");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21126C11*)(S21126C9*), ABISELECT(104,52), "S21126C3");
    check_base_class_offset(lv, (S20997C6*)(S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(104,52), "S21126C3");
    check_base_class_offset(lv, (S4227C37*)(S21126C6*)(S21126C4*), ABISELECT(16,8), "S21126C3");
    check_base_class_offset(lv, (S21126C6*)(S21126C4*), ABISELECT(16,8), "S21126C3");
    /*is_ambiguous_... S21126C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21126C9*), 0, "S21126C3");
    check_base_class_offset(lv, (S21126C10*)(S21126C9*), ABISELECT(144,92), "S21126C3");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21126C11*)(S21126C9*), ABISELECT(1304,852), "S21126C3");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S21126C11*)(S21126C9*), ABISELECT(1304,852), "S21126C3");
    check_base_class_offset(lv, (S4227C37*)(S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(1312,856), "S21126C3");
    check_base_class_offset(lv, (S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(1312,856), "S21126C3");
    check_base_class_offset(lv, (S21126C12*)(S21126C9*), ABISELECT(1312,856), "S21126C3");
    check_base_class_offset(lv, (S21126C9*)(S21126C4*), ABISELECT(144,92), "S21126C3");
    check_base_class_offset(lv, (S21126C4*), ABISELECT(16,8), "S21126C3");
    check_field_offset(lv, s21126c3f0, ABISELECT(8,4), "S21126C3.s21126c3f0");
    test_class_info(&lv, &cd_S21126C3);
    dp->~S21126C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21126C3(Test_S21126C3, "S21126C3", ABISELECT(1320,860));

#else // __cplusplus

extern void _ZN8S21126C3C1Ev();
extern void _ZN8S21126C3D1Ev();
Name_Map name_map_S21126C3[] = {
  NSPAIR(_ZN8S21126C3C1Ev),
  NSPAIR(_ZN8S21126C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C6;
extern VTBL_ENTRY _ZTI8S21126C6[];
extern  VTBL_ENTRY _ZTV8S21126C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C10;
extern VTBL_ENTRY _ZTI9S21126C10[];
extern  VTBL_ENTRY _ZTV9S21126C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C11;
extern VTBL_ENTRY _ZTI9S21126C11[];
extern  VTBL_ENTRY _ZTV9S21126C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C11;
extern VTBL_ENTRY _ZTI9S21126C11[];
extern  VTBL_ENTRY _ZTV9S21126C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C11[];
extern Class_Descriptor cd_S21126C12;
extern VTBL_ENTRY _ZTI9S21126C12[];
extern  VTBL_ENTRY _ZTV9S21126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C12[];
extern Class_Descriptor cd_S21126C9;
extern VTBL_ENTRY _ZTI8S21126C9[];
extern  VTBL_ENTRY _ZTV8S21126C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C9[];
extern Class_Descriptor cd_S21126C4;
extern VTBL_ENTRY _ZTI8S21126C4[];
extern  VTBL_ENTRY _ZTV8S21126C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C4[];
static Base_Class bases_S21126C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21126C5,    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
    6, //immediately_derived
  0, 1},
  {&cd_S21126C5,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21126C6,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C10,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1304,852), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C11,    ABISELECT(1304,852), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1312,856), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C11,    ABISELECT(1312,856), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21126C12,    ABISELECT(1312,856), //bcp->offset
    40, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21126C9,    ABISELECT(144,92), //bcp->offset
    22, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21126C4,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21126C3[];
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C3D1Ev();
extern void _ZN8S21126C3D0Ev();
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21126C3D1Ev,_ZTv0_n32_N8S21126C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21126C3D1Ev,_ZThn8_N8S21126C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21126C3D0Ev,_ZTv0_n32_N8S21126C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21126C3D0Ev,_ZThn8_N8S21126C3D0Ev)() __attribute__((weak));
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21126C3D1Ev,_ZTv0_n28_N8S21126C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S21126C3D1Ev,_ZThn92_N8S21126C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21126C3D0Ev,_ZTv0_n28_N8S21126C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S21126C3D0Ev,_ZThn92_N8S21126C3D0Ev)() __attribute__((weak));
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C3D1Ev,_ZTvn760_n28_N8S21126C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C3D0Ev,_ZTvn760_n28_N8S21126C3D0Ev)();
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C3D1Ev,_ZTvn764_n28_N8S21126C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C3D0Ev,_ZTvn764_n28_N8S21126C3D0Ev)();
static  VTBL_ENTRY vtc_S21126C3[] = {
  0,
  ABISELECT(144,92),
  ABISELECT(104,52),
  0,
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C3D0Ev,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-16,-8),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21126C3D1Ev,_ZTv0_n32_N8S21126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21126C3D0Ev,_ZTv0_n32_N8S21126C3D0Ev),
  ABISELECT(-144,-92),
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C3D1Ev,_ZTv0_n28_N8S21126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C3D0Ev,_ZTv0_n28_N8S21126C3D0Ev),
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1304,-852),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C3D1Ev,_ZTvn760_n28_N8S21126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C3D0Ev,_ZTvn760_n28_N8S21126C3D0Ev),
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C3D1Ev,_ZTvn764_n28_N8S21126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C3D0Ev,_ZTvn764_n28_N8S21126C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S21126C3[];
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C4D1Ev();
extern void _ZN8S21126C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C4__8S21126C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(128,84),
  ABISELECT(-16,-8),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C4D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C68S21126C4__8S21126C3[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C6[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__8S21126C4__8S21126C3[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21126C4D1Ev,_ZTv0_n28_N8S21126C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21126C4D1Ev,_ZThn84_N8S21126C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21126C4D0Ev,_ZTv0_n28_N8S21126C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21126C4D0Ev,_ZThn84_N8S21126C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21126C9__8S21126C4__8S21126C3[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C4D1Ev,_ZTv0_n28_N8S21126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C4D0Ev,_ZTv0_n28_N8S21126C4D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C4D1Ev,_ZTvn760_n28_N8S21126C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C4D0Ev,_ZTvn760_n28_N8S21126C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C118S21126C9__8S21126C4__8S21126C3[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C4D1Ev,_ZTvn760_n28_N8S21126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C4D0Ev,_ZTvn760_n28_N8S21126C4D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C4D1Ev,_ZTvn764_n28_N8S21126C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C4D0Ev,_ZTvn764_n28_N8S21126C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C128S21126C9__8S21126C4__8S21126C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C4D1Ev,_ZTvn764_n28_N8S21126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C4D0Ev,_ZTvn764_n28_N8S21126C4D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C9D1Ev();
extern void _ZN8S21126C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C9__8S21126C3[] = {
  -40,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C9D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C108S21126C9__8S21126C3[] = {
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C10[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C108S21126C9__8S21126C3[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI9S21126C10[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C11D1Ev();
extern void _ZN9S21126C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C118S21126C9__8S21126C3[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C118S21126C9__8S21126C3[] = {
  0,
  ABISELECT(1304,852),
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C12D1Ev();
extern void _ZN9S21126C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C128S21126C9__8S21126C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C12[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C12D0Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C11D1Ev();
extern void _ZN9S21126C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C119S21126C128S21126C9__A1__8S21126C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C119S21126C128S21126C9__A1__8S21126C3[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C128S21126C9__8S21126C3[] = {
  0,
  ABISELECT(1312,856),
  (VTBL_ENTRY)&(_ZTI9S21126C12[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__8S21126C9__8S21126C3[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21126C9D1Ev,_ZThn760_N8S21126C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21126C9D0Ev,_ZThn760_N8S21126C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C11__8S21126C9__8S21126C3[] = {
  ABISELECT(-1304,-852),
  ABISELECT(-1200,-800),
  ABISELECT(-1304,-852),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21126C9D1Ev,_ZThn760_N8S21126C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21126C9D0Ev,_ZThn760_N8S21126C9D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21126C9D1Ev,_ZThn764_N8S21126C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21126C9D0Ev,_ZThn764_N8S21126C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C12__8S21126C9__8S21126C3[] = {
  ABISELECT(-1312,-856),
  ABISELECT(-1208,-804),
  ABISELECT(-1312,-856),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21126C9D1Ev,_ZThn764_N8S21126C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21126C9D0Ev,_ZThn764_N8S21126C9D0Ev),
};
static  VTT_ENTRY vtt_S21126C3[] = {
  {&(_ZTV8S21126C3[8]),  8,48},
  {&(_ZTV8S21126C3[19]),  19,48},
  {&(_ZTV8S21126C3[8]),  8,48},
  {&(_ZTV8S21126C3[29]),  29,48},
  {&(_ZTV8S21126C3[37]),  37,48},
  {&(_ZTV8S21126C3[45]),  45,48},
  {&(_tg__ZTV8S21126C4__8S21126C3[6]),  6,9},
  {&(_tg__ZTV8S21126C68S21126C4__8S21126C3[3]),  3,4},
  {&(_tg__ZTV8S21126C5__8S21126C4__8S21126C3[3]),  3,4},
  {&(_tg__ZTV8S21126C9__8S21126C4__8S21126C3[7]),  7,10},
  {&(_tg__ZTV9S21126C118S21126C9__8S21126C4__8S21126C3[5]),  5,8},
  {&(_tg__ZTV9S21126C128S21126C9__8S21126C4__8S21126C3[5]),  5,8},
  {&(_tg__ZTV8S21126C9__8S21126C3[6]),  6,9},
  {&(_tg__ZTV9S21126C108S21126C9__8S21126C3[4]),  4,5},
  {&(_tg__ZTV8S21126C5__9S21126C108S21126C9__8S21126C3[3]),  3,4},
  {&(_tg__ZTV9S21126C118S21126C9__8S21126C3[5]),  5,8},
  {&(_tg__ZTV8S21126C5__9S21126C118S21126C9__8S21126C3[3]),  3,4},
  {&(_tg__ZTV9S21126C128S21126C9__8S21126C3[5]),  5,8},
  {&(_tg__ZTV9S21126C119S21126C128S21126C9__A1__8S21126C3[5]),  5,8},
  {&(_tg__ZTV8S21126C5__9S21126C119S21126C128S21126C9__A1__8S21126C3[3]),  3,4},
  {&(_tg__ZTV8S21126C5__9S21126C128S21126C9__8S21126C3[3]),  3,4},
  {&(_tg__ZTV8S21126C5__8S21126C9__8S21126C3[3]),  3,4},
  {&(_tg__ZTV9S21126C11__8S21126C9__8S21126C3[5]),  5,8},
  {&(_tg__ZTV9S21126C12__8S21126C9__8S21126C3[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21126C3[];
extern  VTBL_ENTRY _ZTV8S21126C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C3[];
static VTBL_ENTRY alt_thunk_names132[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C4D0Ev,_ZTv0_n28_N8S21126C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21126C4D0Ev,_ZThn84_N8S21126C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C4D1Ev,_ZTv0_n28_N8S21126C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21126C4D1Ev,_ZThn84_N8S21126C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C3D0Ev,_ZTv0_n28_N8S21126C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21126C3D0Ev,_ZThn92_N8S21126C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C3D1Ev,_ZTv0_n28_N8S21126C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21126C3D1Ev,_ZThn92_N8S21126C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21126C3D0Ev,_ZTv0_n32_N8S21126C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21126C3D0Ev,_ZThn8_N8S21126C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21126C3D1Ev,_ZTv0_n32_N8S21126C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21126C3D1Ev,_ZThn8_N8S21126C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21126C3 = {  "S21126C3", // class name
  bases_S21126C3, 14,
  &(vtc_S21126C3[0]), // expected_vtbl_contents
  &(vtt_S21126C3[0]), // expected_vtt_contents
  ABISELECT(1320,860), // object size
  NSPAIRA(_ZTI8S21126C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21126C3),48, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21126C3),24, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names132,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21126C2  : virtual S21126C3 {
  char s21126c2f0;
  ~S21126C2(); // tgen
  S21126C2(); // tgen
};
//SIG(-1 S21126C2) C1{ VBC2{ VBC3{ VBC4{ v1} BC5{ BC4 VBC6{ m FL[5]} BC7{ m} Fp[10]} VBC8{ VBC7 BC9{ VBC4 FC5[9]} BC10{ VBC6 VBC4 BC7 vd} BC11{ BC10 vd}} vd} Fi} Fc}


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

static void Test_S21126C2()
{
  extern Class_Descriptor cd_S21126C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(168,218)];
    init_test(&cd_S21126C2, buf);
    S21126C2 *dp, &lv = *(dp=new (buf) S21126C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1336,868), "sizeof(S21126C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21126C2)");
    /*is_ambiguous_... S21126C4::S21126C5 */ AMB_check_base_class_offset(lv, (S21126C5*)(S21126C4*), 0, "S21126C2");
    check_base_class_offset(lv, (S21126C5*)(S21126C10*)(S21126C9*), 0, "S21126C2");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S21126C5*)(S21126C11*)(S21126C9*), 0, "S21126C2");
    check_base_class_offset(lv, (S21126C5*)(S21126C11*)(S21126C12*)(S21126C9*), 0, "S21126C2");
    check_base_class_offset(lv, (S21126C5*)(S21126C6*)(S21126C4*), ABISELECT(32,16), "S21126C2");
    check_base_class_offset(lv, (S20997C6*)(S21126C6*)(S21126C4*), ABISELECT(120,60), "S21126C2");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21126C11*)(S21126C9*), ABISELECT(120,60), "S21126C2");
    check_base_class_offset(lv, (S20997C6*)(S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(120,60), "S21126C2");
    check_base_class_offset(lv, (S4227C37*)(S21126C6*)(S21126C4*), ABISELECT(32,16), "S21126C2");
    check_base_class_offset(lv, (S21126C6*)(S21126C4*), ABISELECT(32,16), "S21126C2");
    /*is_ambiguous_... S21126C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21126C9*), 0, "S21126C2");
    check_base_class_offset(lv, (S21126C10*)(S21126C9*), ABISELECT(160,100), "S21126C2");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21126C11*)(S21126C9*), ABISELECT(1320,860), "S21126C2");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S21126C11*)(S21126C9*), ABISELECT(1320,860), "S21126C2");
    check_base_class_offset(lv, (S4227C37*)(S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(1328,864), "S21126C2");
    check_base_class_offset(lv, (S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(1328,864), "S21126C2");
    check_base_class_offset(lv, (S21126C12*)(S21126C9*), ABISELECT(1328,864), "S21126C2");
    check_base_class_offset(lv, (S21126C9*)(S21126C4*), ABISELECT(160,100), "S21126C2");
    check_base_class_offset(lv, (S21126C4*)(S21126C3*), ABISELECT(32,16), "S21126C2");
    check_base_class_offset(lv, (S21126C3*), ABISELECT(16,8), "S21126C2");
    check_field_offset(lv, s21126c2f0, ABISELECT(8,4), "S21126C2.s21126c2f0");
    test_class_info(&lv, &cd_S21126C2);
    dp->~S21126C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21126C2(Test_S21126C2, "S21126C2", ABISELECT(1336,868));

#else // __cplusplus

extern void _ZN8S21126C2C1Ev();
extern void _ZN8S21126C2D1Ev();
Name_Map name_map_S21126C2[] = {
  NSPAIR(_ZN8S21126C2C1Ev),
  NSPAIR(_ZN8S21126C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C6;
extern VTBL_ENTRY _ZTI8S21126C6[];
extern  VTBL_ENTRY _ZTV8S21126C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C10;
extern VTBL_ENTRY _ZTI9S21126C10[];
extern  VTBL_ENTRY _ZTV9S21126C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C11;
extern VTBL_ENTRY _ZTI9S21126C11[];
extern  VTBL_ENTRY _ZTV9S21126C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C11;
extern VTBL_ENTRY _ZTI9S21126C11[];
extern  VTBL_ENTRY _ZTV9S21126C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C11[];
extern Class_Descriptor cd_S21126C12;
extern VTBL_ENTRY _ZTI9S21126C12[];
extern  VTBL_ENTRY _ZTV9S21126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C12[];
extern Class_Descriptor cd_S21126C9;
extern VTBL_ENTRY _ZTI8S21126C9[];
extern  VTBL_ENTRY _ZTV8S21126C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C9[];
extern Class_Descriptor cd_S21126C4;
extern VTBL_ENTRY _ZTI8S21126C4[];
extern  VTBL_ENTRY _ZTV8S21126C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C4[];
extern Class_Descriptor cd_S21126C3;
extern VTBL_ENTRY _ZTI8S21126C3[];
extern  VTBL_ENTRY _ZTV8S21126C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C3[];
static Base_Class bases_S21126C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21126C5,    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
    6, //immediately_derived
  0, 1},
  {&cd_S21126C5,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21126C6,    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
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C10,    ABISELECT(160,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1320,860), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C11,    ABISELECT(1320,860), //bcp->offset
    45, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21126C11,    ABISELECT(1328,864), //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
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S21126C12,    ABISELECT(1328,864), //bcp->offset
    53, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21126C9,    ABISELECT(160,100), //bcp->offset
    35, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21126C4,    ABISELECT(32,16), //bcp->offset
    24, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21126C3,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21126C2[];
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C2D1Ev();
extern void _ZN8S21126C2D0Ev();
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21126C2D1Ev,_ZTv0_n36_N8S21126C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21126C2D1Ev,_ZThn8_N8S21126C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21126C2D0Ev,_ZTv0_n36_N8S21126C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S21126C2D0Ev,_ZThn8_N8S21126C2D0Ev)() __attribute__((weak));
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21126C2D1Ev,_ZTv0_n32_N8S21126C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21126C2D1Ev,_ZThn16_N8S21126C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21126C2D0Ev,_ZTv0_n32_N8S21126C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21126C2D0Ev,_ZThn16_N8S21126C2D0Ev)() __attribute__((weak));
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21126C2D1Ev,_ZTv0_n28_N8S21126C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S21126C2D1Ev,_ZThn100_N8S21126C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21126C2D0Ev,_ZTv0_n28_N8S21126C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S21126C2D0Ev,_ZThn100_N8S21126C2D0Ev)() __attribute__((weak));
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C2D1Ev,_ZTvn760_n28_N8S21126C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C2D0Ev,_ZTvn760_n28_N8S21126C2D0Ev)();
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C2D1Ev,_ZTvn764_n28_N8S21126C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C2D0Ev,_ZTvn764_n28_N8S21126C2D0Ev)();
static  VTBL_ENTRY vtc_S21126C2[] = {
  0,
  ABISELECT(160,100),
  ABISELECT(120,60),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21126C2D1Ev,_ZTv0_n36_N8S21126C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21126C2D0Ev,_ZTv0_n36_N8S21126C2D0Ev),
  ABISELECT(-32,-16),
  0,
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-32,-16),
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21126C2D1Ev,_ZTv0_n32_N8S21126C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21126C2D0Ev,_ZTv0_n32_N8S21126C2D0Ev),
  ABISELECT(-160,-100),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C2D1Ev,_ZTv0_n28_N8S21126C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C2D0Ev,_ZTv0_n28_N8S21126C2D0Ev),
  ABISELECT(-1320,-860),
  ABISELECT(-1200,-800),
  ABISELECT(-1320,-860),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C2D1Ev,_ZTvn760_n28_N8S21126C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C2D0Ev,_ZTvn760_n28_N8S21126C2D0Ev),
  ABISELECT(-1328,-864),
  ABISELECT(-1208,-804),
  ABISELECT(-1328,-864),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C2D1Ev,_ZTvn764_n28_N8S21126C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C2D0Ev,_ZTvn764_n28_N8S21126C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S21126C2[];
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C3D1Ev();
extern void _ZN8S21126C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C3__8S21126C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(144,92),
  ABISELECT(104,52),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C3D0Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21126C3D1Ev,_ZTv0_n32_N8S21126C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21126C3D1Ev,_ZThn8_N8S21126C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21126C3D0Ev,_ZTv0_n32_N8S21126C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21126C3D0Ev,_ZThn8_N8S21126C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21126C4__8S21126C3__8S21126C2[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-32,-16),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21126C3D1Ev,_ZTv0_n32_N8S21126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21126C3D0Ev,_ZTv0_n32_N8S21126C3D0Ev),
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__8S21126C3__8S21126C2[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21126C3D1Ev,_ZTv0_n28_N8S21126C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S21126C3D1Ev,_ZThn92_N8S21126C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21126C3D0Ev,_ZTv0_n28_N8S21126C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S21126C3D0Ev,_ZThn92_N8S21126C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21126C9__8S21126C3__8S21126C2[] = {
  ABISELECT(-144,-92),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C3D1Ev,_ZTv0_n28_N8S21126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C3D0Ev,_ZTv0_n28_N8S21126C3D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C3D1Ev,_ZTvn760_n28_N8S21126C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C3D0Ev,_ZTvn760_n28_N8S21126C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C118S21126C9__8S21126C3__8S21126C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1200,-800),
  ABISELECT(-1320,-860),
  ABISELECT(-1304,-852),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C3D1Ev,_ZTvn760_n28_N8S21126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C3D0Ev,_ZTvn760_n28_N8S21126C3D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C3D1Ev,_ZTvn764_n28_N8S21126C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C3D0Ev,_ZTvn764_n28_N8S21126C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C128S21126C9__8S21126C3__8S21126C2[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1208,-804),
  ABISELECT(-1328,-864),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C3D1Ev,_ZTvn764_n28_N8S21126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C3D0Ev,_ZTvn764_n28_N8S21126C3D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C4D1Ev();
extern void _ZN8S21126C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C4__8S21126C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(128,84),
  ABISELECT(-32,-16),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C4D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C68S21126C4__8S21126C2[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C6[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__8S21126C4__8S21126C2[] = {
  0,
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21126C4D1Ev,_ZTv0_n28_N8S21126C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21126C4D1Ev,_ZThn84_N8S21126C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21126C4D0Ev,_ZTv0_n28_N8S21126C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21126C4D0Ev,_ZThn84_N8S21126C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21126C9__8S21126C4__8S21126C2[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C4D1Ev,_ZTv0_n28_N8S21126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C4D0Ev,_ZTv0_n28_N8S21126C4D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C4D1Ev,_ZTvn760_n28_N8S21126C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C4D0Ev,_ZTvn760_n28_N8S21126C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C118S21126C9__8S21126C4__8S21126C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1200,-800),
  ABISELECT(-1320,-860),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C4D1Ev,_ZTvn760_n28_N8S21126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C4D0Ev,_ZTvn760_n28_N8S21126C4D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C4D1Ev,_ZTvn764_n28_N8S21126C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C4D0Ev,_ZTvn764_n28_N8S21126C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C128S21126C9__8S21126C4__8S21126C2[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1208,-804),
  ABISELECT(-1328,-864),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C4D1Ev,_ZTvn764_n28_N8S21126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C4D0Ev,_ZTvn764_n28_N8S21126C4D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C9D1Ev();
extern void _ZN8S21126C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C9__8S21126C2[] = {
  -40,
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C9D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C108S21126C9__8S21126C2[] = {
  ABISELECT(-160,-100),
  ABISELECT(-160,-100),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C10[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C108S21126C9__8S21126C2[] = {
  0,
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI9S21126C10[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C11D1Ev();
extern void _ZN9S21126C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C118S21126C9__8S21126C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1200,-800),
  ABISELECT(-1320,-860),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C118S21126C9__8S21126C2[] = {
  0,
  ABISELECT(1320,860),
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C12D1Ev();
extern void _ZN9S21126C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C128S21126C9__8S21126C2[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1208,-804),
  ABISELECT(-1328,-864),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C12[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C12D0Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C11D1Ev();
extern void _ZN9S21126C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C119S21126C128S21126C9__A1__8S21126C2[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1208,-804),
  ABISELECT(-1328,-864),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C119S21126C128S21126C9__A1__8S21126C2[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C128S21126C9__8S21126C2[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI9S21126C12[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__8S21126C9__8S21126C2[] = {
  0,
  ABISELECT(160,100),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21126C9D1Ev,_ZThn760_N8S21126C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21126C9D0Ev,_ZThn760_N8S21126C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C11__8S21126C9__8S21126C2[] = {
  ABISELECT(-1320,-860),
  ABISELECT(-1200,-800),
  ABISELECT(-1320,-860),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21126C9D1Ev,_ZThn760_N8S21126C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21126C9D0Ev,_ZThn760_N8S21126C9D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21126C9D1Ev,_ZThn764_N8S21126C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21126C9D0Ev,_ZThn764_N8S21126C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C12__8S21126C9__8S21126C2[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1208,-804),
  ABISELECT(-1328,-864),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21126C9D1Ev,_ZThn764_N8S21126C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21126C9D0Ev,_ZThn764_N8S21126C9D0Ev),
};
static  VTT_ENTRY vtt_S21126C2[] = {
  {&(_ZTV8S21126C2[9]),  9,61},
  {&(_ZTV8S21126C2[21]),  21,61},
  {&(_ZTV8S21126C2[32]),  32,61},
  {&(_ZTV8S21126C2[9]),  9,61},
  {&(_ZTV8S21126C2[42]),  42,61},
  {&(_ZTV8S21126C2[50]),  50,61},
  {&(_ZTV8S21126C2[58]),  58,61},
  {&(_tg__ZTV8S21126C3__8S21126C2[8]),  8,11},
  {&(_tg__ZTV8S21126C4__8S21126C3__8S21126C2[8]),  8,11},
  {&(_tg__ZTV8S21126C5__8S21126C3__8S21126C2[3]),  3,4},
  {&(_tg__ZTV8S21126C9__8S21126C3__8S21126C2[7]),  7,10},
  {&(_tg__ZTV9S21126C118S21126C9__8S21126C3__8S21126C2[5]),  5,8},
  {&(_tg__ZTV9S21126C128S21126C9__8S21126C3__8S21126C2[5]),  5,8},
  {&(_tg__ZTV8S21126C4__8S21126C2[6]),  6,9},
  {&(_tg__ZTV8S21126C68S21126C4__8S21126C2[3]),  3,4},
  {&(_tg__ZTV8S21126C5__8S21126C4__8S21126C2[3]),  3,4},
  {&(_tg__ZTV8S21126C9__8S21126C4__8S21126C2[7]),  7,10},
  {&(_tg__ZTV9S21126C118S21126C9__8S21126C4__8S21126C2[5]),  5,8},
  {&(_tg__ZTV9S21126C128S21126C9__8S21126C4__8S21126C2[5]),  5,8},
  {&(_tg__ZTV8S21126C9__8S21126C2[6]),  6,9},
  {&(_tg__ZTV9S21126C108S21126C9__8S21126C2[4]),  4,5},
  {&(_tg__ZTV8S21126C5__9S21126C108S21126C9__8S21126C2[3]),  3,4},
  {&(_tg__ZTV9S21126C118S21126C9__8S21126C2[5]),  5,8},
  {&(_tg__ZTV8S21126C5__9S21126C118S21126C9__8S21126C2[3]),  3,4},
  {&(_tg__ZTV9S21126C128S21126C9__8S21126C2[5]),  5,8},
  {&(_tg__ZTV9S21126C119S21126C128S21126C9__A1__8S21126C2[5]),  5,8},
  {&(_tg__ZTV8S21126C5__9S21126C119S21126C128S21126C9__A1__8S21126C2[3]),  3,4},
  {&(_tg__ZTV8S21126C5__9S21126C128S21126C9__8S21126C2[3]),  3,4},
  {&(_tg__ZTV8S21126C5__8S21126C9__8S21126C2[3]),  3,4},
  {&(_tg__ZTV9S21126C11__8S21126C9__8S21126C2[5]),  5,8},
  {&(_tg__ZTV9S21126C12__8S21126C9__8S21126C2[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21126C2[];
extern  VTBL_ENTRY _ZTV8S21126C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C2[];
static VTBL_ENTRY alt_thunk_names133[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C4D0Ev,_ZTv0_n28_N8S21126C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21126C4D0Ev,_ZThn84_N8S21126C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C4D1Ev,_ZTv0_n28_N8S21126C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21126C4D1Ev,_ZThn84_N8S21126C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C3D0Ev,_ZTv0_n28_N8S21126C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21126C3D0Ev,_ZThn92_N8S21126C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C3D1Ev,_ZTv0_n28_N8S21126C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21126C3D1Ev,_ZThn92_N8S21126C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21126C3D0Ev,_ZTv0_n32_N8S21126C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21126C3D0Ev,_ZThn8_N8S21126C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21126C3D1Ev,_ZTv0_n32_N8S21126C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21126C3D1Ev,_ZThn8_N8S21126C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C2D0Ev,_ZTv0_n28_N8S21126C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21126C2D0Ev,_ZThn100_N8S21126C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C2D1Ev,_ZTv0_n28_N8S21126C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21126C2D1Ev,_ZThn100_N8S21126C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21126C2D0Ev,_ZTv0_n32_N8S21126C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21126C2D0Ev,_ZThn16_N8S21126C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21126C2D1Ev,_ZTv0_n32_N8S21126C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21126C2D1Ev,_ZThn16_N8S21126C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21126C2D0Ev,_ZTv0_n36_N8S21126C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21126C2D0Ev,_ZThn8_N8S21126C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21126C2D1Ev,_ZTv0_n36_N8S21126C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21126C2D1Ev,_ZThn8_N8S21126C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21126C2 = {  "S21126C2", // class name
  bases_S21126C2, 15,
  &(vtc_S21126C2[0]), // expected_vtbl_contents
  &(vtt_S21126C2[0]), // expected_vtt_contents
  ABISELECT(1336,868), // object size
  NSPAIRA(_ZTI8S21126C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21126C2),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21126C2),31, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names133,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21126C1  : virtual S21126C2 {
  virtual  ~S21126C1(); // _ZN8S21126C1D2Ev
  S21126C1(); // tgen
};
//SIG(1 S21126C1) C1{ VBC2{ VBC3{ VBC4{ VBC5{ v1} BC6{ BC5 VBC7{ m FL[5]} BC8{ m} Fp[10]} VBC9{ VBC8 BC10{ VBC5 FC6[9]} BC11{ VBC7 VBC5 BC8 vd} BC12{ BC11 vd}} vd} Fi} Fc} vd}


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

static void Test_S21126C1()
{
  extern Class_Descriptor cd_S21126C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(169,219)];
    init_test(&cd_S21126C1, buf);
    S21126C1 *dp, &lv = *(dp=new (buf) S21126C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1344,872), "sizeof(S21126C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21126C1)");
    /*is_ambiguous_... S21126C4::S21126C5 */ AMB_check_base_class_offset(lv, (S21126C5*)(S21126C4*), 0, "S21126C1");
    check_base_class_offset(lv, (S21126C5*)(S21126C10*)(S21126C9*), 0, "S21126C1");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S21126C5*)(S21126C11*)(S21126C9*), 0, "S21126C1");
    check_base_class_offset(lv, (S21126C5*)(S21126C11*)(S21126C12*)(S21126C9*), 0, "S21126C1");
    check_base_class_offset(lv, (S21126C5*)(S21126C6*)(S21126C4*), ABISELECT(40,20), "S21126C1");
    check_base_class_offset(lv, (S20997C6*)(S21126C6*)(S21126C4*), ABISELECT(128,64), "S21126C1");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S20997C6*)(S21126C11*)(S21126C9*), ABISELECT(128,64), "S21126C1");
    check_base_class_offset(lv, (S20997C6*)(S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(128,64), "S21126C1");
    check_base_class_offset(lv, (S4227C37*)(S21126C6*)(S21126C4*), ABISELECT(40,20), "S21126C1");
    check_base_class_offset(lv, (S21126C6*)(S21126C4*), ABISELECT(40,20), "S21126C1");
    /*is_ambiguous_... S21126C9::S4227C37 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21126C9*), 0, "S21126C1");
    check_base_class_offset(lv, (S21126C10*)(S21126C9*), ABISELECT(168,104), "S21126C1");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S4227C37*)(S21126C11*)(S21126C9*), ABISELECT(1328,864), "S21126C1");
    /*is_ambiguous_... S21126C9::S21126C11 */ AMB_check_base_class_offset(lv, (S21126C11*)(S21126C9*), ABISELECT(1328,864), "S21126C1");
    check_base_class_offset(lv, (S4227C37*)(S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(1336,868), "S21126C1");
    check_base_class_offset(lv, (S21126C11*)(S21126C12*)(S21126C9*), ABISELECT(1336,868), "S21126C1");
    check_base_class_offset(lv, (S21126C12*)(S21126C9*), ABISELECT(1336,868), "S21126C1");
    check_base_class_offset(lv, (S21126C9*)(S21126C4*), ABISELECT(168,104), "S21126C1");
    check_base_class_offset(lv, (S21126C4*)(S21126C3*), ABISELECT(40,20), "S21126C1");
    check_base_class_offset(lv, (S21126C3*)(S21126C2*), ABISELECT(24,12), "S21126C1");
    check_base_class_offset(lv, (S21126C2*), ABISELECT(8,4), "S21126C1");
    test_class_info(&lv, &cd_S21126C1);
    dp->~S21126C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21126C1(Test_S21126C1, "S21126C1", ABISELECT(1344,872));

#else // __cplusplus

extern void _ZN8S21126C1C1Ev();
extern void _ZN8S21126C1D2Ev();
Name_Map name_map_S21126C1[] = {
  NSPAIR(_ZN8S21126C1C1Ev),
  NSPAIR(_ZN8S21126C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
extern Class_Descriptor cd_S21126C5;
extern VTBL_ENTRY _ZTI8S21126C5[];
extern  VTBL_ENTRY _ZTV8S21126C5[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C6;
extern VTBL_ENTRY _ZTI8S21126C6[];
extern  VTBL_ENTRY _ZTV8S21126C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C6[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C10;
extern VTBL_ENTRY _ZTI9S21126C10[];
extern  VTBL_ENTRY _ZTV9S21126C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C10[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C11;
extern VTBL_ENTRY _ZTI9S21126C11[];
extern  VTBL_ENTRY _ZTV9S21126C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C11[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S21126C11;
extern VTBL_ENTRY _ZTI9S21126C11[];
extern  VTBL_ENTRY _ZTV9S21126C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C11[];
extern Class_Descriptor cd_S21126C12;
extern VTBL_ENTRY _ZTI9S21126C12[];
extern  VTBL_ENTRY _ZTV9S21126C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21126C12[];
extern Class_Descriptor cd_S21126C9;
extern VTBL_ENTRY _ZTI8S21126C9[];
extern  VTBL_ENTRY _ZTV8S21126C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C9[];
extern Class_Descriptor cd_S21126C4;
extern VTBL_ENTRY _ZTI8S21126C4[];
extern  VTBL_ENTRY _ZTV8S21126C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C4[];
extern Class_Descriptor cd_S21126C3;
extern VTBL_ENTRY _ZTI8S21126C3[];
extern  VTBL_ENTRY _ZTV8S21126C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C3[];
extern Class_Descriptor cd_S21126C2;
extern VTBL_ENTRY _ZTI8S21126C2[];
extern  VTBL_ENTRY _ZTV8S21126C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C2[];
static Base_Class bases_S21126C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21126C5,    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
    6, //immediately_derived
  0, 1},
  {&cd_S21126C5,    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
    7, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20997C6,    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
    4, //immediately_derived
  0, 1},
  {&cd_S4227C37,    ABISELECT(40,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21126C6,    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
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21126C10,    ABISELECT(168,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1328,864), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21126C11,    ABISELECT(1328,864), //bcp->offset
    59, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S4227C37,    ABISELECT(1336,868), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21126C11,    ABISELECT(1336,868), //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
    11, //immediately_derived
  0, 0},
  {&cd_S21126C12,    ABISELECT(1336,868), //bcp->offset
    67, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21126C9,    ABISELECT(168,104), //bcp->offset
    49, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S21126C4,    ABISELECT(40,20), //bcp->offset
    38, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21126C3,    ABISELECT(24,12), //bcp->offset
    26, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S21126C2,    ABISELECT(8,4), //bcp->offset
    13, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21126C1[];
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C1D1Ev();
extern void _ZN8S21126C1D0Ev();
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S21126C1D1Ev,_ZTv0_n40_N8S21126C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S21126C1D1Ev,_ZThn4_N8S21126C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21126C1D0Ev,_ZTv0_n40_N8S21126C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S21126C1D0Ev,_ZThn4_N8S21126C1D0Ev)() __attribute__((weak));
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21126C1D1Ev,_ZTv0_n36_N8S21126C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S21126C1D1Ev,_ZThn12_N8S21126C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21126C1D0Ev,_ZTv0_n36_N8S21126C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S21126C1D0Ev,_ZThn12_N8S21126C1D0Ev)() __attribute__((weak));
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21126C1D1Ev,_ZTv0_n32_N8S21126C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S21126C1D1Ev,_ZThn20_N8S21126C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21126C1D0Ev,_ZTv0_n32_N8S21126C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S21126C1D0Ev,_ZThn20_N8S21126C1D0Ev)() __attribute__((weak));
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21126C1D1Ev,_ZTv0_n28_N8S21126C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S21126C1D1Ev,_ZThn104_N8S21126C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21126C1D0Ev,_ZTv0_n28_N8S21126C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S21126C1D0Ev,_ZThn104_N8S21126C1D0Ev)() __attribute__((weak));
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C1D1Ev,_ZTvn760_n28_N8S21126C1D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C1D0Ev,_ZTvn760_n28_N8S21126C1D0Ev)();
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C1D1Ev,_ZTvn764_n28_N8S21126C1D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C1D0Ev,_ZTvn764_n28_N8S21126C1D0Ev)();
static  VTBL_ENTRY vtc_S21126C1[] = {
  0,
  ABISELECT(168,104),
  ABISELECT(128,64),
  0,
  ABISELECT(40,20),
  ABISELECT(24,12),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C1[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C1D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(160,100),
  ABISELECT(120,60),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21126C1[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21126C1D1Ev,_ZTv0_n40_N8S21126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21126C1D0Ev,_ZTv0_n40_N8S21126C1D0Ev),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(144,92),
  ABISELECT(104,52),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21126C1[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21126C1D1Ev,_ZTv0_n36_N8S21126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21126C1D0Ev,_ZTv0_n36_N8S21126C1D0Ev),
  ABISELECT(-40,-20),
  0,
  ABISELECT(-40,-20),
  ABISELECT(128,84),
  ABISELECT(-40,-20),
  ABISELECT(88,44),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S21126C1[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21126C1D1Ev,_ZTv0_n32_N8S21126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21126C1D0Ev,_ZTv0_n32_N8S21126C1D0Ev),
  ABISELECT(-168,-104),
  -40,
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S21126C1[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C1D1Ev,_ZTv0_n28_N8S21126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C1D0Ev,_ZTv0_n28_N8S21126C1D0Ev),
  ABISELECT(-1328,-864),
  ABISELECT(-1200,-800),
  ABISELECT(-1328,-864),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S21126C1[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C1D1Ev,_ZTvn760_n28_N8S21126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C1D0Ev,_ZTvn760_n28_N8S21126C1D0Ev),
  ABISELECT(-1336,-868),
  ABISELECT(-1208,-804),
  ABISELECT(-1336,-868),
  ABISELECT(-1336,-868),
  (VTBL_ENTRY)&(_ZTI8S21126C1[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C1D1Ev,_ZTvn764_n28_N8S21126C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C1D0Ev,_ZTvn764_n28_N8S21126C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S21126C1[];
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C2D1Ev();
extern void _ZN8S21126C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C2__8S21126C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(160,100),
  ABISELECT(120,60),
  ABISELECT(-8,-4),
  ABISELECT(32,16),
  ABISELECT(16,8),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C2D0Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n72_N8S21126C2D1Ev,_ZTv0_n36_N8S21126C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S21126C2D1Ev,_ZThn8_N8S21126C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S21126C2D0Ev,_ZTv0_n36_N8S21126C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S21126C2D0Ev,_ZThn8_N8S21126C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21126C3__8S21126C2__8S21126C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(144,92),
  ABISELECT(104,52),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21126C2D1Ev,_ZTv0_n36_N8S21126C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S21126C2D0Ev,_ZTv0_n36_N8S21126C2D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21126C2D1Ev,_ZTv0_n32_N8S21126C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21126C2D1Ev,_ZThn16_N8S21126C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21126C2D0Ev,_ZTv0_n32_N8S21126C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21126C2D0Ev,_ZThn16_N8S21126C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21126C4__8S21126C2__8S21126C1[] = {
  ABISELECT(-32,-16),
  0,
  ABISELECT(-40,-20),
  ABISELECT(128,84),
  ABISELECT(-40,-20),
  ABISELECT(88,44),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21126C2D1Ev,_ZTv0_n32_N8S21126C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21126C2D0Ev,_ZTv0_n32_N8S21126C2D0Ev),
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__8S21126C2__8S21126C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21126C2D1Ev,_ZTv0_n28_N8S21126C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S21126C2D1Ev,_ZThn100_N8S21126C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21126C2D0Ev,_ZTv0_n28_N8S21126C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S21126C2D0Ev,_ZThn100_N8S21126C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21126C9__8S21126C2__8S21126C1[] = {
  ABISELECT(-160,-100),
  -40,
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C2D1Ev,_ZTv0_n28_N8S21126C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C2D0Ev,_ZTv0_n28_N8S21126C2D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C2D1Ev,_ZTvn760_n28_N8S21126C2D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C2D0Ev,_ZTvn760_n28_N8S21126C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C118S21126C9__8S21126C2__8S21126C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1200,-800),
  ABISELECT(-1328,-864),
  ABISELECT(-1320,-860),
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C2D1Ev,_ZTvn760_n28_N8S21126C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C2D0Ev,_ZTvn760_n28_N8S21126C2D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C2D1Ev,_ZTvn764_n28_N8S21126C2D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C2D0Ev,_ZTvn764_n28_N8S21126C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C128S21126C9__8S21126C2__8S21126C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1208,-804),
  ABISELECT(-1336,-868),
  ABISELECT(-1328,-864),
  (VTBL_ENTRY)&(_ZTI8S21126C2[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C2D1Ev,_ZTvn764_n28_N8S21126C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C2D0Ev,_ZTvn764_n28_N8S21126C2D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C3D1Ev();
extern void _ZN8S21126C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C3__8S21126C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(144,92),
  ABISELECT(104,52),
  ABISELECT(-24,-12),
  ABISELECT(16,8),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C3D0Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n64_N8S21126C3D1Ev,_ZTv0_n32_N8S21126C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S21126C3D1Ev,_ZThn8_N8S21126C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21126C3D0Ev,_ZTv0_n32_N8S21126C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S21126C3D0Ev,_ZThn8_N8S21126C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21126C4__8S21126C3__8S21126C1[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-40,-20),
  ABISELECT(128,84),
  ABISELECT(-40,-20),
  ABISELECT(88,44),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21126C3D1Ev,_ZTv0_n32_N8S21126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21126C3D0Ev,_ZTv0_n32_N8S21126C3D0Ev),
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__8S21126C3__8S21126C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21126C3D1Ev,_ZTv0_n28_N8S21126C3D1Ev)();
extern void ABISELECT(_ZThn144_N8S21126C3D1Ev,_ZThn92_N8S21126C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21126C3D0Ev,_ZTv0_n28_N8S21126C3D0Ev)();
extern void ABISELECT(_ZThn144_N8S21126C3D0Ev,_ZThn92_N8S21126C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21126C9__8S21126C3__8S21126C1[] = {
  ABISELECT(-144,-92),
  -40,
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C3D1Ev,_ZTv0_n28_N8S21126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C3D0Ev,_ZTv0_n28_N8S21126C3D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C3D1Ev,_ZTvn760_n28_N8S21126C3D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C3D0Ev,_ZTvn760_n28_N8S21126C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C118S21126C9__8S21126C3__8S21126C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1200,-800),
  ABISELECT(-1328,-864),
  ABISELECT(-1304,-852),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C3D1Ev,_ZTvn760_n28_N8S21126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C3D0Ev,_ZTvn760_n28_N8S21126C3D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C3D1Ev,_ZTvn764_n28_N8S21126C3D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C3D0Ev,_ZTvn764_n28_N8S21126C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C128S21126C9__8S21126C3__8S21126C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1208,-804),
  ABISELECT(-1336,-868),
  ABISELECT(-1312,-856),
  (VTBL_ENTRY)&(_ZTI8S21126C3[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C3D1Ev,_ZTvn764_n28_N8S21126C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C3D0Ev,_ZTvn764_n28_N8S21126C3D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C4D1Ev();
extern void _ZN8S21126C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C4__8S21126C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(128,84),
  ABISELECT(-40,-20),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C4D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C4D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C68S21126C4__8S21126C1[] = {
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C6[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__8S21126C4__8S21126C1[] = {
  0,
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S21126C4D1Ev,_ZTv0_n28_N8S21126C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S21126C4D1Ev,_ZThn84_N8S21126C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S21126C4D0Ev,_ZTv0_n28_N8S21126C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S21126C4D0Ev,_ZThn84_N8S21126C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21126C9__8S21126C4__8S21126C1[] = {
  ABISELECT(-128,-84),
  -40,
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C4D1Ev,_ZTv0_n28_N8S21126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S21126C4D0Ev,_ZTv0_n28_N8S21126C4D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C4D1Ev,_ZTvn760_n28_N8S21126C4D1Ev)();
extern void ABISELECT(_ZTvn1160_n56_N8S21126C4D0Ev,_ZTvn760_n28_N8S21126C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C118S21126C9__8S21126C4__8S21126C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1200,-800),
  ABISELECT(-1328,-864),
  ABISELECT(-1288,-844),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C4D1Ev,_ZTvn760_n28_N8S21126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1160_n56_N8S21126C4D0Ev,_ZTvn760_n28_N8S21126C4D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C4D1Ev,_ZTvn764_n28_N8S21126C4D1Ev)();
extern void ABISELECT(_ZTvn1168_n56_N8S21126C4D0Ev,_ZTvn764_n28_N8S21126C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C128S21126C9__8S21126C4__8S21126C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1208,-804),
  ABISELECT(-1336,-868),
  ABISELECT(-1296,-848),
  (VTBL_ENTRY)&(_ZTI8S21126C4[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C4D1Ev,_ZTvn764_n28_N8S21126C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn1168_n56_N8S21126C4D0Ev,_ZTvn764_n28_N8S21126C4D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN8S21126C9D1Ev();
extern void _ZN8S21126C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C9__8S21126C1[] = {
  -40,
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN8S21126C9D1Ev,
  (VTBL_ENTRY)&_ZN8S21126C9D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C108S21126C9__8S21126C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C10[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C108S21126C9__8S21126C1[] = {
  0,
  ABISELECT(168,104),
  (VTBL_ENTRY)&(_ZTI9S21126C10[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C11D1Ev();
extern void _ZN9S21126C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C118S21126C9__8S21126C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1200,-800),
  ABISELECT(-1328,-864),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C118S21126C9__8S21126C1[] = {
  0,
  ABISELECT(1328,864),
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C12D1Ev();
extern void _ZN9S21126C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C128S21126C9__8S21126C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1208,-804),
  ABISELECT(-1336,-868),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C12[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C12D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C12D0Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void _ZN9S21126C11D1Ev();
extern void _ZN9S21126C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21126C119S21126C128S21126C9__A1__8S21126C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1208,-804),
  ABISELECT(-1336,-868),
  0,
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D1Ev,
  (VTBL_ENTRY)&_ZN9S21126C11D0Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C119S21126C128S21126C9__A1__8S21126C1[] = {
  0,
  ABISELECT(1336,868),
  (VTBL_ENTRY)&(_ZTI9S21126C11[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__9S21126C128S21126C9__8S21126C1[] = {
  0,
  ABISELECT(1336,868),
  (VTBL_ENTRY)&(_ZTI9S21126C12[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21126C5__8S21126C9__8S21126C1[] = {
  0,
  ABISELECT(168,104),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZThn1160_N8S21126C9D1Ev,_ZThn760_N8S21126C9D1Ev)();
extern void ABISELECT(_ZThn1160_N8S21126C9D0Ev,_ZThn760_N8S21126C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C11__8S21126C9__8S21126C1[] = {
  ABISELECT(-1328,-864),
  ABISELECT(-1200,-800),
  ABISELECT(-1328,-864),
  ABISELECT(-1160,-760),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21126C9D1Ev,_ZThn760_N8S21126C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1160_N8S21126C9D0Ev,_ZThn760_N8S21126C9D0Ev),
};
extern void _ZN8S21126C52v1Ev();
extern void ABISELECT(_ZThn1168_N8S21126C9D1Ev,_ZThn764_N8S21126C9D1Ev)();
extern void ABISELECT(_ZThn1168_N8S21126C9D0Ev,_ZThn764_N8S21126C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S21126C12__8S21126C9__8S21126C1[] = {
  ABISELECT(-1336,-868),
  ABISELECT(-1208,-804),
  ABISELECT(-1336,-868),
  ABISELECT(-1168,-764),
  (VTBL_ENTRY)&(_ZTI8S21126C9[0]),
  (VTBL_ENTRY)&_ZN8S21126C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21126C9D1Ev,_ZThn764_N8S21126C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn1168_N8S21126C9D0Ev,_ZThn764_N8S21126C9D0Ev),
};
static  VTT_ENTRY vtt_S21126C1[] = {
  {&(_ZTV8S21126C1[10]),  10,75},
  {&(_ZTV8S21126C1[23]),  23,75},
  {&(_ZTV8S21126C1[35]),  35,75},
  {&(_ZTV8S21126C1[46]),  46,75},
  {&(_ZTV8S21126C1[10]),  10,75},
  {&(_ZTV8S21126C1[56]),  56,75},
  {&(_ZTV8S21126C1[64]),  64,75},
  {&(_ZTV8S21126C1[72]),  72,75},
  {&(_tg__ZTV8S21126C2__8S21126C1[9]),  9,12},
  {&(_tg__ZTV8S21126C3__8S21126C2__8S21126C1[9]),  9,12},
  {&(_tg__ZTV8S21126C4__8S21126C2__8S21126C1[8]),  8,11},
  {&(_tg__ZTV8S21126C5__8S21126C2__8S21126C1[3]),  3,4},
  {&(_tg__ZTV8S21126C9__8S21126C2__8S21126C1[7]),  7,10},
  {&(_tg__ZTV9S21126C118S21126C9__8S21126C2__8S21126C1[5]),  5,8},
  {&(_tg__ZTV9S21126C128S21126C9__8S21126C2__8S21126C1[5]),  5,8},
  {&(_tg__ZTV8S21126C3__8S21126C1[8]),  8,11},
  {&(_tg__ZTV8S21126C4__8S21126C3__8S21126C1[8]),  8,11},
  {&(_tg__ZTV8S21126C5__8S21126C3__8S21126C1[3]),  3,4},
  {&(_tg__ZTV8S21126C9__8S21126C3__8S21126C1[7]),  7,10},
  {&(_tg__ZTV9S21126C118S21126C9__8S21126C3__8S21126C1[5]),  5,8},
  {&(_tg__ZTV9S21126C128S21126C9__8S21126C3__8S21126C1[5]),  5,8},
  {&(_tg__ZTV8S21126C4__8S21126C1[6]),  6,9},
  {&(_tg__ZTV8S21126C68S21126C4__8S21126C1[3]),  3,4},
  {&(_tg__ZTV8S21126C5__8S21126C4__8S21126C1[3]),  3,4},
  {&(_tg__ZTV8S21126C9__8S21126C4__8S21126C1[7]),  7,10},
  {&(_tg__ZTV9S21126C118S21126C9__8S21126C4__8S21126C1[5]),  5,8},
  {&(_tg__ZTV9S21126C128S21126C9__8S21126C4__8S21126C1[5]),  5,8},
  {&(_tg__ZTV8S21126C9__8S21126C1[6]),  6,9},
  {&(_tg__ZTV9S21126C108S21126C9__8S21126C1[4]),  4,5},
  {&(_tg__ZTV8S21126C5__9S21126C108S21126C9__8S21126C1[3]),  3,4},
  {&(_tg__ZTV9S21126C118S21126C9__8S21126C1[5]),  5,8},
  {&(_tg__ZTV8S21126C5__9S21126C118S21126C9__8S21126C1[3]),  3,4},
  {&(_tg__ZTV9S21126C128S21126C9__8S21126C1[5]),  5,8},
  {&(_tg__ZTV9S21126C119S21126C128S21126C9__A1__8S21126C1[5]),  5,8},
  {&(_tg__ZTV8S21126C5__9S21126C119S21126C128S21126C9__A1__8S21126C1[3]),  3,4},
  {&(_tg__ZTV8S21126C5__9S21126C128S21126C9__8S21126C1[3]),  3,4},
  {&(_tg__ZTV8S21126C5__8S21126C9__8S21126C1[3]),  3,4},
  {&(_tg__ZTV9S21126C11__8S21126C9__8S21126C1[5]),  5,8},
  {&(_tg__ZTV9S21126C12__8S21126C9__8S21126C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S21126C1[];
extern  VTBL_ENTRY _ZTV8S21126C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21126C1[];
static VTBL_ENTRY alt_thunk_names134[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C4D0Ev,_ZTv0_n28_N8S21126C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21126C4D0Ev,_ZThn84_N8S21126C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C4D1Ev,_ZTv0_n28_N8S21126C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S21126C4D1Ev,_ZThn84_N8S21126C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C3D0Ev,_ZTv0_n28_N8S21126C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21126C3D0Ev,_ZThn92_N8S21126C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C3D1Ev,_ZTv0_n28_N8S21126C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N8S21126C3D1Ev,_ZThn92_N8S21126C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21126C3D0Ev,_ZTv0_n32_N8S21126C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21126C3D0Ev,_ZThn8_N8S21126C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21126C3D1Ev,_ZTv0_n32_N8S21126C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21126C3D1Ev,_ZThn8_N8S21126C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C2D0Ev,_ZTv0_n28_N8S21126C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21126C2D0Ev,_ZThn100_N8S21126C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C2D1Ev,_ZTv0_n28_N8S21126C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S21126C2D1Ev,_ZThn100_N8S21126C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21126C2D0Ev,_ZTv0_n32_N8S21126C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21126C2D0Ev,_ZThn16_N8S21126C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21126C2D1Ev,_ZTv0_n32_N8S21126C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21126C2D1Ev,_ZThn16_N8S21126C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21126C2D0Ev,_ZTv0_n36_N8S21126C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21126C2D0Ev,_ZThn8_N8S21126C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21126C2D1Ev,_ZTv0_n36_N8S21126C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21126C2D1Ev,_ZThn8_N8S21126C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C1D0Ev,_ZTv0_n28_N8S21126C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21126C1D0Ev,_ZThn104_N8S21126C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S21126C1D1Ev,_ZTv0_n28_N8S21126C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S21126C1D1Ev,_ZThn104_N8S21126C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21126C1D0Ev,_ZTv0_n32_N8S21126C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21126C1D0Ev,_ZThn20_N8S21126C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21126C1D1Ev,_ZTv0_n32_N8S21126C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21126C1D1Ev,_ZThn20_N8S21126C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21126C1D0Ev,_ZTv0_n36_N8S21126C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21126C1D0Ev,_ZThn12_N8S21126C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S21126C1D1Ev,_ZTv0_n36_N8S21126C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21126C1D1Ev,_ZThn12_N8S21126C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21126C1D0Ev,_ZTv0_n40_N8S21126C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21126C1D0Ev,_ZThn4_N8S21126C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21126C1D1Ev,_ZTv0_n40_N8S21126C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S21126C1D1Ev,_ZThn4_N8S21126C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21126C1 = {  "S21126C1", // class name
  bases_S21126C1, 16,
  &(vtc_S21126C1[0]), // expected_vtbl_contents
  &(vtt_S21126C1[0]), // expected_vtt_contents
  ABISELECT(1344,872), // object size
  NSPAIRA(_ZTI8S21126C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21126C1),75, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21126C1),39, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names134,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12859C3  {
  int s12859c3f0;
  long s12859c3f1;
  short s12859c3f2;
  short s12859c3f3;
  short s12859c3f4;
  short s12859c3f5;
  short s12859c3f6;
  short s12859c3f7;
};
//SIG(1 S12859C3) C1{ Fi Fl Fs[6]}



static void Test_S12859C3()
{
  {
    init_simple_test("S12859C3");
    S12859C3 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S12859C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12859C3)");
    check_field_offset(lv, s12859c3f0, 0, "S12859C3.s12859c3f0");
    check_field_offset(lv, s12859c3f1, ABISELECT(8,4), "S12859C3.s12859c3f1");
    check_field_offset(lv, s12859c3f2, ABISELECT(16,8), "S12859C3.s12859c3f2");
    check_field_offset(lv, s12859c3f3, ABISELECT(18,10), "S12859C3.s12859c3f3");
    check_field_offset(lv, s12859c3f4, ABISELECT(20,12), "S12859C3.s12859c3f4");
    check_field_offset(lv, s12859c3f5, ABISELECT(22,14), "S12859C3.s12859c3f5");
    check_field_offset(lv, s12859c3f6, ABISELECT(24,16), "S12859C3.s12859c3f6");
    check_field_offset(lv, s12859c3f7, ABISELECT(26,18), "S12859C3.s12859c3f7");
  }
}
static Arrange_To_Call_Me vS12859C3(Test_S12859C3, "S12859C3", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12859C4  {
  long s12859c4f0;
  short s12859c4f1;
  short s12859c4f2;
};
//SIG(1 S12859C4) C1{ Fl Fs[2]}



static void Test_S12859C4()
{
  {
    init_simple_test("S12859C4");
    S12859C4 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S12859C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12859C4)");
    check_field_offset(lv, s12859c4f0, 0, "S12859C4.s12859c4f0");
    check_field_offset(lv, s12859c4f1, ABISELECT(8,4), "S12859C4.s12859c4f1");
    check_field_offset(lv, s12859c4f2, ABISELECT(10,6), "S12859C4.s12859c4f2");
  }
}
static Arrange_To_Call_Me vS12859C4(Test_S12859C4, "S12859C4", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12859C5  {
  int s12859c5f0;
  long s12859c5f1;
  short s12859c5f2;
  short s12859c5f3;
  short s12859c5f4;
  short s12859c5f5;
  short s12859c5f6;
  short s12859c5f7;
  short s12859c5f8;
  short s12859c5f9;
  short s12859c5f10;
  char s12859c5f11;
};
//SIG(1 S12859C5) C1{ Fi Fl Fs[9] Fc}



static void Test_S12859C5()
{
  {
    init_simple_test("S12859C5");
    S12859C5 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S12859C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12859C5)");
    check_field_offset(lv, s12859c5f0, 0, "S12859C5.s12859c5f0");
    check_field_offset(lv, s12859c5f1, ABISELECT(8,4), "S12859C5.s12859c5f1");
    check_field_offset(lv, s12859c5f2, ABISELECT(16,8), "S12859C5.s12859c5f2");
    check_field_offset(lv, s12859c5f3, ABISELECT(18,10), "S12859C5.s12859c5f3");
    check_field_offset(lv, s12859c5f4, ABISELECT(20,12), "S12859C5.s12859c5f4");
    check_field_offset(lv, s12859c5f5, ABISELECT(22,14), "S12859C5.s12859c5f5");
    check_field_offset(lv, s12859c5f6, ABISELECT(24,16), "S12859C5.s12859c5f6");
    check_field_offset(lv, s12859c5f7, ABISELECT(26,18), "S12859C5.s12859c5f7");
    check_field_offset(lv, s12859c5f8, ABISELECT(28,20), "S12859C5.s12859c5f8");
    check_field_offset(lv, s12859c5f9, ABISELECT(30,22), "S12859C5.s12859c5f9");
    check_field_offset(lv, s12859c5f10, ABISELECT(32,24), "S12859C5.s12859c5f10");
    check_field_offset(lv, s12859c5f11, ABISELECT(34,26), "S12859C5.s12859c5f11");
  }
}
static Arrange_To_Call_Me vS12859C5(Test_S12859C5, "S12859C5", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12859C6_nt  {
  long s12859c6f0;
};
//SIG(1 S12859C6_nt) C1{ Fl}



//skip512 S12859C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12859C7_nt  {
  long s12859c7f0;
  long s12859c7f1;
};
//SIG(1 S12859C7_nt) C1{ Fl[2]}



//skip512 S12859C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S12859C2  {
  ::S12859C3 s12859c2f0;
  ::S12859C4 s12859c2f1;
  ::S12859C5 s12859c2f2;
  ::S12859C6_nt s12859c2f3;
  ::S12859C7_nt s12859c2f4;
  ::S12859C6_nt s12859c2f5;
  ::S12859C7_nt s12859c2f6;
};
//SIG(1 S12859C2) U1{ FC2{ Fi Fl Fs Fs Fs Fs Fs Fs} FC3{ Fl Fs Fs} FC4{ Fi Fl Fs Fs Fs Fs Fs Fs Fs Fs Fs Fc} FC5{ Fl} FC6{ Fl Fl} FC5 FC6}

#endif // __cplusplus
#ifdef __cplusplus

struct  S12859C1  {
  int s12859c1f0;
  ::S12859C2 s12859c1f1;
};
//SIG(1 S12859C1) C1{ Fi FU2{ FC3{ Fi Fl Fs Fs Fs Fs Fs Fs} FC4{ Fl Fs Fs} FC5{ Fi Fl Fs Fs Fs Fs Fs Fs Fs Fs Fs Fc} FC6{ Fl} FC7{ Fl Fl} FC6 FC7}}



static void Test_S12859C1()
{
  {
    init_simple_test("S12859C1");
    S12859C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S12859C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12859C1)");
    check_field_offset(lv, s12859c1f0, 0, "S12859C1.s12859c1f0");
    check_field_offset(lv, s12859c1f1, ABISELECT(8,4), "S12859C1.s12859c1f1");
  }
}
static Arrange_To_Call_Me vS12859C1(Test_S12859C1, "S12859C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7875C2  : virtual S3577C4_nt {
  int s7875c2f0[2];
  unsigned int s7875c2f1:1;
  unsigned int s7875c2f2:1;
  ::S9141C28_nt s7875c2f3;
  ::S9142C8_nt s7875c2f4;
  virtual  ~S7875C2(); // _ZN7S7875C2D2Ev
  virtual void  v6(); // _ZN7S7875C22v6Ev
  virtual void  v7(); // _ZN7S7875C22v7Ev
  virtual void  v8(); // _ZN7S7875C22v8Ev
  virtual void  v9(); // _ZN7S7875C22v9Ev
  virtual void  v10(); // _ZN7S7875C23v10Ev
  virtual void  v11(); // _ZN7S7875C23v11Ev
  virtual void  v12(); // _ZN7S7875C23v12Ev
  S7875C2(); // tgen
};
//SIG(-1 S7875C2) C1{ VBC2{ vd m Fi} vd v1 v2 v3 v4 v5 v6 v7 Fi[2] Fi:1 Fi:1 FC3{ BC4{ m Fp Fi[2]}} FC5{ m FC6{ m Fi[3]} FC6 Fc}}


 S7875C2 ::~S7875C2(){ note_dtor("S7875C2", this);}
void  S7875C2 ::v6(){vfunc_called(this, "_ZN7S7875C22v6Ev");}
void  S7875C2 ::v7(){vfunc_called(this, "_ZN7S7875C22v7Ev");}
void  S7875C2 ::v8(){vfunc_called(this, "_ZN7S7875C22v8Ev");}
void  S7875C2 ::v9(){vfunc_called(this, "_ZN7S7875C22v9Ev");}
void  S7875C2 ::v10(){vfunc_called(this, "_ZN7S7875C23v10Ev");}
void  S7875C2 ::v11(){vfunc_called(this, "_ZN7S7875C23v11Ev");}
void  S7875C2 ::v12(){vfunc_called(this, "_ZN7S7875C23v12Ev");}
S7875C2 ::S7875C2(){ note_ctor("S7875C2", this);} // tgen

static void Test_S7875C2()
{
  extern Class_Descriptor cd_S7875C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S7875C2, buf);
    S7875C2 *dp, &lv = *(dp=new (buf) S7875C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S7875C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7875C2)");
    check_base_class_offset(lv, (S3577C4_nt*), ABISELECT(72,56), "S7875C2");
    check_field_offset(lv, s7875c2f0, ABISELECT(8,4), "S7875C2.s7875c2f0");
    set_bf_and_test(lv, s7875c2f1, ABISELECT(16,12), 0, 1, 1, "S7875C2");
    set_bf_and_test(lv, s7875c2f2, ABISELECT(16,12), 1, 1, 1, "S7875C2");
    check_field_offset(lv, s7875c2f3, ABISELECT(24,16), "S7875C2.s7875c2f3");
    check_field_offset(lv, s7875c2f4, ABISELECT(40,28), "S7875C2.s7875c2f4");
    test_class_info(&lv, &cd_S7875C2);
    dp->~S7875C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7875C2(Test_S7875C2, "S7875C2", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN7S7875C2C1Ev();
extern void _ZN7S7875C2D2Ev();
Name_Map name_map_S7875C2[] = {
  NSPAIR(_ZN7S7875C2C1Ev),
  NSPAIR(_ZN7S7875C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S7875C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(72,56), //bcp->offset
    12, //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 _ZTI7S7875C2[];
extern void _ZN7S7875C2D1Ev();
extern void _ZN7S7875C2D0Ev();
extern void _ZN7S7875C22v6Ev();
extern void _ZN7S7875C22v7Ev();
extern void _ZN7S7875C22v8Ev();
extern void _ZN7S7875C22v9Ev();
extern void _ZN7S7875C23v10Ev();
extern void _ZN7S7875C23v11Ev();
extern void _ZN7S7875C23v12Ev();
extern void ABISELECT(_ZTv0_n24_N7S7875C2D1Ev,_ZTv0_n12_N7S7875C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7875C2D1Ev,_ZThn56_N7S7875C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7875C2D0Ev,_ZTv0_n12_N7S7875C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7875C2D0Ev,_ZThn56_N7S7875C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7875C2[] = {
  ABISELECT(72,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7875C2[0]),
  (VTBL_ENTRY)&_ZN7S7875C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7875C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7875C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7875C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7875C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7875C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7875C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7875C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7875C23v12Ev,
  ABISELECT(-72,-56),
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S7875C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7875C2D1Ev,_ZTv0_n12_N7S7875C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7875C2D0Ev,_ZTv0_n12_N7S7875C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S7875C2[];
static  VTT_ENTRY vtt_S7875C2[] = {
  {&(_ZTV7S7875C2[3]),  3,17},
  {&(_ZTV7S7875C2[15]),  15,17},
};
extern VTBL_ENTRY _ZTI7S7875C2[];
extern  VTBL_ENTRY _ZTV7S7875C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7875C2[];
static VTBL_ENTRY alt_thunk_names135[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7875C2D0Ev,_ZTv0_n12_N7S7875C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7875C2D0Ev,_ZThn56_N7S7875C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7875C2D1Ev,_ZTv0_n12_N7S7875C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7875C2D1Ev,_ZThn56_N7S7875C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7875C2 = {  "S7875C2", // class name
  bases_S7875C2, 1,
  &(vtc_S7875C2[0]), // expected_vtbl_contents
  &(vtt_S7875C2[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI7S7875C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7875C2),17, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7875C2),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names135,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7875C1  : S7875C2 {
  void *s7875c1f0;
  virtual void  v1(); // _ZN7S7875C12v1Ev
  virtual void  v2(); // _ZN7S7875C12v2Ev
  virtual void  v3(); // _ZN7S7875C12v3Ev
  virtual void  v4(); // _ZN7S7875C12v4Ev
  virtual void  v5(); // _ZN7S7875C12v5Ev
  ~S7875C1(); // tgen
  S7875C1(); // tgen
};
//SIG(1 S7875C1) C1{ BC2{ VBC3{ vd m Fi} vd v6 v7 v8 v9 v10 v11 v12 Fi[2] Fi:1 Fi:1 FC4{ BC5{ m Fp Fi[2]}} FC6{ m FC7{ m Fi[3]} FC7 Fc}} v1 v2 v3 v4 v5 Fp}


void  S7875C1 ::v1(){vfunc_called(this, "_ZN7S7875C12v1Ev");}
void  S7875C1 ::v2(){vfunc_called(this, "_ZN7S7875C12v2Ev");}
void  S7875C1 ::v3(){vfunc_called(this, "_ZN7S7875C12v3Ev");}
void  S7875C1 ::v4(){vfunc_called(this, "_ZN7S7875C12v4Ev");}
void  S7875C1 ::v5(){vfunc_called(this, "_ZN7S7875C12v5Ev");}
S7875C1 ::~S7875C1(){ note_dtor("S7875C1", this);} // tgen
S7875C1 ::S7875C1(){ note_ctor("S7875C1", this);} // tgen

static void Test_S7875C1()
{
  extern Class_Descriptor cd_S7875C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,18)];
    init_test(&cd_S7875C1, buf);
    S7875C1 *dp, &lv = *(dp=new (buf) S7875C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,68), "sizeof(S7875C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7875C1)");
    check_base_class_offset(lv, (S3577C4_nt*)(S7875C2*), ABISELECT(80,60), "S7875C1");
    check_base_class_offset(lv, (S7875C2*), 0, "S7875C1");
    check_field_offset(lv, s7875c1f0, ABISELECT(72,56), "S7875C1.s7875c1f0");
    test_class_info(&lv, &cd_S7875C1);
    dp->~S7875C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7875C1(Test_S7875C1, "S7875C1", ABISELECT(96,68));

#else // __cplusplus

extern void _ZN7S7875C1C1Ev();
extern void _ZN7S7875C1D1Ev();
Name_Map name_map_S7875C1[] = {
  NSPAIR(_ZN7S7875C1C1Ev),
  NSPAIR(_ZN7S7875C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S7875C2;
extern VTBL_ENTRY _ZTI7S7875C2[];
extern  VTBL_ENTRY _ZTV7S7875C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7875C2[];
static Base_Class bases_S7875C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(80,60), //bcp->offset
    17, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7875C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7875C1[];
extern void _ZN7S7875C1D1Ev();
extern void _ZN7S7875C1D0Ev();
extern void _ZN7S7875C22v6Ev();
extern void _ZN7S7875C22v7Ev();
extern void _ZN7S7875C22v8Ev();
extern void _ZN7S7875C22v9Ev();
extern void _ZN7S7875C23v10Ev();
extern void _ZN7S7875C23v11Ev();
extern void _ZN7S7875C23v12Ev();
extern void _ZN7S7875C12v1Ev();
extern void _ZN7S7875C12v2Ev();
extern void _ZN7S7875C12v3Ev();
extern void _ZN7S7875C12v4Ev();
extern void _ZN7S7875C12v5Ev();
extern void ABISELECT(_ZTv0_n24_N7S7875C1D1Ev,_ZTv0_n12_N7S7875C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S7875C1D1Ev,_ZThn60_N7S7875C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7875C1D0Ev,_ZTv0_n12_N7S7875C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S7875C1D0Ev,_ZThn60_N7S7875C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S7875C1[] = {
  ABISELECT(80,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7875C1[0]),
  (VTBL_ENTRY)&_ZN7S7875C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7875C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7875C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7875C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7875C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7875C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7875C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7875C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7875C23v12Ev,
  (VTBL_ENTRY)&_ZN7S7875C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7875C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7875C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7875C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7875C12v5Ev,
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI7S7875C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7875C1D1Ev,_ZTv0_n12_N7S7875C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7875C1D0Ev,_ZTv0_n12_N7S7875C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S7875C1[];
extern void _ZN7S7875C2D1Ev();
extern void _ZN7S7875C2D0Ev();
extern void _ZN7S7875C22v6Ev();
extern void _ZN7S7875C22v7Ev();
extern void _ZN7S7875C22v8Ev();
extern void _ZN7S7875C22v9Ev();
extern void _ZN7S7875C23v10Ev();
extern void _ZN7S7875C23v11Ev();
extern void _ZN7S7875C23v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7875C2__7S7875C1[] = {
  ABISELECT(80,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S7875C2[0]),
  (VTBL_ENTRY)&_ZN7S7875C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7875C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7875C22v6Ev,
  (VTBL_ENTRY)&_ZN7S7875C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7875C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7875C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7875C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7875C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7875C23v12Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7875C2D1Ev,_ZTv0_n12_N7S7875C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7875C2D1Ev,_ZThn60_N7S7875C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7875C2D0Ev,_ZTv0_n12_N7S7875C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7875C2D0Ev,_ZThn60_N7S7875C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S7875C2__7S7875C1[] = {
  ABISELECT(-80,-60),
  ABISELECT(-80,-60),
  (VTBL_ENTRY)&(_ZTI7S7875C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7875C2D1Ev,_ZTv0_n12_N7S7875C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7875C2D0Ev,_ZTv0_n12_N7S7875C2D0Ev),
};
static  VTT_ENTRY vtt_S7875C1[] = {
  {&(_ZTV7S7875C1[3]),  3,22},
  {&(_tg__ZTV7S7875C2__7S7875C1[3]),  3,12},
  {&(_tg__ZTV10S3577C4_nt__7S7875C2__7S7875C1[3]),  3,5},
  {&(_ZTV7S7875C1[20]),  20,22},
};
extern VTBL_ENTRY _ZTI7S7875C1[];
extern  VTBL_ENTRY _ZTV7S7875C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7875C1[];
static VTBL_ENTRY alt_thunk_names136[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7875C2D0Ev,_ZTv0_n12_N7S7875C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7875C2D0Ev,_ZThn60_N7S7875C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7875C2D1Ev,_ZTv0_n12_N7S7875C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7875C2D1Ev,_ZThn60_N7S7875C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7875C1D0Ev,_ZTv0_n12_N7S7875C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7875C1D0Ev,_ZThn60_N7S7875C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7875C1D1Ev,_ZTv0_n12_N7S7875C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7875C1D1Ev,_ZThn60_N7S7875C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7875C1 = {  "S7875C1", // class name
  bases_S7875C1, 2,
  &(vtc_S7875C1[0]), // expected_vtbl_contents
  &(vtt_S7875C1[0]), // expected_vtt_contents
  ABISELECT(96,68), // object size
  NSPAIRA(_ZTI7S7875C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7875C1),22, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7875C1),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names136,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17536C2  {
  ::S9141C28_nt s17536c2f0;
  void *s17536c2f1[2];
  __tsi64 s17536c2f2;
  int s17536c2f3[3];
  void *s17536c2f4;
  int s17536c2f5[4];
  void  mf17536c2(); // _ZN8S17536C29mf17536c2Ev
};
//SIG(-1 S17536C2) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fp[2] FL Fi[3] Fp Fi[4]}


void  S17536C2 ::mf17536c2(){}

static void Test_S17536C2()
{
  {
    init_simple_test("S17536C2");
    S17536C2 lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S17536C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17536C2)");
    check_field_offset(lv, s17536c2f0, 0, "S17536C2.s17536c2f0");
    check_field_offset(lv, s17536c2f1, ABISELECT(16,12), "S17536C2.s17536c2f1");
    check_field_offset(lv, s17536c2f2, ABISELECT(32,20), "S17536C2.s17536c2f2");
    check_field_offset(lv, s17536c2f3, ABISELECT(40,28), "S17536C2.s17536c2f3");
    check_field_offset(lv, s17536c2f4, ABISELECT(56,40), "S17536C2.s17536c2f4");
    check_field_offset(lv, s17536c2f5, ABISELECT(64,44), "S17536C2.s17536c2f5");
  }
}
static Arrange_To_Call_Me vS17536C2(Test_S17536C2, "S17536C2", ABISELECT(80,60));

#else // __cplusplus

Class_Descriptor cd_S17536C2 = {  "S17536C2", // class name
  0,0,//no base classes
  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  S17536C1  {
  void *s17536c1f0;
  ::S17536C2 s17536c1f1;
  ::S5327C13_nt s17536c1f2;
  ::S3214C23 s17536c1f3;
  ::S4227C37 s17536c1f4;
  int s17536c1f5[4];
  ::S3214C18 s17536c1f6;
  ::S9141C26 s17536c1f7;
  int s17536c1f8[2];
  void  mf17536c1(); // _ZN8S17536C19mf17536c1Ev
};
//SIG(1 S17536C1) C1{ m Fp FC2{ m FC3{ BC4{ m Fp Fi[2]}} Fp[2] FL Fi[3] Fp Fi[4]} FC5{ BC4} FC6{ BC4} FC7{ m} Fi[4] FC8{ BC4} FC9{ BC10{ m FC3 Fp Fi}} Fi[2]}


void  S17536C1 ::mf17536c1(){}

static void Test_S17536C1()
{
  {
    init_simple_test("S17536C1");
    S17536C1 lv;
    check2(sizeof(lv), ABISELECT(200,148), "sizeof(S17536C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17536C1)");
    check_field_offset(lv, s17536c1f0, 0, "S17536C1.s17536c1f0");
    check_field_offset(lv, s17536c1f1, ABISELECT(8,4), "S17536C1.s17536c1f1");
    check_field_offset(lv, s17536c1f2, ABISELECT(88,64), "S17536C1.s17536c1f2");
    check_field_offset(lv, s17536c1f3, ABISELECT(104,76), "S17536C1.s17536c1f3");
    check_field_offset(lv, s17536c1f4, ABISELECT(120,88), "S17536C1.s17536c1f4");
    check_field_offset(lv, s17536c1f5, ABISELECT(124,92), "S17536C1.s17536c1f5");
    check_field_offset(lv, s17536c1f6, ABISELECT(144,108), "S17536C1.s17536c1f6");
    check_field_offset(lv, s17536c1f7, ABISELECT(160,120), "S17536C1.s17536c1f7");
    check_field_offset(lv, s17536c1f8, ABISELECT(192,140), "S17536C1.s17536c1f8");
  }
}
static Arrange_To_Call_Me vS17536C1(Test_S17536C1, "S17536C1", ABISELECT(200,148));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21381C12_nt  : S4227C25 {
};
//SIG(-1 S21381C12_nt) C1{ BC2{ m Fp Fi FC3{ m} FC4{ m}}}



//skip512 S21381C12_nt

#else // __cplusplus

extern Class_Descriptor cd_S4227C25;
static Base_Class bases_S21381C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S21381C1  {
  ::S4227C40_nt s21381c1f0;
  ::S4227C24 s21381c1f1;
  ::S4227C4_nt s21381c1f2;
  ::S21381C12_nt s21381c1f3;
  void  mf21381c1(); // _ZN8S21381C19mf21381c1Ev
  virtual  ~S21381C1(); // _ZN8S21381C1D1Ev
  S21381C1(); // tgen
};
//SIG(1 S21381C1) C1{ vd m FC2{ m FC3{ FL[4]}} FC4{ BC5{ m Fp Fi FC6{ m} FC7{ m}}} FC8{ BC9{ m Fp Fi FC10{ m} FC10}} FC11{ BC5}}


void  S21381C1 ::mf21381c1(){}
 S21381C1 ::~S21381C1(){ note_dtor("S21381C1", this);}
S21381C1 ::S21381C1(){ note_ctor("S21381C1", this);} // tgen

static void Test_S21381C1()
{
  extern Class_Descriptor cd_S21381C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,19)];
    init_test(&cd_S21381C1, buf);
    S21381C1 *dp, &lv = *(dp=new (buf) S21381C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,72), "sizeof(S21381C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21381C1)");
    check_field_offset(lv, s21381c1f0, ABISELECT(8,4), "S21381C1.s21381c1f0");
    check_field_offset(lv, s21381c1f1, ABISELECT(40,36), "S21381C1.s21381c1f1");
    check_field_offset(lv, s21381c1f2, ABISELECT(56,48), "S21381C1.s21381c1f2");
    check_field_offset(lv, s21381c1f3, ABISELECT(72,60), "S21381C1.s21381c1f3");
    test_class_info(&lv, &cd_S21381C1);
    dp->~S21381C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21381C1(Test_S21381C1, "S21381C1", ABISELECT(88,72));

#else // __cplusplus

extern void _ZN8S21381C1C1Ev();
extern void _ZN8S21381C1D1Ev();
Name_Map name_map_S21381C1[] = {
  NSPAIR(_ZN8S21381C1C1Ev),
  NSPAIR(_ZN8S21381C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21381C1[];
extern void _ZN8S21381C1D1Ev();
extern void _ZN8S21381C1D0Ev();
static  VTBL_ENTRY vtc_S21381C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21381C1[0]),
  (VTBL_ENTRY)&_ZN8S21381C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21381C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21381C1[];
extern  VTBL_ENTRY _ZTV8S21381C1[];
Class_Descriptor cd_S21381C1 = {  "S21381C1", // class name
  0,0,//no base classes
  &(vtc_S21381C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,72), // object size
  NSPAIRA(_ZTI8S21381C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21381C1),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  S21605C2_nt  {
  void *s21605c2f0;
  int s21605c2f1;
  void  mf21605c2(); // _ZN11S21605C2_nt9mf21605c2Ev
};
//SIG(-1 S21605C2_nt) C1{ m Fp Fi}


void  S21605C2_nt ::mf21605c2(){}

//skip512 S21605C2_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

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



//skip512 S21605C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21605C3  {
  int s21605c3f0;
  ::S21605C4_nt s21605c3f1;
  int s21605c3f2[8];
  void  mf21605c3(); // _ZN8S21605C39mf21605c3Ev
  virtual  ~S21605C3(); // _ZN8S21605C3D1Ev
  S21605C3(); // tgen
};
//SIG(-1 S21605C3) C1{ vd m Fi FC2{ Fl[4]} Fi[8]}


void  S21605C3 ::mf21605c3(){}
 S21605C3 ::~S21605C3(){ note_dtor("S21605C3", this);}
S21605C3 ::S21605C3(){ note_ctor("S21605C3", this);} // tgen

static void Test_S21605C3()
{
  extern Class_Descriptor cd_S21605C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,15)];
    init_test(&cd_S21605C3, buf);
    S21605C3 *dp, &lv = *(dp=new (buf) S21605C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S21605C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21605C3)");
    check_field_offset(lv, s21605c3f0, ABISELECT(8,4), "S21605C3.s21605c3f0");
    check_field_offset(lv, s21605c3f1, ABISELECT(16,8), "S21605C3.s21605c3f1");
    check_field_offset(lv, s21605c3f2, ABISELECT(48,24), "S21605C3.s21605c3f2");
    test_class_info(&lv, &cd_S21605C3);
    dp->~S21605C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21605C3(Test_S21605C3, "S21605C3", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN8S21605C3C1Ev();
extern void _ZN8S21605C3D1Ev();
Name_Map name_map_S21605C3[] = {
  NSPAIR(_ZN8S21605C3C1Ev),
  NSPAIR(_ZN8S21605C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21605C3[];
extern void _ZN8S21605C3D1Ev();
extern void _ZN8S21605C3D0Ev();
static  VTBL_ENTRY vtc_S21605C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21605C3[0]),
  (VTBL_ENTRY)&_ZN8S21605C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21605C3D0Ev,
};
extern VTBL_ENTRY _ZTI8S21605C3[];
extern  VTBL_ENTRY _ZTV8S21605C3[];
Class_Descriptor cd_S21605C3 = {  "S21605C3", // class name
  0,0,//no base classes
  &(vtc_S21605C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI8S21605C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21605C3),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  S21605C6  {
  char s21605c6f0[40];
  void  mf21605c6(); // _ZN8S21605C69mf21605c6Ev
};
//SIG(-1 S21605C6) C1{ m Fc[40]}


void  S21605C6 ::mf21605c6(){}

static void Test_S21605C6()
{
  {
    init_simple_test("S21605C6");
    S21605C6 lv;
    check2(sizeof(lv), 40, "sizeof(S21605C6)");
    check2(__alignof__(lv), 1, "__alignof__(S21605C6)");
    check_field_offset(lv, s21605c6f0, 0, "S21605C6.s21605c6f0");
  }
}
static Arrange_To_Call_Me vS21605C6(Test_S21605C6, "S21605C6", 40);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21605C8  {
  char s21605c8f0[32];
  int s21605c8f1[6];
};
//SIG(1 S21605C8) C1{ Fc[32] Fi[6]}



static void Test_S21605C8()
{
  {
    init_simple_test("S21605C8");
    S21605C8 lv;
    check2(sizeof(lv), 56, "sizeof(S21605C8)");
    check2(__alignof__(lv), 4, "__alignof__(S21605C8)");
    check_field_offset(lv, s21605c8f0, 0, "S21605C8.s21605c8f0");
    check_field_offset(lv, s21605c8f1, 32, "S21605C8.s21605c8f1");
  }
}
static Arrange_To_Call_Me vS21605C8(Test_S21605C8, "S21605C8", 56);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21605C7  {
  ::S21605C8 s21605c7f0[7];
  int s21605c7f1[6];
};
//SIG(-1 S21605C7) C1{ FC2{ Fc[32] Fi[6]}[7] Fi[6]}



static void Test_S21605C7()
{
  {
    init_simple_test("S21605C7");
    S21605C7 lv;
    check2(sizeof(lv), 416, "sizeof(S21605C7)");
    check2(__alignof__(lv), 4, "__alignof__(S21605C7)");
    check_field_offset(lv, s21605c7f0, 0, "S21605C7.s21605c7f0");
    check_field_offset(lv, s21605c7f1, 392, "S21605C7.s21605c7f1");
  }
}
static Arrange_To_Call_Me vS21605C7(Test_S21605C7, "S21605C7", 416);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21605C5  {
  int s21605c5f0;
  ::S21605C6 s21605c5f1;
  ::S21605C7 s21605c5f2;
  void  mf21605c5(); // _ZN8S21605C59mf21605c5Ev
};
//SIG(-1 S21605C5) C1{ m Fi FC2{ m Fc[40]} FC3{ FC4{ Fc[32] Fi[6]}[7] Fi[6]}}


void  S21605C5 ::mf21605c5(){}

static void Test_S21605C5()
{
  {
    init_simple_test("S21605C5");
    S21605C5 lv;
    check2(sizeof(lv), 460, "sizeof(S21605C5)");
    check2(__alignof__(lv), 4, "__alignof__(S21605C5)");
    check_field_offset(lv, s21605c5f0, 0, "S21605C5.s21605c5f0");
    check_field_offset(lv, s21605c5f1, 4, "S21605C5.s21605c5f1");
    check_field_offset(lv, s21605c5f2, 44, "S21605C5.s21605c5f2");
  }
}
static Arrange_To_Call_Me vS21605C5(Test_S21605C5, "S21605C5", 460);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21605C1  {
  int s21605c1f0;
  ::S21605C2_nt s21605c1f1;
  ::S21605C3 s21605c1f2;
  ::S21605C5 s21605c1f3;
  int s21605c1f4;
  ::S21605C4_nt s21605c1f5;
  int s21605c1f6;
  ::S21605C4_nt s21605c1f7;
  void  mf21605c1(); // _ZN8S21605C19mf21605c1Ev
  virtual  ~S21605C1(); // _ZN8S21605C1D1Ev
  S21605C1(); // tgen
};
//SIG(1 S21605C1) C1{ vd m Fi FC2{ m Fp Fi} FC3{ vd m Fi FC4{ Fl[4]} Fi[8]} FC5{ m Fi FC6{ m Fc[40]} FC7{ FC8{ Fc[32] Fi[6]}[7] Fi[6]}} Fi FC4 Fi FC4}


void  S21605C1 ::mf21605c1(){}
 S21605C1 ::~S21605C1(){ note_dtor("S21605C1", this);}
S21605C1 ::S21605C1(){ note_ctor("S21605C1", this);} // tgen

static void Test_S21605C1()
{
  extern Class_Descriptor cd_S21605C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(82,144)];
    init_test(&cd_S21605C1, buf);
    S21605C1 *dp, &lv = *(dp=new (buf) S21605C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(648,572), "sizeof(S21605C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21605C1)");
    check_field_offset(lv, s21605c1f0, ABISELECT(8,4), "S21605C1.s21605c1f0");
    check_field_offset(lv, s21605c1f1, ABISELECT(16,8), "S21605C1.s21605c1f1");
    check_field_offset(lv, s21605c1f2, ABISELECT(32,16), "S21605C1.s21605c1f2");
    check_field_offset(lv, s21605c1f3, ABISELECT(112,72), "S21605C1.s21605c1f3");
    check_field_offset(lv, s21605c1f4, ABISELECT(572,532), "S21605C1.s21605c1f4");
    check_field_offset(lv, s21605c1f5, ABISELECT(576,536), "S21605C1.s21605c1f5");
    check_field_offset(lv, s21605c1f6, ABISELECT(608,552), "S21605C1.s21605c1f6");
    check_field_offset(lv, s21605c1f7, ABISELECT(616,556), "S21605C1.s21605c1f7");
    test_class_info(&lv, &cd_S21605C1);
    dp->~S21605C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21605C1(Test_S21605C1, "S21605C1", ABISELECT(648,572));

#else // __cplusplus

extern void _ZN8S21605C1C1Ev();
extern void _ZN8S21605C1D1Ev();
Name_Map name_map_S21605C1[] = {
  NSPAIR(_ZN8S21605C1C1Ev),
  NSPAIR(_ZN8S21605C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21605C1[];
extern void _ZN8S21605C1D1Ev();
extern void _ZN8S21605C1D0Ev();
static  VTBL_ENTRY vtc_S21605C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21605C1[0]),
  (VTBL_ENTRY)&_ZN8S21605C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21605C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21605C1[];
extern  VTBL_ENTRY _ZTV8S21605C1[];
Class_Descriptor cd_S21605C1 = {  "S21605C1", // class name
  0,0,//no base classes
  &(vtc_S21605C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(648,572), // object size
  NSPAIRA(_ZTI8S21605C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21605C1),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  S21606C3  {
  int s21606c3f0;
  ::S9676C9_nt s21606c3f1;
  int s21606c3f2[8];
  void  mf21606c3(); // _ZN8S21606C39mf21606c3Ev
  virtual  ~S21606C3(); // _ZN8S21606C3D1Ev
  S21606C3(); // tgen
};
//SIG(-1 S21606C3) C1{ vd m Fi FC2{ FL[4]} Fi[8]}


void  S21606C3 ::mf21606c3(){}
 S21606C3 ::~S21606C3(){ note_dtor("S21606C3", this);}
S21606C3 ::S21606C3(){ note_ctor("S21606C3", this);} // tgen

static void Test_S21606C3()
{
  extern Class_Descriptor cd_S21606C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,19)];
    init_test(&cd_S21606C3, buf);
    S21606C3 *dp, &lv = *(dp=new (buf) S21606C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,72), "sizeof(S21606C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21606C3)");
    check_field_offset(lv, s21606c3f0, ABISELECT(8,4), "S21606C3.s21606c3f0");
    check_field_offset(lv, s21606c3f1, ABISELECT(16,8), "S21606C3.s21606c3f1");
    check_field_offset(lv, s21606c3f2, ABISELECT(48,40), "S21606C3.s21606c3f2");
    test_class_info(&lv, &cd_S21606C3);
    dp->~S21606C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21606C3(Test_S21606C3, "S21606C3", ABISELECT(80,72));

#else // __cplusplus

extern void _ZN8S21606C3C1Ev();
extern void _ZN8S21606C3D1Ev();
Name_Map name_map_S21606C3[] = {
  NSPAIR(_ZN8S21606C3C1Ev),
  NSPAIR(_ZN8S21606C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21606C3[];
extern void _ZN8S21606C3D1Ev();
extern void _ZN8S21606C3D0Ev();
static  VTBL_ENTRY vtc_S21606C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21606C3[0]),
  (VTBL_ENTRY)&_ZN8S21606C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21606C3D0Ev,
};
extern VTBL_ENTRY _ZTI8S21606C3[];
extern  VTBL_ENTRY _ZTV8S21606C3[];
Class_Descriptor cd_S21606C3 = {  "S21606C3", // class name
  0,0,//no base classes
  &(vtc_S21606C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,72), // object size
  NSPAIRA(_ZTI8S21606C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21606C3),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  S21606C1  {
  int s21606c1f0;
  ::S21605C2_nt s21606c1f1;
  ::S21606C3 s21606c1f2;
  ::S21605C5 s21606c1f3;
  int s21606c1f4;
  ::S9676C9_nt s21606c1f5;
  int s21606c1f6;
  ::S9676C9_nt s21606c1f7;
  void  mf21606c1(); // _ZN8S21606C19mf21606c1Ev
  virtual  ~S21606C1(); // _ZN8S21606C1D1Ev
  S21606C1(); // tgen
};
//SIG(1 S21606C1) C1{ vd m Fi FC2{ m Fp Fi} FC3{ vd m Fi FC4{ FL[4]} Fi[8]} FC5{ m Fi FC6{ m Fc[40]} FC7{ FC8{ Fc[32] Fi[6]}[7] Fi[6]}} Fi FC4 Fi FC4}


void  S21606C1 ::mf21606c1(){}
 S21606C1 ::~S21606C1(){ note_dtor("S21606C1", this);}
S21606C1 ::S21606C1(){ note_ctor("S21606C1", this);} // tgen

static void Test_S21606C1()
{
  extern Class_Descriptor cd_S21606C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(82,156)];
    init_test(&cd_S21606C1, buf);
    S21606C1 *dp, &lv = *(dp=new (buf) S21606C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(648,620), "sizeof(S21606C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21606C1)");
    check_field_offset(lv, s21606c1f0, ABISELECT(8,4), "S21606C1.s21606c1f0");
    check_field_offset(lv, s21606c1f1, ABISELECT(16,8), "S21606C1.s21606c1f1");
    check_field_offset(lv, s21606c1f2, ABISELECT(32,16), "S21606C1.s21606c1f2");
    check_field_offset(lv, s21606c1f3, ABISELECT(112,88), "S21606C1.s21606c1f3");
    check_field_offset(lv, s21606c1f4, ABISELECT(572,548), "S21606C1.s21606c1f4");
    check_field_offset(lv, s21606c1f5, ABISELECT(576,552), "S21606C1.s21606c1f5");
    check_field_offset(lv, s21606c1f6, ABISELECT(608,584), "S21606C1.s21606c1f6");
    check_field_offset(lv, s21606c1f7, ABISELECT(616,588), "S21606C1.s21606c1f7");
    test_class_info(&lv, &cd_S21606C1);
    dp->~S21606C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21606C1(Test_S21606C1, "S21606C1", ABISELECT(648,620));

#else // __cplusplus

extern void _ZN8S21606C1C1Ev();
extern void _ZN8S21606C1D1Ev();
Name_Map name_map_S21606C1[] = {
  NSPAIR(_ZN8S21606C1C1Ev),
  NSPAIR(_ZN8S21606C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21606C1[];
extern void _ZN8S21606C1D1Ev();
extern void _ZN8S21606C1D0Ev();
static  VTBL_ENTRY vtc_S21606C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21606C1[0]),
  (VTBL_ENTRY)&_ZN8S21606C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21606C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21606C1[];
extern  VTBL_ENTRY _ZTV8S21606C1[];
Class_Descriptor cd_S21606C1 = {  "S21606C1", // class name
  0,0,//no base classes
  &(vtc_S21606C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(648,620), // object size
  NSPAIRA(_ZTI8S21606C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21606C1),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  S7148C2_nt  {
  virtual void  v8(); // _ZN10S7148C2_nt2v8Ev
  virtual void  v9(); // _ZN10S7148C2_nt2v9Ev
  virtual void  v10(); // _ZN10S7148C2_nt3v10Ev
  virtual void  v11(); // _ZN10S7148C2_nt3v11Ev
  virtual void  v12(); // _ZN10S7148C2_nt3v12Ev
  virtual void  v13(); // _ZN10S7148C2_nt3v13Ev
  virtual void  v14(); // _ZN10S7148C2_nt3v14Ev
  ~S7148C2_nt(); // tgen
  S7148C2_nt(); // tgen
};
//SIG(-1 S7148C2_nt) C1{ v1 v2 v3 v4 v5 v6 v7}


void  S7148C2_nt ::v8(){vfunc_called(this, "_ZN10S7148C2_nt2v8Ev");}
void  S7148C2_nt ::v9(){vfunc_called(this, "_ZN10S7148C2_nt2v9Ev");}
void  S7148C2_nt ::v10(){vfunc_called(this, "_ZN10S7148C2_nt3v10Ev");}
void  S7148C2_nt ::v11(){vfunc_called(this, "_ZN10S7148C2_nt3v11Ev");}
void  S7148C2_nt ::v12(){vfunc_called(this, "_ZN10S7148C2_nt3v12Ev");}
void  S7148C2_nt ::v13(){vfunc_called(this, "_ZN10S7148C2_nt3v13Ev");}
void  S7148C2_nt ::v14(){vfunc_called(this, "_ZN10S7148C2_nt3v14Ev");}
S7148C2_nt ::~S7148C2_nt(){ note_dtor("S7148C2_nt", this);} // tgen
S7148C2_nt ::S7148C2_nt(){ note_ctor("S7148C2_nt", this);} // tgen

//skip512 S7148C2_nt

#else // __cplusplus

extern void _ZN10S7148C2_ntC1Ev();
extern void _ZN10S7148C2_ntD1Ev();
Name_Map name_map_S7148C2_nt[] = {
  NSPAIR(_ZN10S7148C2_ntC1Ev),
  NSPAIR(_ZN10S7148C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7148C2_nt[];
extern void _ZN10S7148C2_nt2v8Ev();
extern void _ZN10S7148C2_nt2v9Ev();
extern void _ZN10S7148C2_nt3v10Ev();
extern void _ZN10S7148C2_nt3v11Ev();
extern void _ZN10S7148C2_nt3v12Ev();
extern void _ZN10S7148C2_nt3v13Ev();
extern void _ZN10S7148C2_nt3v14Ev();
static  VTBL_ENTRY vtc_S7148C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7148C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7148C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7148C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7148C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7148C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7148C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7148C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S7148C2_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI10S7148C2_nt[];
VTBL_ENTRY *P__ZTI10S7148C2_nt = _ZTI10S7148C2_nt; 
extern  VTBL_ENTRY _ZTV10S7148C2_nt[];
Class_Descriptor cd_S7148C2_nt = {  "S7148C2_nt", // class name
  0,0,//no base classes
  &(vtc_S7148C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7148C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7148C2_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  S7148C1  : S7148C2_nt {
  ::S9141C26 s7148c1f0;
  ::S9141C20_nt s7148c1f1;
  virtual void  v1(); // _ZN7S7148C12v1Ev
  virtual void  v2(); // _ZN7S7148C12v2Ev
  virtual void  v3(); // _ZN7S7148C12v3Ev
  virtual void  v4(); // _ZN7S7148C12v4Ev
  virtual void  v5(); // _ZN7S7148C12v5Ev
  virtual void  v6(); // _ZN7S7148C12v6Ev
  virtual void  v7(); // _ZN7S7148C12v7Ev
  ~S7148C1(); // tgen
  S7148C1(); // tgen
};
//SIG(1 S7148C1) C1{ BC2{ v8 v9 v10 v11 v12 v13 v14} v1 v2 v3 v4 v5 v6 v7 FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}} FC7{ BC8{ m FC9{ BC6} Fp Fi}}}


void  S7148C1 ::v1(){vfunc_called(this, "_ZN7S7148C12v1Ev");}
void  S7148C1 ::v2(){vfunc_called(this, "_ZN7S7148C12v2Ev");}
void  S7148C1 ::v3(){vfunc_called(this, "_ZN7S7148C12v3Ev");}
void  S7148C1 ::v4(){vfunc_called(this, "_ZN7S7148C12v4Ev");}
void  S7148C1 ::v5(){vfunc_called(this, "_ZN7S7148C12v5Ev");}
void  S7148C1 ::v6(){vfunc_called(this, "_ZN7S7148C12v6Ev");}
void  S7148C1 ::v7(){vfunc_called(this, "_ZN7S7148C12v7Ev");}
S7148C1 ::~S7148C1(){ note_dtor("S7148C1", this);} // tgen
S7148C1 ::S7148C1(){ note_ctor("S7148C1", this);} // tgen

static void Test_S7148C1()
{
  extern Class_Descriptor cd_S7148C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S7148C1, buf);
    S7148C1 *dp, &lv = *(dp=new (buf) S7148C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S7148C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7148C1)");
    check_base_class_offset(lv, (S7148C2_nt*), 0, "S7148C1");
    check_field_offset(lv, s7148c1f0, ABISELECT(8,4), "S7148C1.s7148c1f0");
    check_field_offset(lv, s7148c1f1, ABISELECT(40,24), "S7148C1.s7148c1f1");
    test_class_info(&lv, &cd_S7148C1);
    dp->~S7148C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7148C1(Test_S7148C1, "S7148C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S7148C1C1Ev();
extern void _ZN7S7148C1D1Ev();
Name_Map name_map_S7148C1[] = {
  NSPAIR(_ZN7S7148C1C1Ev),
  NSPAIR(_ZN7S7148C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7148C2_nt;
extern VTBL_ENTRY _ZTI10S7148C2_nt[];
extern  VTBL_ENTRY _ZTV10S7148C2_nt[];
static Base_Class bases_S7148C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7148C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7148C1[];
extern void _ZN10S7148C2_nt2v8Ev();
extern void _ZN10S7148C2_nt2v9Ev();
extern void _ZN10S7148C2_nt3v10Ev();
extern void _ZN10S7148C2_nt3v11Ev();
extern void _ZN10S7148C2_nt3v12Ev();
extern void _ZN10S7148C2_nt3v13Ev();
extern void _ZN10S7148C2_nt3v14Ev();
extern void _ZN7S7148C12v1Ev();
extern void _ZN7S7148C12v2Ev();
extern void _ZN7S7148C12v3Ev();
extern void _ZN7S7148C12v4Ev();
extern void _ZN7S7148C12v5Ev();
extern void _ZN7S7148C12v6Ev();
extern void _ZN7S7148C12v7Ev();
static  VTBL_ENTRY vtc_S7148C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7148C1[0]),
  (VTBL_ENTRY)&_ZN10S7148C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7148C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7148C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7148C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7148C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S7148C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S7148C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN7S7148C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7148C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7148C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7148C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7148C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7148C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7148C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S7148C1[];
extern  VTBL_ENTRY _ZTV7S7148C1[];
Class_Descriptor cd_S7148C1 = {  "S7148C1", // class name
  bases_S7148C1, 1,
  &(vtc_S7148C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S7148C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7148C1),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21804C4_nt  {
  ::S4227C36 s21804c4f0;
  void *s21804c4f1[2];
  void  mf21804c4(); // _ZN11S21804C4_nt9mf21804c4Ev
};
//SIG(-1 S21804C4_nt) C1{ m FC2{ m Fp Fi[2] FC3{ m}} Fp[2]}


void  S21804C4_nt ::mf21804c4(){}

//skip512 S21804C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21804C7_nt  {
  void *s21804c7f0[2];
  void  mf21804c7(); // _ZN11S21804C7_nt9mf21804c7Ev
};
//SIG(-1 S21804C7_nt) C1{ m Fp[2]}


void  S21804C7_nt ::mf21804c7(){}

//skip512 S21804C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21804C1  {
  void *s21804c1f0[2];
  int s21804c1f1;
  ::S4227C45 s21804c1f2;
  ::S4227C45 s21804c1f3;
  ::S21804C4_nt s21804c1f4;
  ::S21804C7_nt s21804c1f5;
  ::S4227C28_nt s21804c1f6;
  void  mf21804c1(); // _ZN8S21804C19mf21804c1Ev
  virtual  ~S21804C1(); // _ZN8S21804C1D1Ev
  S21804C1(); // tgen
};
//SIG(1 S21804C1) C1{ vd m Fp[2] Fi FC2{ m Fp Fi[2] FC3{ m}} FC2 FC4{ m FC5{ m Fp Fi[2] FC3} Fp[2]} FC6{ m Fp[2]} FC7{ m Fp Fi[2] FC8{ m}}}


void  S21804C1 ::mf21804c1(){}
 S21804C1 ::~S21804C1(){ note_dtor("S21804C1", this);}
S21804C1 ::S21804C1(){ note_ctor("S21804C1", this);} // tgen

static void Test_S21804C1()
{
  extern Class_Descriptor cd_S21804C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,25)];
    init_test(&cd_S21804C1, buf);
    S21804C1 *dp, &lv = *(dp=new (buf) S21804C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,96), "sizeof(S21804C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21804C1)");
    check_field_offset(lv, s21804c1f0, ABISELECT(8,4), "S21804C1.s21804c1f0");
    check_field_offset(lv, s21804c1f1, ABISELECT(24,12), "S21804C1.s21804c1f1");
    check_field_offset(lv, s21804c1f2, ABISELECT(32,16), "S21804C1.s21804c1f2");
    check_field_offset(lv, s21804c1f3, ABISELECT(56,32), "S21804C1.s21804c1f3");
    check_field_offset(lv, s21804c1f4, ABISELECT(80,48), "S21804C1.s21804c1f4");
    check_field_offset(lv, s21804c1f5, ABISELECT(120,72), "S21804C1.s21804c1f5");
    check_field_offset(lv, s21804c1f6, ABISELECT(136,80), "S21804C1.s21804c1f6");
    test_class_info(&lv, &cd_S21804C1);
    dp->~S21804C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21804C1(Test_S21804C1, "S21804C1", ABISELECT(160,96));

#else // __cplusplus

extern void _ZN8S21804C1C1Ev();
extern void _ZN8S21804C1D1Ev();
Name_Map name_map_S21804C1[] = {
  NSPAIR(_ZN8S21804C1C1Ev),
  NSPAIR(_ZN8S21804C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21804C1[];
extern void _ZN8S21804C1D1Ev();
extern void _ZN8S21804C1D0Ev();
static  VTBL_ENTRY vtc_S21804C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21804C1[0]),
  (VTBL_ENTRY)&_ZN8S21804C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21804C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21804C1[];
extern  VTBL_ENTRY _ZTV8S21804C1[];
Class_Descriptor cd_S21804C1 = {  "S21804C1", // class name
  0,0,//no base classes
  &(vtc_S21804C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,96), // object size
  NSPAIRA(_ZTI8S21804C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21804C1),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  S16933C6  {
  int s16933c6f0[4];
  ::S4227C37 s16933c6f1;
  void  mf16933c6(); // _ZN8S16933C69mf16933c6Ev
};
//SIG(-1 S16933C6) C1{ m Fi[4] FC2{ m}}


void  S16933C6 ::mf16933c6(){}

static void Test_S16933C6()
{
  {
    init_simple_test("S16933C6");
    S16933C6 lv;
    check2(sizeof(lv), 20, "sizeof(S16933C6)");
    check2(__alignof__(lv), 4, "__alignof__(S16933C6)");
    check_field_offset(lv, s16933c6f0, 0, "S16933C6.s16933c6f0");
    check_field_offset(lv, s16933c6f1, 16, "S16933C6.s16933c6f1");
  }
}
static Arrange_To_Call_Me vS16933C6(Test_S16933C6, "S16933C6", 20);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16933C1  {
  int s16933c1f0;
  void *s16933c1f1;
  int s16933c1f2[2];
  void *s16933c1f3;
  ::S9141C8_nt s16933c1f4;
  ::S9141C28_nt s16933c1f5;
  ::S5327C13_nt s16933c1f6;
  ::S16933C6 s16933c1f7;
  ::S3214C23 s16933c1f8;
  ::S9141C26 s16933c1f9;
  void  mf16933c1(); // _ZN8S16933C19mf16933c1Ev
};
//SIG(1 S16933C1) C1{ m Fi Fp Fi[2] Fp FC2{ m Fp} FC3{ BC4{ m Fp Fi[2]}} FC5{ BC4} FC6{ m Fi[4] FC7{ m}} FC8{ BC4} FC9{ BC10{ m FC3 Fp Fi}}}


void  S16933C1 ::mf16933c1(){}

static void Test_S16933C1()
{
  {
    init_simple_test("S16933C1");
    S16933C1 lv;
    check2(sizeof(lv), ABISELECT(144,100), "sizeof(S16933C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16933C1)");
    check_field_offset(lv, s16933c1f0, 0, "S16933C1.s16933c1f0");
    check_field_offset(lv, s16933c1f1, ABISELECT(8,4), "S16933C1.s16933c1f1");
    check_field_offset(lv, s16933c1f2, ABISELECT(16,8), "S16933C1.s16933c1f2");
    check_field_offset(lv, s16933c1f3, ABISELECT(24,16), "S16933C1.s16933c1f3");
    check_field_offset(lv, s16933c1f4, ABISELECT(32,20), "S16933C1.s16933c1f4");
    check_field_offset(lv, s16933c1f5, ABISELECT(40,24), "S16933C1.s16933c1f5");
    check_field_offset(lv, s16933c1f6, ABISELECT(56,36), "S16933C1.s16933c1f6");
    check_field_offset(lv, s16933c1f7, ABISELECT(72,48), "S16933C1.s16933c1f7");
    check_field_offset(lv, s16933c1f8, ABISELECT(96,68), "S16933C1.s16933c1f8");
    check_field_offset(lv, s16933c1f9, ABISELECT(112,80), "S16933C1.s16933c1f9");
  }
}
static Arrange_To_Call_Me vS16933C1(Test_S16933C1, "S16933C1", ABISELECT(144,100));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5648C2  {
  ::S3214C4_nt s5648c2f0;
  int s5648c2f1;
  void  mf5648c2(); // _ZN7S5648C28mf5648c2Ev
};
//SIG(-1 S5648C2) C1{ m FC2{ m Fi[2]} Fi}


void  S5648C2 ::mf5648c2(){}

static void Test_S5648C2()
{
  {
    init_simple_test("S5648C2");
    S5648C2 lv;
    check2(sizeof(lv), 12, "sizeof(S5648C2)");
    check2(__alignof__(lv), 4, "__alignof__(S5648C2)");
    check_field_offset(lv, s5648c2f0, 0, "S5648C2.s5648c2f0");
    check_field_offset(lv, s5648c2f1, 8, "S5648C2.s5648c2f1");
  }
}
static Arrange_To_Call_Me vS5648C2(Test_S5648C2, "S5648C2", 12);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5648C1  : S5648C2 {
  int s5648c1f0[3];
  __tsi64 s5648c1f1;
  int s5648c1f2[4];
  void *s5648c1f3;
  int s5648c1f4;
  ::S9141C26 s5648c1f5;
  int s5648c1f6;
  ::S9141C28_nt s5648c1f7;
  ::S3444C17_nt s5648c1f8;
  int s5648c1f9;
};
//SIG(1 S5648C1) C1{ BC2{ m FC3{ m Fi[2]} Fi} Fi[3] FL Fi[4] Fp Fi FC4{ BC5{ m FC6{ BC7{ m Fp Fi[2]}} Fp Fi}} Fi FC6 FC8{ m Fi[4]} Fi}



static void Test_S5648C1()
{
  extern Class_Descriptor cd_S5648C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(19,29)];
    init_test(&cd_S5648C1, buf);
    S5648C1 &lv = *(new (buf) S5648C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(144,112), "sizeof(S5648C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5648C1)");
    check_base_class_offset(lv, (S5648C2*), 0, "S5648C1");
    check_field_offset(lv, s5648c1f0, 12, "S5648C1.s5648c1f0");
    check_field_offset(lv, s5648c1f1, 24, "S5648C1.s5648c1f1");
    check_field_offset(lv, s5648c1f2, 32, "S5648C1.s5648c1f2");
    check_field_offset(lv, s5648c1f3, 48, "S5648C1.s5648c1f3");
    check_field_offset(lv, s5648c1f4, ABISELECT(56,52), "S5648C1.s5648c1f4");
    check_field_offset(lv, s5648c1f5, ABISELECT(64,56), "S5648C1.s5648c1f5");
    check_field_offset(lv, s5648c1f6, ABISELECT(96,76), "S5648C1.s5648c1f6");
    check_field_offset(lv, s5648c1f7, ABISELECT(104,80), "S5648C1.s5648c1f7");
    check_field_offset(lv, s5648c1f8, ABISELECT(120,92), "S5648C1.s5648c1f8");
    check_field_offset(lv, s5648c1f9, ABISELECT(136,108), "S5648C1.s5648c1f9");
    test_class_info(&lv, &cd_S5648C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5648C1(Test_S5648C1, "S5648C1", ABISELECT(144,112));

#else // __cplusplus

extern Class_Descriptor cd_S5648C2;
static Base_Class bases_S5648C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5648C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5648C1 = {  "S5648C1", // class name
  bases_S5648C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(144,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  S22109C1  {
  void *s22109c1f0;
  int s22109c1f1[2];
  virtual  ~S22109C1(); // _ZN8S22109C1D1Ev
  virtual void  v1(); // _ZN8S22109C12v1Ev
  virtual void  v2(); // _ZN8S22109C12v2Ev
  virtual void  v3(); // _ZN8S22109C12v3Ev
  virtual void  v4(); // _ZN8S22109C12v4Ev
  virtual void  v5(); // _ZN8S22109C12v5Ev
  virtual void  v6(); // _ZN8S22109C12v6Ev
  virtual void  v7(); // _ZN8S22109C12v7Ev
  virtual void  v8(); // _ZN8S22109C12v8Ev
  virtual void  v9(); // _ZN8S22109C12v9Ev
  virtual void  v10(); // _ZN8S22109C13v10Ev
  virtual void  v11(); // _ZN8S22109C13v11Ev
  virtual void  v12(); // _ZN8S22109C13v12Ev
  virtual void  v13(); // _ZN8S22109C13v13Ev
  virtual void  v14(); // _ZN8S22109C13v14Ev
  virtual void  v15(); // _ZN8S22109C13v15Ev
  virtual void  v16(); // _ZN8S22109C13v16Ev
  virtual void  v17(); // _ZN8S22109C13v17Ev
  virtual void  v18(); // _ZN8S22109C13v18Ev
  virtual void  v19(); // _ZN8S22109C13v19Ev
  virtual void  v20(); // _ZN8S22109C13v20Ev
  virtual void  v21(); // _ZN8S22109C13v21Ev
  virtual void  v22(); // _ZN8S22109C13v22Ev
  virtual void  v23(); // _ZN8S22109C13v23Ev
  virtual void  v24(); // _ZN8S22109C13v24Ev
  virtual void  v25(); // _ZN8S22109C13v25Ev
  S22109C1(); // tgen
};
//SIG(1 S22109C1) 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 Fp Fi[2]}


 S22109C1 ::~S22109C1(){ note_dtor("S22109C1", this);}
void  S22109C1 ::v1(){vfunc_called(this, "_ZN8S22109C12v1Ev");}
void  S22109C1 ::v2(){vfunc_called(this, "_ZN8S22109C12v2Ev");}
void  S22109C1 ::v3(){vfunc_called(this, "_ZN8S22109C12v3Ev");}
void  S22109C1 ::v4(){vfunc_called(this, "_ZN8S22109C12v4Ev");}
void  S22109C1 ::v5(){vfunc_called(this, "_ZN8S22109C12v5Ev");}
void  S22109C1 ::v6(){vfunc_called(this, "_ZN8S22109C12v6Ev");}
void  S22109C1 ::v7(){vfunc_called(this, "_ZN8S22109C12v7Ev");}
void  S22109C1 ::v8(){vfunc_called(this, "_ZN8S22109C12v8Ev");}
void  S22109C1 ::v9(){vfunc_called(this, "_ZN8S22109C12v9Ev");}
void  S22109C1 ::v10(){vfunc_called(this, "_ZN8S22109C13v10Ev");}
void  S22109C1 ::v11(){vfunc_called(this, "_ZN8S22109C13v11Ev");}
void  S22109C1 ::v12(){vfunc_called(this, "_ZN8S22109C13v12Ev");}
void  S22109C1 ::v13(){vfunc_called(this, "_ZN8S22109C13v13Ev");}
void  S22109C1 ::v14(){vfunc_called(this, "_ZN8S22109C13v14Ev");}
void  S22109C1 ::v15(){vfunc_called(this, "_ZN8S22109C13v15Ev");}
void  S22109C1 ::v16(){vfunc_called(this, "_ZN8S22109C13v16Ev");}
void  S22109C1 ::v17(){vfunc_called(this, "_ZN8S22109C13v17Ev");}
void  S22109C1 ::v18(){vfunc_called(this, "_ZN8S22109C13v18Ev");}
void  S22109C1 ::v19(){vfunc_called(this, "_ZN8S22109C13v19Ev");}
void  S22109C1 ::v20(){vfunc_called(this, "_ZN8S22109C13v20Ev");}
void  S22109C1 ::v21(){vfunc_called(this, "_ZN8S22109C13v21Ev");}
void  S22109C1 ::v22(){vfunc_called(this, "_ZN8S22109C13v22Ev");}
void  S22109C1 ::v23(){vfunc_called(this, "_ZN8S22109C13v23Ev");}
void  S22109C1 ::v24(){vfunc_called(this, "_ZN8S22109C13v24Ev");}
void  S22109C1 ::v25(){vfunc_called(this, "_ZN8S22109C13v25Ev");}
S22109C1 ::S22109C1(){ note_ctor("S22109C1", this);} // tgen

static void Test_S22109C1()
{
  extern Class_Descriptor cd_S22109C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S22109C1, buf);
    S22109C1 *dp, &lv = *(dp=new (buf) S22109C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S22109C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S22109C1)");
    check_field_offset(lv, s22109c1f0, ABISELECT(8,4), "S22109C1.s22109c1f0");
    check_field_offset(lv, s22109c1f1, ABISELECT(16,8), "S22109C1.s22109c1f1");
    test_class_info(&lv, &cd_S22109C1);
    dp->~S22109C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS22109C1(Test_S22109C1, "S22109C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S22109C1C1Ev();
extern void _ZN8S22109C1D1Ev();
Name_Map name_map_S22109C1[] = {
  NSPAIR(_ZN8S22109C1C1Ev),
  NSPAIR(_ZN8S22109C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S22109C1[];
extern void _ZN8S22109C1D1Ev();
extern void _ZN8S22109C1D0Ev();
extern void _ZN8S22109C12v1Ev();
extern void _ZN8S22109C12v2Ev();
extern void _ZN8S22109C12v3Ev();
extern void _ZN8S22109C12v4Ev();
extern void _ZN8S22109C12v5Ev();
extern void _ZN8S22109C12v6Ev();
extern void _ZN8S22109C12v7Ev();
extern void _ZN8S22109C12v8Ev();
extern void _ZN8S22109C12v9Ev();
extern void _ZN8S22109C13v10Ev();
extern void _ZN8S22109C13v11Ev();
extern void _ZN8S22109C13v12Ev();
extern void _ZN8S22109C13v13Ev();
extern void _ZN8S22109C13v14Ev();
extern void _ZN8S22109C13v15Ev();
extern void _ZN8S22109C13v16Ev();
extern void _ZN8S22109C13v17Ev();
extern void _ZN8S22109C13v18Ev();
extern void _ZN8S22109C13v19Ev();
extern void _ZN8S22109C13v20Ev();
extern void _ZN8S22109C13v21Ev();
extern void _ZN8S22109C13v22Ev();
extern void _ZN8S22109C13v23Ev();
extern void _ZN8S22109C13v24Ev();
extern void _ZN8S22109C13v25Ev();
static  VTBL_ENTRY vtc_S22109C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S22109C1[0]),
  (VTBL_ENTRY)&_ZN8S22109C1D1Ev,
  (VTBL_ENTRY)&_ZN8S22109C1D0Ev,
  (VTBL_ENTRY)&_ZN8S22109C12v1Ev,
  (VTBL_ENTRY)&_ZN8S22109C12v2Ev,
  (VTBL_ENTRY)&_ZN8S22109C12v3Ev,
  (VTBL_ENTRY)&_ZN8S22109C12v4Ev,
  (VTBL_ENTRY)&_ZN8S22109C12v5Ev,
  (VTBL_ENTRY)&_ZN8S22109C12v6Ev,
  (VTBL_ENTRY)&_ZN8S22109C12v7Ev,
  (VTBL_ENTRY)&_ZN8S22109C12v8Ev,
  (VTBL_ENTRY)&_ZN8S22109C12v9Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v10Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v11Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v12Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v13Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v14Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v15Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v16Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v17Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v18Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v19Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v20Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v21Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v22Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v23Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v24Ev,
  (VTBL_ENTRY)&_ZN8S22109C13v25Ev,
};
extern VTBL_ENTRY _ZTI8S22109C1[];
extern  VTBL_ENTRY _ZTV8S22109C1[];
Class_Descriptor cd_S22109C1 = {  "S22109C1", // class name
  0,0,//no base classes
  &(vtc_S22109C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S22109C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S22109C1),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15302C1  {
  ::S3214C21_nt s15302c1f0;
  void *s15302c1f1;
  ::S3214C22 s15302c1f2;
  ::S9141C26 s15302c1f3;
  ::S9141C20_nt s15302c1f4;
  void  mf15302c1(); // _ZN8S15302C19mf15302c1Ev
};
//SIG(1 S15302C1) C1{ m FC2{ BC3{ BC4{ BC5{ m Fp Fi[2]}}}} Fp FC3 FC6{ BC7{ m FC8{ BC5} Fp Fi}} FC9{ BC10{ m FC4 Fp Fi}}}


void  S15302C1 ::mf15302c1(){}

static void Test_S15302C1()
{
  {
    init_simple_test("S15302C1");
    S15302C1 lv;
    check2(sizeof(lv), ABISELECT(104,68), "sizeof(S15302C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15302C1)");
    check_field_offset(lv, s15302c1f0, 0, "S15302C1.s15302c1f0");
    check_field_offset(lv, s15302c1f1, ABISELECT(16,12), "S15302C1.s15302c1f1");
    check_field_offset(lv, s15302c1f2, ABISELECT(24,16), "S15302C1.s15302c1f2");
    check_field_offset(lv, s15302c1f3, ABISELECT(40,28), "S15302C1.s15302c1f3");
    check_field_offset(lv, s15302c1f4, ABISELECT(72,48), "S15302C1.s15302c1f4");
  }
}
static Arrange_To_Call_Me vS15302C1(Test_S15302C1, "S15302C1", ABISELECT(104,68));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6048C1  : S7874C9_nt {
  ::S3214C8_nt s6048c1f0;
};
//SIG(1 S6048C1) C1{ BC2{ m Fp[3] Fi Fp Fi Fp[2] FC3{ m} FC3 Fi[10] Fp Fi:1 Fi:1 Fi:1 Fi:1 Fi:3 Fi:2 Fi:3 Fi:1 Fi:1} FC4{ m Fi}}



static void Test_S6048C1()
{
  extern Class_Descriptor cd_S6048C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,23)];
    init_test(&cd_S6048C1, buf);
    S6048C1 &lv = *(new (buf) S6048C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,88), "sizeof(S6048C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6048C1)");
    check_base_class_offset(lv, (S7874C9_nt*), 0, "S6048C1");
    check_field_offset(lv, s6048c1f0, ABISELECT(128,84), "S6048C1.s6048c1f0");
    test_class_info(&lv, &cd_S6048C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6048C1(Test_S6048C1, "S6048C1", ABISELECT(136,88));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S6004C3  {
  int s6004c3f0[21];
  __tsi64 s6004c3f1[2];
  void  mf6004c3(); // _ZN7S6004C38mf6004c3Ev
};
//SIG(-1 S6004C3) C1{ m Fi[21] FL[2]}


void  S6004C3 ::mf6004c3(){}

static void Test_S6004C3()
{
  {
    init_simple_test("S6004C3");
    S6004C3 lv;
    check2(sizeof(lv), ABISELECT(104,100), "sizeof(S6004C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6004C3)");
    check_field_offset(lv, s6004c3f0, 0, "S6004C3.s6004c3f0");
    check_field_offset(lv, s6004c3f1, ABISELECT(88,84), "S6004C3.s6004c3f1");
  }
}
static Arrange_To_Call_Me vS6004C3(Test_S6004C3, "S6004C3", ABISELECT(104,100));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6004C1  : S3214C7_nt {
  ::S6004C3 s6004c1f0;
  ::S6004C3 s6004c1f1;
  ::S6004C3 s6004c1f2;
  int s6004c1f3[3];
  void *s6004c1f4[2];
  ::S9141C26 s6004c1f5;
  int s6004c1f6[2];
  __tsi64 s6004c1f7;
};
//SIG(1 S6004C1) C1{ BC2{ m Fp Fi[2]} FC3{ m Fi[21] FL[2]} FC3 FC3 Fi[3] Fp[2] FC4{ BC5{ m FC6{ BC2} Fp Fi}} Fi[2] FL}



static void Test_S6004C1()
{
  extern Class_Descriptor cd_S6004C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(52,93)];
    init_test(&cd_S6004C1, buf);
    S6004C1 &lv = *(new (buf) S6004C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(408,368), "sizeof(S6004C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6004C1)");
    check_base_class_offset(lv, (S3214C7_nt*), 0, "S6004C1");
    check_field_offset(lv, s6004c1f0, ABISELECT(16,12), "S6004C1.s6004c1f0");
    check_field_offset(lv, s6004c1f1, ABISELECT(120,112), "S6004C1.s6004c1f1");
    check_field_offset(lv, s6004c1f2, ABISELECT(224,212), "S6004C1.s6004c1f2");
    check_field_offset(lv, s6004c1f3, ABISELECT(328,312), "S6004C1.s6004c1f3");
    check_field_offset(lv, s6004c1f4, ABISELECT(344,324), "S6004C1.s6004c1f4");
    check_field_offset(lv, s6004c1f5, ABISELECT(360,332), "S6004C1.s6004c1f5");
    check_field_offset(lv, s6004c1f6, ABISELECT(392,352), "S6004C1.s6004c1f6");
    check_field_offset(lv, s6004c1f7, ABISELECT(400,360), "S6004C1.s6004c1f7");
    test_class_info(&lv, &cd_S6004C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6004C1(Test_S6004C1, "S6004C1", ABISELECT(408,368));

#else // __cplusplus

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

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

#ifdef __cplusplus

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



static void Test_S15340C3()
{
  extern Class_Descriptor cd_S15340C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S15340C3, buf);
    S15340C3 &lv = *(new (buf) S15340C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S15340C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15340C3)");
    check_base_class_offset(lv, (S3214C7_nt*), 0, "S15340C3");
    test_class_info(&lv, &cd_S15340C3);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15340C3(Test_S15340C3, "S15340C3", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S15340C2()
{
  extern Class_Descriptor cd_S15340C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S15340C2, buf);
    S15340C2 &lv = *(new (buf) S15340C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S15340C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15340C2)");
    check_base_class_offset(lv, (S3214C7_nt*)(S15340C3*), 0, "S15340C2");
    check_base_class_offset(lv, (S15340C3*), 0, "S15340C2");
    test_class_info(&lv, &cd_S15340C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15340C2(Test_S15340C2, "S15340C2", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S3214C7_nt;
extern Class_Descriptor cd_S15340C3;
static Base_Class bases_S15340C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S15340C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S15340C2 = {  "S15340C2", // class name
  bases_S15340C2, 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  S15340C10_nt  {
  int s15340c10f0[4];
  unsigned int s15340c10f1:1;
  void  mf15340c10(); // _ZN12S15340C10_nt10mf15340c10Ev
};
//SIG(-1 S15340C10_nt) C1{ m Fi[4] Fi:1}


void  S15340C10_nt ::mf15340c10(){}

//skip512 S15340C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15340C5  {
  ::S3214C4_nt s15340c5f0;
  char s15340c5f1;
  ::S3214C21_nt s15340c5f2;
  void *s15340c5f3;
  ::S3214C22 s15340c5f4;
  ::S15340C10_nt s15340c5f5;
  void  mf15340c5(); // _ZN8S15340C59mf15340c5Ev
};
//SIG(-1 S15340C5) C1{ m FC2{ m Fi[2]} Fc FC3{ BC4{ BC5{ BC6{ m Fp Fi[2]}}}} Fp FC4 FC7{ m Fi[4] Fi:1}}


void  S15340C5 ::mf15340c5(){}

static void Test_S15340C5()
{
  {
    init_simple_test("S15340C5");
    static S15340C5 lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S15340C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15340C5)");
    check_field_offset(lv, s15340c5f0, 0, "S15340C5.s15340c5f0");
    check_field_offset(lv, s15340c5f1, 8, "S15340C5.s15340c5f1");
    check_field_offset(lv, s15340c5f2, ABISELECT(16,12), "S15340C5.s15340c5f2");
    check_field_offset(lv, s15340c5f3, ABISELECT(32,24), "S15340C5.s15340c5f3");
    check_field_offset(lv, s15340c5f4, ABISELECT(40,28), "S15340C5.s15340c5f4");
    check_field_offset(lv, s15340c5f5, ABISELECT(56,40), "S15340C5.s15340c5f5");
  }
}
static Arrange_To_Call_Me vS15340C5(Test_S15340C5, "S15340C5", ABISELECT(80,60));

#else // __cplusplus

Class_Descriptor cd_S15340C5 = {  "S15340C5", // class name
  0,0,//no base classes
  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  S15340C1  {
  ::S15340C2 s15340c1f0;
  ::S15340C5 s15340c1f1;
  int s15340c1f2[2];
  void  mf15340c1(); // _ZN8S15340C19mf15340c1Ev
};
//SIG(1 S15340C1) C1{ m FC2{ BC3{ BC4{ m Fp Fi[2]}}} FC5{ m FC6{ m Fi[2]} Fc FC7{ BC8{ BC9{ BC4}}} Fp FC8 FC10{ m Fi[4] Fi:1}} Fi[2]}


void  S15340C1 ::mf15340c1(){}

static void Test_S15340C1()
{
  {
    init_simple_test("S15340C1");
    static S15340C1 lv;
    check2(sizeof(lv), ABISELECT(104,80), "sizeof(S15340C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15340C1)");
    check_field_offset(lv, s15340c1f0, 0, "S15340C1.s15340c1f0");
    check_field_offset(lv, s15340c1f1, ABISELECT(16,12), "S15340C1.s15340c1f1");
    check_field_offset(lv, s15340c1f2, ABISELECT(96,72), "S15340C1.s15340c1f2");
  }
}
static Arrange_To_Call_Me vS15340C1(Test_S15340C1, "S15340C1", ABISELECT(104,80));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5487C2  {
  ::S3444C17_nt s5487c2f0;
  int s5487c2f1;
  ::S3214C4_nt s5487c2f2;
  unsigned int s5487c2f3:1;
  unsigned int s5487c2f4:1;
  int s5487c2f5;
  unsigned int s5487c2f6:1;
};
//SIG(-1 S5487C2) C1{ FC2{ m Fi[4]} Fi FC3{ m Fi[2]} Fi:1 Fi:1 Fi Fi:1}



static void Test_S5487C2()
{
  {
    init_simple_test("S5487C2");
    static S5487C2 lv;
    check2(sizeof(lv), 40, "sizeof(S5487C2)");
    check2(__alignof__(lv), 4, "__alignof__(S5487C2)");
    check_field_offset(lv, s5487c2f0, 0, "S5487C2.s5487c2f0");
    check_field_offset(lv, s5487c2f1, 16, "S5487C2.s5487c2f1");
    check_field_offset(lv, s5487c2f2, 20, "S5487C2.s5487c2f2");
    set_bf_and_test(lv, s5487c2f3, 28, 0, 1, 1, "S5487C2");
    set_bf_and_test(lv, s5487c2f4, 28, 1, 1, 1, "S5487C2");
    check_field_offset(lv, s5487c2f5, 32, "S5487C2.s5487c2f5");
    set_bf_and_test(lv, s5487c2f6, 36, 0, 1, 1, "S5487C2");
  }
}
static Arrange_To_Call_Me vS5487C2(Test_S5487C2, "S5487C2", 40);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5487C5_nt  {
  int s5487c5f0[4];
  void  mf5487c5(); // _ZN10S5487C5_nt8mf5487c5Ev
};
//SIG(-1 S5487C5_nt) C1{ m Fi[4]}


void  S5487C5_nt ::mf5487c5(){}

//skip512 S5487C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5487C6_nt  {
  ::S15340C2 s5487c6f0;
  char s5487c6f1;
  void  mf5487c6(); // _ZN10S5487C6_nt8mf5487c6Ev
};
//SIG(-1 S5487C6_nt) C1{ m FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fc}


void  S5487C6_nt ::mf5487c6(){}

//skip512 S5487C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5487C1  : S5487C2 {
  ::S5487C5_nt s5487c1f0;
  ::S5487C6_nt s5487c1f1;
};
//SIG(1 S5487C1) C1{ BC2{ FC3{ m Fi[4]} Fi FC4{ m Fi[2]} Fi:1 Fi:1 Fi Fi:1} FC5{ m Fi[4]} FC6{ m FC7{ BC8{ BC9{ m Fp Fi[2]}}} Fc}}



static void Test_S5487C1()
{
  extern Class_Descriptor cd_S5487C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,19)];
    init_test(&cd_S5487C1, buf);
    S5487C1 &lv = *(new (buf) S5487C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,72), "sizeof(S5487C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5487C1)");
    check_base_class_offset(lv, (S5487C2*), 0, "S5487C1");
    check_field_offset(lv, s5487c1f0, 40, "S5487C1.s5487c1f0");
    check_field_offset(lv, s5487c1f1, 56, "S5487C1.s5487c1f1");
    test_class_info(&lv, &cd_S5487C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5487C1(Test_S5487C1, "S5487C1", ABISELECT(80,72));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S15378C3_nt  {
  char s15378c3f0;
  char s15378c3f1[15];
  void  mf15378c3(); // _ZN11S15378C3_nt9mf15378c3Ev
};
//SIG(-1 S15378C3_nt) C1{ m Fc[16]}


void  S15378C3_nt ::mf15378c3(){}

//skip512 S15378C3_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S15378C2_nt  : S15378C3_nt {
};
//SIG(-1 S15378C2_nt) C1{ BC2{ m Fc[16]}}



//skip512 S15378C2_nt

#else // __cplusplus

extern Class_Descriptor cd_S15378C3_nt;
static Base_Class bases_S15378C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15378C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15378C1  {
  ::S15378C2_nt s15378c1f0;
  ::S15378C2_nt s15378c1f1;
  ::S15378C2_nt s15378c1f2;
  ::S15378C2_nt s15378c1f3;
  void *s15378c1f4;
  int s15378c1f5;
  void *s15378c1f6;
  int s15378c1f7;
  void *s15378c1f8;
  int s15378c1f9;
  char s15378c1f10[2];
  int s15378c1f11[3];
  void *s15378c1f12[2];
  int s15378c1f13;
  void *s15378c1f14;
  int s15378c1f15[2];
  void *s15378c1f16;
  int s15378c1f17;
  void *s15378c1f18;
  void  mf15378c1(); // _ZN8S15378C19mf15378c1Ev
};
//SIG(1 S15378C1) C1{ m FC2{ BC3{ m Fc[16]}} FC2 FC2 FC2 Fp Fi Fp Fi Fp Fi Fc[2] Fi[3] Fp[2] Fi Fp Fi[2] Fp Fi Fp}


void  S15378C1 ::mf15378c1(){}

static void Test_S15378C1()
{
  {
    init_simple_test("S15378C1");
    S15378C1 lv;
    check2(sizeof(lv), ABISELECT(192,140), "sizeof(S15378C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15378C1)");
    check_field_offset(lv, s15378c1f0, 0, "S15378C1.s15378c1f0");
    check_field_offset(lv, s15378c1f1, 16, "S15378C1.s15378c1f1");
    check_field_offset(lv, s15378c1f2, 32, "S15378C1.s15378c1f2");
    check_field_offset(lv, s15378c1f3, 48, "S15378C1.s15378c1f3");
    check_field_offset(lv, s15378c1f4, 64, "S15378C1.s15378c1f4");
    check_field_offset(lv, s15378c1f5, ABISELECT(72,68), "S15378C1.s15378c1f5");
    check_field_offset(lv, s15378c1f6, ABISELECT(80,72), "S15378C1.s15378c1f6");
    check_field_offset(lv, s15378c1f7, ABISELECT(88,76), "S15378C1.s15378c1f7");
    check_field_offset(lv, s15378c1f8, ABISELECT(96,80), "S15378C1.s15378c1f8");
    check_field_offset(lv, s15378c1f9, ABISELECT(104,84), "S15378C1.s15378c1f9");
    check_field_offset(lv, s15378c1f10, ABISELECT(108,88), "S15378C1.s15378c1f10");
    check_field_offset(lv, s15378c1f11, ABISELECT(112,92), "S15378C1.s15378c1f11");
    check_field_offset(lv, s15378c1f12, ABISELECT(128,104), "S15378C1.s15378c1f12");
    check_field_offset(lv, s15378c1f13, ABISELECT(144,112), "S15378C1.s15378c1f13");
    check_field_offset(lv, s15378c1f14, ABISELECT(152,116), "S15378C1.s15378c1f14");
    check_field_offset(lv, s15378c1f15, ABISELECT(160,120), "S15378C1.s15378c1f15");
    check_field_offset(lv, s15378c1f16, ABISELECT(168,128), "S15378C1.s15378c1f16");
    check_field_offset(lv, s15378c1f17, ABISELECT(176,132), "S15378C1.s15378c1f17");
    check_field_offset(lv, s15378c1f18, ABISELECT(184,136), "S15378C1.s15378c1f18");
  }
}
static Arrange_To_Call_Me vS15378C1(Test_S15378C1, "S15378C1", ABISELECT(192,140));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15788C1  {
  ::S15340C5 s15788c1f0;
  int s15788c1f1[2];
  void  mf15788c1(); // _ZN8S15788C19mf15788c1Ev
};
//SIG(1 S15788C1) C1{ m FC2{ m FC3{ m Fi[2]} Fc FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fp FC5 FC8{ m Fi[4] Fi:1}} Fi[2]}


void  S15788C1 ::mf15788c1(){}

static void Test_S15788C1()
{
  {
    init_simple_test("S15788C1");
    static S15788C1 lv;
    check2(sizeof(lv), ABISELECT(88,68), "sizeof(S15788C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15788C1)");
    check_field_offset(lv, s15788c1f0, 0, "S15788C1.s15788c1f0");
    check_field_offset(lv, s15788c1f1, ABISELECT(80,60), "S15788C1.s15788c1f1");
  }
}
static Arrange_To_Call_Me vS15788C1(Test_S15788C1, "S15788C1", ABISELECT(88,68));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15391C1  {
  ::S9141C26 s15391c1f0;
  ::S15340C3 s15391c1f1;
  ::S9141C28_nt s15391c1f2;
  ::S5327C13_nt s15391c1f3;
  ::S3214C23 s15391c1f4;
  int s15391c1f5[2];
  ::S3214C18 s15391c1f6;
  int s15391c1f7[3];
  void  mf15391c1(); // _ZN8S15391C19mf15391c1Ev
};
//SIG(1 S15391C1) C1{ m FC2{ BC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp Fi}} FC6{ BC5} FC4 FC7{ BC5} FC8{ BC5} Fi[2] FC9{ BC5} Fi[3]}


void  S15391C1 ::mf15391c1(){}

static void Test_S15391C1()
{
  {
    init_simple_test("S15391C1");
    S15391C1 lv;
    check2(sizeof(lv), ABISELECT(136,100), "sizeof(S15391C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15391C1)");
    check_field_offset(lv, s15391c1f0, 0, "S15391C1.s15391c1f0");
    check_field_offset(lv, s15391c1f1, ABISELECT(32,20), "S15391C1.s15391c1f1");
    check_field_offset(lv, s15391c1f2, ABISELECT(48,32), "S15391C1.s15391c1f2");
    check_field_offset(lv, s15391c1f3, ABISELECT(64,44), "S15391C1.s15391c1f3");
    check_field_offset(lv, s15391c1f4, ABISELECT(80,56), "S15391C1.s15391c1f4");
    check_field_offset(lv, s15391c1f5, ABISELECT(96,68), "S15391C1.s15391c1f5");
    check_field_offset(lv, s15391c1f6, ABISELECT(104,76), "S15391C1.s15391c1f6");
    check_field_offset(lv, s15391c1f7, ABISELECT(120,88), "S15391C1.s15391c1f7");
  }
}
static Arrange_To_Call_Me vS15391C1(Test_S15391C1, "S15391C1", ABISELECT(136,100));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11363C3_nt  {
  void *s11363c3f0[3];
  char s11363c3f1[60];
  int s11363c3f2;
};
//SIG(-1 S11363C3_nt) C1{ Fp[3] Fc[60] Fi}



//skip512 S11363C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11363C5_nt  {
  char s11363c5f0[20];
};
//SIG(-1 S11363C5_nt) C1{ Fc[20]}



//skip512 S11363C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11363C4_nt  {
  ::S11363C5_nt s11363c4f0;
  char s11363c4f1[16];
};
//SIG(-1 S11363C4_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S11363C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11363C2  {
  int s11363c2f0;
  ::S11363C3_nt s11363c2f1;
  int s11363c2f2;
  ::S11363C4_nt s11363c2f3;
  char s11363c2f4[32];
};
//SIG(-1 S11363C2) C1{ Fi FC2{ Fp[3] Fc[60] Fi} Fi FC3{ FC4{ Fc[20]} Fc[16]} Fc[32]}



static void Test_S11363C2()
{
  {
    init_simple_test("S11363C2");
    S11363C2 lv;
    check2(sizeof(lv), ABISELECT(168,152), "sizeof(S11363C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11363C2)");
    check_field_offset(lv, s11363c2f0, 0, "S11363C2.s11363c2f0");
    check_field_offset(lv, s11363c2f1, ABISELECT(8,4), "S11363C2.s11363c2f1");
    check_field_offset(lv, s11363c2f2, ABISELECT(96,80), "S11363C2.s11363c2f2");
    check_field_offset(lv, s11363c2f3, ABISELECT(100,84), "S11363C2.s11363c2f3");
    check_field_offset(lv, s11363c2f4, ABISELECT(136,120), "S11363C2.s11363c2f4");
  }
}
static Arrange_To_Call_Me vS11363C2(Test_S11363C2, "S11363C2", ABISELECT(168,152));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11363C6_nt  {
  int s11363c6f0;
  char s11363c6f1[32];
};
//SIG(-1 S11363C6_nt) C1{ Fi Fc[32]}



//skip512 S11363C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11363C7_nt  {
  char s11363c7f0[4];
};
//SIG(-1 S11363C7_nt) C1{ Fc[4]}



//skip512 S11363C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11363C1  {
  ::S11363C2 s11363c1f0;
  ::S11363C6_nt s11363c1f1;
  ::S11363C7_nt s11363c1f2;
  char s11363c1f3[64];
};
//SIG(1 S11363C1) C1{ FC2{ Fi FC3{ Fp[3] Fc[60] Fi} Fi FC4{ FC5{ Fc[20]} Fc[16]} Fc[32]} FC6{ Fi Fc[32]} FC7{ Fc[4]} Fc[64]}



static void Test_S11363C1()
{
  {
    init_simple_test("S11363C1");
    S11363C1 lv;
    check2(sizeof(lv), ABISELECT(272,256), "sizeof(S11363C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11363C1)");
    check_field_offset(lv, s11363c1f0, 0, "S11363C1.s11363c1f0");
    check_field_offset(lv, s11363c1f1, ABISELECT(168,152), "S11363C1.s11363c1f1");
    check_field_offset(lv, s11363c1f2, ABISELECT(204,188), "S11363C1.s11363c1f2");
    check_field_offset(lv, s11363c1f3, ABISELECT(208,192), "S11363C1.s11363c1f3");
  }
}
static Arrange_To_Call_Me vS11363C1(Test_S11363C1, "S11363C1", ABISELECT(272,256));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5645C1  : S15340C5 {
  void *s5645c1f0;
};
//SIG(1 S5645C1) C1{ BC2{ m FC3{ m Fi[2]} Fc FC4{ BC5{ BC6{ BC7{ m Fp Fi[2]}}}} Fp FC5 FC8{ m Fi[4] Fi:1}} Fp}



static void Test_S5645C1()
{
  extern Class_Descriptor cd_S5645C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S5645C1, buf);
    S5645C1 &lv = *(new (buf) S5645C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S5645C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5645C1)");
    check_base_class_offset(lv, (S15340C5*), 0, "S5645C1");
    check_field_offset(lv, s5645c1f0, ABISELECT(80,60), "S5645C1.s5645c1f0");
    test_class_info(&lv, &cd_S5645C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5645C1(Test_S5645C1, "S5645C1", ABISELECT(88,64));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5488C1  : S5487C2 {
  int s5488c1f0;
  ::S5487C6_nt s5488c1f1;
};
//SIG(1 S5488C1) C1{ BC2{ FC3{ m Fi[4]} Fi FC4{ m Fi[2]} Fi:1 Fi:1 Fi Fi:1} Fi FC5{ m FC6{ BC7{ BC8{ m Fp Fi[2]}}} Fc}}



static void Test_S5488C1()
{
  extern Class_Descriptor cd_S5488C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,16)];
    init_test(&cd_S5488C1, buf);
    S5488C1 &lv = *(new (buf) S5488C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,60), "sizeof(S5488C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5488C1)");
    check_base_class_offset(lv, (S5487C2*), 0, "S5488C1");
    check_field_offset(lv, s5488c1f0, 40, "S5488C1.s5488c1f0");
    check_field_offset(lv, s5488c1f1, ABISELECT(48,44), "S5488C1.s5488c1f1");
    test_class_info(&lv, &cd_S5488C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5488C1(Test_S5488C1, "S5488C1", ABISELECT(72,60));

#else // __cplusplus

extern Class_Descriptor cd_S5487C2;
static Base_Class bases_S5488C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5487C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5488C1 = {  "S5488C1", // class name
  bases_S5488C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(72,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  S9379C2  {
  ::S4227C19_nt s9379c2f0;
  int s9379c2f1[2];
  char s9379c2f2;
  virtual  ~S9379C2(); // _ZN7S9379C2D1Ev
  virtual void  v3(); // _ZN7S9379C22v3Ev
  virtual void  v4(); // _ZN7S9379C22v4Ev
  virtual void  v5(); // _ZN7S9379C22v5Ev
  S9379C2(); // tgen
};
//SIG(-1 S9379C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9379C2 ::~S9379C2(){ note_dtor("S9379C2", this);}
void  S9379C2 ::v3(){vfunc_called(this, "_ZN7S9379C22v3Ev");}
void  S9379C2 ::v4(){vfunc_called(this, "_ZN7S9379C22v4Ev");}
void  S9379C2 ::v5(){vfunc_called(this, "_ZN7S9379C22v5Ev");}
S9379C2 ::S9379C2(){ note_ctor("S9379C2", this);} // tgen

static void Test_S9379C2()
{
  extern Class_Descriptor cd_S9379C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9379C2, buf);
    S9379C2 *dp, &lv = *(dp=new (buf) S9379C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9379C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9379C2)");
    check_field_offset(lv, s9379c2f0, ABISELECT(8,4), "S9379C2.s9379c2f0");
    check_field_offset(lv, s9379c2f1, ABISELECT(24,16), "S9379C2.s9379c2f1");
    check_field_offset(lv, s9379c2f2, ABISELECT(32,24), "S9379C2.s9379c2f2");
    test_class_info(&lv, &cd_S9379C2);
    dp->~S9379C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9379C2(Test_S9379C2, "S9379C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9379C2C1Ev();
extern void _ZN7S9379C2D1Ev();
Name_Map name_map_S9379C2[] = {
  NSPAIR(_ZN7S9379C2C1Ev),
  NSPAIR(_ZN7S9379C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9379C2[];
extern void _ZN7S9379C2D1Ev();
extern void _ZN7S9379C2D0Ev();
extern void _ZN7S9379C22v3Ev();
extern void _ZN7S9379C22v4Ev();
extern void _ZN7S9379C22v5Ev();
static  VTBL_ENTRY vtc_S9379C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9379C2[0]),
  (VTBL_ENTRY)&_ZN7S9379C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9379C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9379C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9379C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9379C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9379C2[];
extern  VTBL_ENTRY _ZTV7S9379C2[];
Class_Descriptor cd_S9379C2 = {  "S9379C2", // class name
  0,0,//no base classes
  &(vtc_S9379C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9379C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9379C2),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  S9379C6_nt  {
  int s9379c6f0;
  void *s9379c6f1;
};
//SIG(1 S9379C6_nt) C1{ Fi Fp}



//skip512 S9379C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9379C7_nt  {
  int s9379c7f0;
  int s9379c7f1;
};
//SIG(1 S9379C7_nt) C1{ Fi[2]}



//skip512 S9379C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S9379C5  {
  ::S9379C6_nt s9379c5f0;
  ::S9379C7_nt s9379c5f1;
};
//SIG(1 S9379C5) U1{ FC2{ Fi Fp} FC3{ Fi Fi}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S9379C1  : S9379C2 {
  void *s9379c1f0;
  int s9379c1f1;
  ::S9379C5 s9379c1f2;
  virtual  ~S9379C1(); // _ZN7S9379C1D1Ev
  virtual void  v1(); // _ZN7S9379C12v1Ev
  virtual void  v2(); // _ZN7S9379C12v2Ev
  S9379C1(); // tgen
};
//SIG(1 S9379C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fp Fi FU5{ FC6{ Fi Fp} FC7{ Fi Fi}}}


 S9379C1 ::~S9379C1(){ note_dtor("S9379C1", this);}
void  S9379C1 ::v1(){vfunc_called(this, "_ZN7S9379C12v1Ev");}
void  S9379C1 ::v2(){vfunc_called(this, "_ZN7S9379C12v2Ev");}
S9379C1 ::S9379C1(){ note_ctor("S9379C1", this);} // tgen

static void Test_S9379C1()
{
  extern Class_Descriptor cd_S9379C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S9379C1, buf);
    S9379C1 *dp, &lv = *(dp=new (buf) S9379C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S9379C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9379C1)");
    check_base_class_offset(lv, (S9379C2*), 0, "S9379C1");
    check_field_offset(lv, s9379c1f0, ABISELECT(40,28), "S9379C1.s9379c1f0");
    check_field_offset(lv, s9379c1f1, ABISELECT(48,32), "S9379C1.s9379c1f1");
    check_field_offset(lv, s9379c1f2, ABISELECT(56,36), "S9379C1.s9379c1f2");
    test_class_info(&lv, &cd_S9379C1);
    dp->~S9379C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9379C1(Test_S9379C1, "S9379C1", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S9379C1C1Ev();
extern void _ZN7S9379C1D1Ev();
Name_Map name_map_S9379C1[] = {
  NSPAIR(_ZN7S9379C1C1Ev),
  NSPAIR(_ZN7S9379C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9379C2;
extern VTBL_ENTRY _ZTI7S9379C2[];
extern  VTBL_ENTRY _ZTV7S9379C2[];
static Base_Class bases_S9379C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9379C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9379C1[];
extern void _ZN7S9379C1D1Ev();
extern void _ZN7S9379C1D0Ev();
extern void _ZN7S9379C22v3Ev();
extern void _ZN7S9379C22v4Ev();
extern void _ZN7S9379C22v5Ev();
extern void _ZN7S9379C12v1Ev();
extern void _ZN7S9379C12v2Ev();
static  VTBL_ENTRY vtc_S9379C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9379C1[0]),
  (VTBL_ENTRY)&_ZN7S9379C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9379C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9379C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9379C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9379C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9379C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9379C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9379C1[];
extern  VTBL_ENTRY _ZTV7S9379C1[];
Class_Descriptor cd_S9379C1 = {  "S9379C1", // class name
  bases_S9379C1, 1,
  &(vtc_S9379C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S9379C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9379C1),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  S12285C3  {
  char s12285c3f0[84];
};
//SIG(-1 S12285C3) C1{ Fc[84]}



static void Test_S12285C3()
{
  {
    init_simple_test("S12285C3");
    S12285C3 lv;
    check2(sizeof(lv), 84, "sizeof(S12285C3)");
    check2(__alignof__(lv), 1, "__alignof__(S12285C3)");
    check_field_offset(lv, s12285c3f0, 0, "S12285C3.s12285c3f0");
  }
}
static Arrange_To_Call_Me vS12285C3(Test_S12285C3, "S12285C3", 84);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12285C7_nt  {
  char s12285c7f0[52];
};
//SIG(-1 S12285C7_nt) C1{ Fc[52]}



//skip512 S12285C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12285C2  {
  int s12285c2f0;
  ::S12285C3 s12285c2f1;
  int s12285c2f2[4];
  __tsi64 s12285c2f3;
  ::S9676C7_nt s12285c2f4;
  ::S11363C4_nt s12285c2f5;
  ::S12285C7_nt s12285c2f6;
  char s12285c2f7[32];
};
//SIG(-1 S12285C2) C1{ Fi FC2{ Fc[84]} Fi[4] FL FC3{ FL} FC4{ FC5{ Fc[20]} Fc[16]} FC6{ Fc[52]} Fc[32]}



static void Test_S12285C2()
{
  {
    init_simple_test("S12285C2");
    S12285C2 lv;
    check2(sizeof(lv), 240, "sizeof(S12285C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12285C2)");
    check_field_offset(lv, s12285c2f0, 0, "S12285C2.s12285c2f0");
    check_field_offset(lv, s12285c2f1, 4, "S12285C2.s12285c2f1");
    check_field_offset(lv, s12285c2f2, 88, "S12285C2.s12285c2f2");
    check_field_offset(lv, s12285c2f3, 104, "S12285C2.s12285c2f3");
    check_field_offset(lv, s12285c2f4, 112, "S12285C2.s12285c2f4");
    check_field_offset(lv, s12285c2f5, 120, "S12285C2.s12285c2f5");
    check_field_offset(lv, s12285c2f6, 156, "S12285C2.s12285c2f6");
    check_field_offset(lv, s12285c2f7, 208, "S12285C2.s12285c2f7");
  }
}
static Arrange_To_Call_Me vS12285C2(Test_S12285C2, "S12285C2", 240);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S12285C1  {
  int s12285c1f0;
  char s12285c1f1[4];
  ::S12285C2 s12285c1f2;
};
//SIG(1 S12285C1) C1{ Fi Fc[4] FC2{ Fi FC3{ Fc[84]} Fi[4] FL FC4{ FL} FC5{ FC6{ Fc[20]} Fc[16]} FC7{ Fc[52]} Fc[32]}}



static void Test_S12285C1()
{
  {
    init_simple_test("S12285C1");
    S12285C1 lv;
    check2(sizeof(lv), 248, "sizeof(S12285C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12285C1)");
    check_field_offset(lv, s12285c1f0, 0, "S12285C1.s12285c1f0");
    check_field_offset(lv, s12285c1f1, 4, "S12285C1.s12285c1f1");
    check_field_offset(lv, s12285c1f2, 8, "S12285C1.s12285c1f2");
  }
}
static Arrange_To_Call_Me vS12285C1(Test_S12285C1, "S12285C1", 248);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3574C3  : virtual S3577C4_nt {
  void *s3574c3f0[2];
  unsigned int s3574c3f1:1;
  virtual  ~S3574C3(); // _ZN7S3574C3D2Ev
  virtual void  v2(); // _ZN7S3574C32v2Ev
  virtual void  v3(); // _ZN7S3574C32v3Ev
  S3574C3(); // tgen
};
//SIG(-1 S3574C3) C1{ VBC2{ vd m Fi} vd v1 v2 Fp[2] Fi:1}


 S3574C3 ::~S3574C3(){ note_dtor("S3574C3", this);}
void  S3574C3 ::v2(){vfunc_called(this, "_ZN7S3574C32v2Ev");}
void  S3574C3 ::v3(){vfunc_called(this, "_ZN7S3574C32v3Ev");}
S3574C3 ::S3574C3(){ note_ctor("S3574C3", this);} // tgen

static void Test_S3574C3()
{
  extern Class_Descriptor cd_S3574C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S3574C3, buf);
    S3574C3 *dp, &lv = *(dp=new (buf) S3574C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S3574C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3574C3)");
    check_base_class_offset(lv, (S3577C4_nt*), ABISELECT(32,16), "S3574C3");
    check_field_offset(lv, s3574c3f0, ABISELECT(8,4), "S3574C3.s3574c3f0");
    set_bf_and_test(lv, s3574c3f1, ABISELECT(24,12), 0, 1, 1, "S3574C3");
    test_class_info(&lv, &cd_S3574C3);
    dp->~S3574C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3574C3(Test_S3574C3, "S3574C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S3574C3C1Ev();
extern void _ZN7S3574C3D2Ev();
Name_Map name_map_S3574C3[] = {
  NSPAIR(_ZN7S3574C3C1Ev),
  NSPAIR(_ZN7S3574C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S3574C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3574C3[];
extern void _ZN7S3574C3D1Ev();
extern void _ZN7S3574C3D0Ev();
extern void _ZN7S3574C32v2Ev();
extern void _ZN7S3574C32v3Ev();
extern void ABISELECT(_ZTv0_n24_N7S3574C3D1Ev,_ZTv0_n12_N7S3574C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S3574C3D1Ev,_ZThn16_N7S3574C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3574C3D0Ev,_ZTv0_n12_N7S3574C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S3574C3D0Ev,_ZThn16_N7S3574C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3574C3[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3574C3[0]),
  (VTBL_ENTRY)&_ZN7S3574C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3574C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3574C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3574C32v3Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S3574C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3574C3D1Ev,_ZTv0_n12_N7S3574C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3574C3D0Ev,_ZTv0_n12_N7S3574C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S3574C3[];
static  VTT_ENTRY vtt_S3574C3[] = {
  {&(_ZTV7S3574C3[3]),  3,12},
  {&(_ZTV7S3574C3[10]),  10,12},
};
extern VTBL_ENTRY _ZTI7S3574C3[];
extern  VTBL_ENTRY _ZTV7S3574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3574C3[];
static VTBL_ENTRY alt_thunk_names137[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3574C3D0Ev,_ZTv0_n12_N7S3574C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3574C3D0Ev,_ZThn16_N7S3574C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3574C3D1Ev,_ZTv0_n12_N7S3574C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3574C3D1Ev,_ZThn16_N7S3574C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3574C3 = {  "S3574C3", // class name
  bases_S3574C3, 1,
  &(vtc_S3574C3[0]), // expected_vtbl_contents
  &(vtt_S3574C3[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S3574C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3574C3),12, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3574C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names137,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3574C2  : S3574C3 {
  int s3574c2f0;
  unsigned int s3574c2f1:1;
  virtual void  v4(); // _ZN7S3574C22v4Ev
  virtual void  v5(); // _ZN7S3574C22v5Ev
  ~S3574C2(); // tgen
  S3574C2(); // tgen
};
//SIG(-1 S3574C2) C1{ BC2{ VBC3{ vd m Fi} vd v3 v4 Fp[2] Fi:1} v1 v2 Fi Fi:1}


void  S3574C2 ::v4(){vfunc_called(this, "_ZN7S3574C22v4Ev");}
void  S3574C2 ::v5(){vfunc_called(this, "_ZN7S3574C22v5Ev");}
S3574C2 ::~S3574C2(){ note_dtor("S3574C2", this);} // tgen
S3574C2 ::S3574C2(){ note_ctor("S3574C2", this);} // tgen

static void Test_S3574C2()
{
  extern Class_Descriptor cd_S3574C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S3574C2, buf);
    S3574C2 *dp, &lv = *(dp=new (buf) S3574C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S3574C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3574C2)");
    check_base_class_offset(lv, (S3577C4_nt*)(S3574C3*), ABISELECT(40,24), "S3574C2");
    check_base_class_offset(lv, (S3574C3*), 0, "S3574C2");
    check_field_offset(lv, s3574c2f0, ABISELECT(28,16), "S3574C2.s3574c2f0");
    set_bf_and_test(lv, s3574c2f1, ABISELECT(32,20), 0, 1, 1, "S3574C2");
    test_class_info(&lv, &cd_S3574C2);
    dp->~S3574C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3574C2(Test_S3574C2, "S3574C2", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S3574C2C1Ev();
extern void _ZN7S3574C2D1Ev();
Name_Map name_map_S3574C2[] = {
  NSPAIR(_ZN7S3574C2C1Ev),
  NSPAIR(_ZN7S3574C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S3574C3;
extern VTBL_ENTRY _ZTI7S3574C3[];
extern  VTBL_ENTRY _ZTV7S3574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3574C3[];
static Base_Class bases_S3574C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(40,24), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3574C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3574C2[];
extern void _ZN7S3574C2D1Ev();
extern void _ZN7S3574C2D0Ev();
extern void _ZN7S3574C32v2Ev();
extern void _ZN7S3574C32v3Ev();
extern void _ZN7S3574C22v4Ev();
extern void _ZN7S3574C22v5Ev();
extern void ABISELECT(_ZTv0_n24_N7S3574C2D1Ev,_ZTv0_n12_N7S3574C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S3574C2D1Ev,_ZThn24_N7S3574C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3574C2D0Ev,_ZTv0_n12_N7S3574C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S3574C2D0Ev,_ZThn24_N7S3574C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3574C2[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3574C2[0]),
  (VTBL_ENTRY)&_ZN7S3574C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3574C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3574C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3574C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3574C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3574C22v5Ev,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S3574C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3574C2D1Ev,_ZTv0_n12_N7S3574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3574C2D0Ev,_ZTv0_n12_N7S3574C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S3574C2[];
extern void _ZN7S3574C3D1Ev();
extern void _ZN7S3574C3D0Ev();
extern void _ZN7S3574C32v2Ev();
extern void _ZN7S3574C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3574C3__7S3574C2[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3574C3[0]),
  (VTBL_ENTRY)&_ZN7S3574C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3574C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3574C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3574C32v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3574C3D1Ev,_ZTv0_n12_N7S3574C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S3574C3D1Ev,_ZThn24_N7S3574C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3574C3D0Ev,_ZTv0_n12_N7S3574C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S3574C3D0Ev,_ZThn24_N7S3574C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3574C3__7S3574C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S3574C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3574C3D1Ev,_ZTv0_n12_N7S3574C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3574C3D0Ev,_ZTv0_n12_N7S3574C3D0Ev),
};
static  VTT_ENTRY vtt_S3574C2[] = {
  {&(_ZTV7S3574C2[3]),  3,14},
  {&(_tg__ZTV7S3574C3__7S3574C2[3]),  3,7},
  {&(_tg__ZTV10S3577C4_nt__7S3574C3__7S3574C2[3]),  3,5},
  {&(_ZTV7S3574C2[12]),  12,14},
};
extern VTBL_ENTRY _ZTI7S3574C2[];
extern  VTBL_ENTRY _ZTV7S3574C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3574C2[];
static VTBL_ENTRY alt_thunk_names138[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3574C3D0Ev,_ZTv0_n12_N7S3574C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3574C3D0Ev,_ZThn24_N7S3574C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3574C3D1Ev,_ZTv0_n12_N7S3574C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3574C3D1Ev,_ZThn24_N7S3574C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3574C2D0Ev,_ZTv0_n12_N7S3574C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3574C2D0Ev,_ZThn24_N7S3574C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3574C2D1Ev,_ZTv0_n12_N7S3574C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3574C2D1Ev,_ZThn24_N7S3574C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3574C2 = {  "S3574C2", // class name
  bases_S3574C2, 2,
  &(vtc_S3574C2[0]), // expected_vtbl_contents
  &(vtt_S3574C2[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S3574C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3574C2),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3574C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names138,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3574C1  : S3574C2 {
  void *s3574c1f0;
  ::S15340C3 s3574c1f1;
  virtual void  v1(); // _ZN7S3574C12v1Ev
  ~S3574C1(); // tgen
  S3574C1(); // tgen
};
//SIG(1 S3574C1) C1{ BC2{ BC3{ VBC4{ vd m Fi} vd v2 v3 Fp[2] Fi:1} v4 v5 Fi Fi:1} v1 Fp FC5{ BC6{ m Fp Fi[2]}}}


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

static void Test_S3574C1()
{
  extern Class_Descriptor cd_S3574C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S3574C1, buf);
    S3574C1 *dp, &lv = *(dp=new (buf) S3574C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S3574C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3574C1)");
    check_base_class_offset(lv, (S3577C4_nt*)(S3574C3*)(S3574C2*), ABISELECT(64,40), "S3574C1");
    check_base_class_offset(lv, (S3574C3*)(S3574C2*), 0, "S3574C1");
    check_base_class_offset(lv, (S3574C2*), 0, "S3574C1");
    check_field_offset(lv, s3574c1f0, ABISELECT(40,24), "S3574C1.s3574c1f0");
    check_field_offset(lv, s3574c1f1, ABISELECT(48,28), "S3574C1.s3574c1f1");
    test_class_info(&lv, &cd_S3574C1);
    dp->~S3574C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3574C1(Test_S3574C1, "S3574C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S3574C1C1Ev();
extern void _ZN7S3574C1D1Ev();
Name_Map name_map_S3574C1[] = {
  NSPAIR(_ZN7S3574C1C1Ev),
  NSPAIR(_ZN7S3574C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S3574C3;
extern VTBL_ENTRY _ZTI7S3574C3[];
extern  VTBL_ENTRY _ZTV7S3574C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3574C3[];
extern Class_Descriptor cd_S3574C2;
extern VTBL_ENTRY _ZTI7S3574C2[];
extern  VTBL_ENTRY _ZTV7S3574C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3574C2[];
static Base_Class bases_S3574C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(64,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3574C3,    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
    2, //immediately_derived
  0, 0},
  {&cd_S3574C2,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S3574C1[];
extern void _ZN7S3574C1D1Ev();
extern void _ZN7S3574C1D0Ev();
extern void _ZN7S3574C32v2Ev();
extern void _ZN7S3574C32v3Ev();
extern void _ZN7S3574C22v4Ev();
extern void _ZN7S3574C22v5Ev();
extern void _ZN7S3574C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S3574C1D1Ev,_ZTv0_n12_N7S3574C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S3574C1D1Ev,_ZThn40_N7S3574C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3574C1D0Ev,_ZTv0_n12_N7S3574C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S3574C1D0Ev,_ZThn40_N7S3574C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3574C1[] = {
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3574C1[0]),
  (VTBL_ENTRY)&_ZN7S3574C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3574C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3574C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3574C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3574C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3574C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3574C12v1Ev,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S3574C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3574C1D1Ev,_ZTv0_n12_N7S3574C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3574C1D0Ev,_ZTv0_n12_N7S3574C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S3574C1[];
extern void _ZN7S3574C2D1Ev();
extern void _ZN7S3574C2D0Ev();
extern void _ZN7S3574C32v2Ev();
extern void _ZN7S3574C32v3Ev();
extern void _ZN7S3574C22v4Ev();
extern void _ZN7S3574C22v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3574C2__7S3574C1[] = {
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3574C2[0]),
  (VTBL_ENTRY)&_ZN7S3574C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3574C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3574C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3574C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3574C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3574C22v5Ev,
};
extern void _ZN7S3574C3D1Ev();
extern void _ZN7S3574C3D0Ev();
extern void _ZN7S3574C32v2Ev();
extern void _ZN7S3574C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3574C37S3574C2__7S3574C1[] = {
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3574C3[0]),
  (VTBL_ENTRY)&_ZN7S3574C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3574C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3574C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3574C32v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3574C3D1Ev,_ZTv0_n12_N7S3574C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S3574C3D1Ev,_ZThn40_N7S3574C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3574C3D0Ev,_ZTv0_n12_N7S3574C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S3574C3D0Ev,_ZThn40_N7S3574C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3574C37S3574C2__7S3574C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S3574C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3574C3D1Ev,_ZTv0_n12_N7S3574C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3574C3D0Ev,_ZTv0_n12_N7S3574C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3574C2D1Ev,_ZTv0_n12_N7S3574C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S3574C2D1Ev,_ZThn40_N7S3574C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3574C2D0Ev,_ZTv0_n12_N7S3574C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S3574C2D0Ev,_ZThn40_N7S3574C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3574C2__7S3574C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S3574C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3574C2D1Ev,_ZTv0_n12_N7S3574C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3574C2D0Ev,_ZTv0_n12_N7S3574C2D0Ev),
};
static  VTT_ENTRY vtt_S3574C1[] = {
  {&(_ZTV7S3574C1[3]),  3,15},
  {&(_tg__ZTV7S3574C2__7S3574C1[3]),  3,9},
  {&(_tg__ZTV7S3574C37S3574C2__7S3574C1[3]),  3,7},
  {&(_tg__ZTV10S3577C4_nt__7S3574C37S3574C2__7S3574C1[3]),  3,5},
  {&(_tg__ZTV10S3577C4_nt__7S3574C2__7S3574C1[3]),  3,5},
  {&(_ZTV7S3574C1[13]),  13,15},
};
extern VTBL_ENTRY _ZTI7S3574C1[];
extern  VTBL_ENTRY _ZTV7S3574C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3574C1[];
static VTBL_ENTRY alt_thunk_names139[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3574C2D0Ev,_ZTv0_n12_N7S3574C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3574C2D0Ev,_ZThn40_N7S3574C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3574C2D1Ev,_ZTv0_n12_N7S3574C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3574C2D1Ev,_ZThn40_N7S3574C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3574C3D0Ev,_ZTv0_n12_N7S3574C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3574C3D0Ev,_ZThn40_N7S3574C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3574C3D1Ev,_ZTv0_n12_N7S3574C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3574C3D1Ev,_ZThn40_N7S3574C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3574C1D0Ev,_ZTv0_n12_N7S3574C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3574C1D0Ev,_ZThn40_N7S3574C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3574C1D1Ev,_ZTv0_n12_N7S3574C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3574C1D1Ev,_ZThn40_N7S3574C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3574C1 = {  "S3574C1", // class name
  bases_S3574C1, 3,
  &(vtc_S3574C1[0]), // expected_vtbl_contents
  &(vtt_S3574C1[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S3574C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3574C1),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3574C1),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names139,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6889C2_nt  {
  int s6889c2f0;
  virtual void  v5(); // _ZN10S6889C2_nt2v5Ev
  virtual void  v6(); // _ZN10S6889C2_nt2v6Ev
  virtual void  v7(); // _ZN10S6889C2_nt2v7Ev
  virtual void  v8(); // _ZN10S6889C2_nt2v8Ev
  ~S6889C2_nt(); // tgen
  S6889C2_nt(); // tgen
};
//SIG(-1 S6889C2_nt) C1{ v1 v2 v3 v4 Fi}


void  S6889C2_nt ::v5(){vfunc_called(this, "_ZN10S6889C2_nt2v5Ev");}
void  S6889C2_nt ::v6(){vfunc_called(this, "_ZN10S6889C2_nt2v6Ev");}
void  S6889C2_nt ::v7(){vfunc_called(this, "_ZN10S6889C2_nt2v7Ev");}
void  S6889C2_nt ::v8(){vfunc_called(this, "_ZN10S6889C2_nt2v8Ev");}
S6889C2_nt ::~S6889C2_nt(){ note_dtor("S6889C2_nt", this);} // tgen
S6889C2_nt ::S6889C2_nt(){ note_ctor("S6889C2_nt", this);} // tgen

//skip512 S6889C2_nt

#else // __cplusplus

extern void _ZN10S6889C2_ntC1Ev();
extern void _ZN10S6889C2_ntD1Ev();
Name_Map name_map_S6889C2_nt[] = {
  NSPAIR(_ZN10S6889C2_ntC1Ev),
  NSPAIR(_ZN10S6889C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6889C2_nt[];
extern void _ZN10S6889C2_nt2v5Ev();
extern void _ZN10S6889C2_nt2v6Ev();
extern void _ZN10S6889C2_nt2v7Ev();
extern void _ZN10S6889C2_nt2v8Ev();
static  VTBL_ENTRY vtc_S6889C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6889C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S6889C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S6889C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S6889C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S6889C2_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S6889C2_nt[];
VTBL_ENTRY *P__ZTI10S6889C2_nt = _ZTI10S6889C2_nt; 
extern  VTBL_ENTRY _ZTV10S6889C2_nt[];
Class_Descriptor cd_S6889C2_nt = {  "S6889C2_nt", // class name
  0,0,//no base classes
  &(vtc_S6889C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S6889C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6889C2_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  S6889C4_nt  {
  short s6889c4f0[6];
  int s6889c4f1;
};
//SIG(-1 S6889C4_nt) C1{ Fs[6] Fi}



//skip512 S6889C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6889C3_nt  {
  int s6889c3f0[2];
  long s6889c3f1;
  ::S6889C4_nt s6889c3f2;
  ::S6889C4_nt s6889c3f3;
  ::S6889C4_nt s6889c3f4;
  int s6889c3f5[6];
};
//SIG(-1 S6889C3_nt) C1{ Fi[2] Fl FC2{ Fs[6] Fi} FC2 FC2 Fi[6]}



//skip512 S6889C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6889C1  : S6889C2_nt {
  ::S6889C3_nt s6889c1f0;
  int s6889c1f1[2];
  virtual  ~S6889C1(); // _ZN7S6889C1D1Ev
  virtual void  v1(); // _ZN7S6889C12v1Ev
  virtual void  v2(); // _ZN7S6889C12v2Ev
  virtual void  v3(); // _ZN7S6889C12v3Ev
  virtual void  v4(); // _ZN7S6889C12v4Ev
  S6889C1(); // tgen
};
//SIG(1 S6889C1) C1{ BC2{ v5 v6 v7 v8 Fi} vd v1 v2 v3 v4 FC3{ Fi[2] Fl FC4{ Fs[6] Fi} FC4 FC4 Fi[6]} Fi[2]}


 S6889C1 ::~S6889C1(){ note_dtor("S6889C1", this);}
void  S6889C1 ::v1(){vfunc_called(this, "_ZN7S6889C12v1Ev");}
void  S6889C1 ::v2(){vfunc_called(this, "_ZN7S6889C12v2Ev");}
void  S6889C1 ::v3(){vfunc_called(this, "_ZN7S6889C12v3Ev");}
void  S6889C1 ::v4(){vfunc_called(this, "_ZN7S6889C12v4Ev");}
S6889C1 ::S6889C1(){ note_ctor("S6889C1", this);} // tgen

static void Test_S6889C1()
{
  extern Class_Descriptor cd_S6889C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,26)];
    init_test(&cd_S6889C1, buf);
    S6889C1 *dp, &lv = *(dp=new (buf) S6889C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,100), "sizeof(S6889C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6889C1)");
    check_base_class_offset(lv, (S6889C2_nt*), 0, "S6889C1");
    check_field_offset(lv, s6889c1f0, ABISELECT(16,8), "S6889C1.s6889c1f0");
    check_field_offset(lv, s6889c1f1, ABISELECT(104,92), "S6889C1.s6889c1f1");
    test_class_info(&lv, &cd_S6889C1);
    dp->~S6889C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6889C1(Test_S6889C1, "S6889C1", ABISELECT(112,100));

#else // __cplusplus

extern void _ZN7S6889C1C1Ev();
extern void _ZN7S6889C1D1Ev();
Name_Map name_map_S6889C1[] = {
  NSPAIR(_ZN7S6889C1C1Ev),
  NSPAIR(_ZN7S6889C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6889C2_nt;
extern VTBL_ENTRY _ZTI10S6889C2_nt[];
extern  VTBL_ENTRY _ZTV10S6889C2_nt[];
static Base_Class bases_S6889C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6889C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6889C1[];
extern void _ZN10S6889C2_nt2v5Ev();
extern void _ZN10S6889C2_nt2v6Ev();
extern void _ZN10S6889C2_nt2v7Ev();
extern void _ZN10S6889C2_nt2v8Ev();
extern void _ZN7S6889C1D1Ev();
extern void _ZN7S6889C1D0Ev();
extern void _ZN7S6889C12v1Ev();
extern void _ZN7S6889C12v2Ev();
extern void _ZN7S6889C12v3Ev();
extern void _ZN7S6889C12v4Ev();
static  VTBL_ENTRY vtc_S6889C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6889C1[0]),
  (VTBL_ENTRY)&_ZN10S6889C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S6889C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S6889C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S6889C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S6889C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6889C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6889C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6889C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6889C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6889C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S6889C1[];
extern  VTBL_ENTRY _ZTV7S6889C1[];
Class_Descriptor cd_S6889C1 = {  "S6889C1", // class name
  bases_S6889C1, 1,
  &(vtc_S6889C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,100), // object size
  NSPAIRA(_ZTI7S6889C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6889C1),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  S15647C8_nt  {
  unsigned int s15647c8f0:1;
  int s15647c8f1:3;
};
//SIG(-1 S15647C8_nt) C1{ Fi:1 Fi:3}



//skip512 S15647C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15647C1  {
  ::S5594C2 s15647c1f0;
  ::S15340C3 s15647c1f1;
  ::S15647C8_nt s15647c1f2;
  ::S9141C28_nt s15647c1f3;
  int s15647c1f4;
  void  mf15647c1(); // _ZN8S15647C19mf15647c1Ev
};
//SIG(1 S15647C1) C1{ m FC2{ m FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}}} FC7{ BC6} FC8{ Fi:1 Fi:3} FC5 Fi}


void  S15647C1 ::mf15647c1(){}

static void Test_S15647C1()
{
  {
    init_simple_test("S15647C1");
    static S15647C1 lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S15647C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15647C1)");
    check_field_offset(lv, s15647c1f0, 0, "S15647C1.s15647c1f0");
    check_field_offset(lv, s15647c1f1, ABISELECT(32,20), "S15647C1.s15647c1f1");
    check_field_offset(lv, s15647c1f2, ABISELECT(48,32), "S15647C1.s15647c1f2");
    check_field_offset(lv, s15647c1f3, ABISELECT(56,36), "S15647C1.s15647c1f3");
    check_field_offset(lv, s15647c1f4, ABISELECT(72,48), "S15647C1.s15647c1f4");
  }
}
static Arrange_To_Call_Me vS15647C1(Test_S15647C1, "S15647C1", ABISELECT(80,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15925C3_nt  : S21605C2_nt {
};
//SIG(-1 S15925C3_nt) C1{ BC2{ m Fp Fi}}



//skip512 S15925C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S21605C2_nt;
static Base_Class bases_S15925C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21605C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15925C2_nt  {
  int s15925c2f0;
  ::S15925C3_nt s15925c2f1;
  void  mf15925c2(); // _ZN11S15925C2_nt9mf15925c2Ev
};
//SIG(-1 S15925C2_nt) C1{ m Fi FC2{ BC3{ m Fp Fi}}}


void  S15925C2_nt ::mf15925c2(){}

//skip512 S15925C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15925C1  {
  ::S15925C2_nt s15925c1f0;
  ::S15925C2_nt s15925c1f1;
  char s15925c1f2;
  ::S4227C40_nt s15925c1f3;
  void  mf15925c1(); // _ZN8S15925C19mf15925c1Ev
};
//SIG(1 S15925C1) C1{ m FC2{ m Fi FC3{ BC4{ m Fp Fi}}} FC2 Fc FC5{ m FC6{ FL[4]}}}


void  S15925C1 ::mf15925c1(){}

static void Test_S15925C1()
{
  {
    init_simple_test("S15925C1");
    S15925C1 lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S15925C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15925C1)");
    check_field_offset(lv, s15925c1f0, 0, "S15925C1.s15925c1f0");
    check_field_offset(lv, s15925c1f1, ABISELECT(24,12), "S15925C1.s15925c1f1");
    check_field_offset(lv, s15925c1f2, ABISELECT(48,24), "S15925C1.s15925c1f2");
    check_field_offset(lv, s15925c1f3, ABISELECT(56,28), "S15925C1.s15925c1f3");
  }
}
static Arrange_To_Call_Me vS15925C1(Test_S15925C1, "S15925C1", ABISELECT(88,60));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18118C1  {
  void *s18118c1f0[2];
  int s18118c1f1[6];
  ::S9141C26 s18118c1f2;
  ::S9141C20_nt s18118c1f3;
  void  mf18118c1(); // _ZN8S18118C19mf18118c1Ev
};
//SIG(1 S18118C1) C1{ m Fp[2] Fi[6] FC2{ BC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp Fi}} FC6{ BC7{ m FC8{ BC5} Fp Fi}}}


void  S18118C1 ::mf18118c1(){}

static void Test_S18118C1()
{
  {
    init_simple_test("S18118C1");
    S18118C1 lv;
    check2(sizeof(lv), ABISELECT(104,72), "sizeof(S18118C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18118C1)");
    check_field_offset(lv, s18118c1f0, 0, "S18118C1.s18118c1f0");
    check_field_offset(lv, s18118c1f1, ABISELECT(16,8), "S18118C1.s18118c1f1");
    check_field_offset(lv, s18118c1f2, ABISELECT(40,32), "S18118C1.s18118c1f2");
    check_field_offset(lv, s18118c1f3, ABISELECT(72,52), "S18118C1.s18118c1f3");
  }
}
static Arrange_To_Call_Me vS18118C1(Test_S18118C1, "S18118C1", ABISELECT(104,72));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17077C1  {
  int s17077c1f0[2];
  ::S9141C26 s17077c1f1;
  ::S15340C3 s17077c1f2;
  int s17077c1f3[7];
  char s17077c1f4;
  ::S15340C2 s17077c1f5;
  void  mf17077c1(); // _ZN8S17077C19mf17077c1Ev
};
//SIG(1 S17077C1) C1{ m Fi[2] FC2{ BC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp Fi}} FC6{ BC5} Fi[7] Fc FC7{ BC6}}


void  S17077C1 ::mf17077c1(){}

static void Test_S17077C1()
{
  {
    init_simple_test("S17077C1");
    S17077C1 lv;
    check2(sizeof(lv), ABISELECT(104,84), "sizeof(S17077C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17077C1)");
    check_field_offset(lv, s17077c1f0, 0, "S17077C1.s17077c1f0");
    check_field_offset(lv, s17077c1f1, 8, "S17077C1.s17077c1f1");
    check_field_offset(lv, s17077c1f2, ABISELECT(40,28), "S17077C1.s17077c1f2");
    check_field_offset(lv, s17077c1f3, ABISELECT(56,40), "S17077C1.s17077c1f3");
    check_field_offset(lv, s17077c1f4, ABISELECT(84,68), "S17077C1.s17077c1f4");
    check_field_offset(lv, s17077c1f5, ABISELECT(88,72), "S17077C1.s17077c1f5");
  }
}
static Arrange_To_Call_Me vS17077C1(Test_S17077C1, "S17077C1", ABISELECT(104,84));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21469C1  {
  ::S4227C19_nt s21469c1f0;
  ::S4227C19_nt s21469c1f1;
  ::S4227C45 s21469c1f2;
  ::S4227C36 s21469c1f3;
  void  mf21469c1(); // _ZN8S21469C19mf21469c1Ev
  virtual  ~S21469C1(); // _ZN8S21469C1D1Ev
  S21469C1(); // tgen
};
//SIG(1 S21469C1) C1{ vd m FC2{ m Fp Fi FC3{ m}} FC2 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m Fp Fi[2] FC5}}


void  S21469C1 ::mf21469c1(){}
 S21469C1 ::~S21469C1(){ note_dtor("S21469C1", this);}
S21469C1 ::S21469C1(){ note_ctor("S21469C1", this);} // tgen

static void Test_S21469C1()
{
  extern Class_Descriptor cd_S21469C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,16)];
    init_test(&cd_S21469C1, buf);
    S21469C1 *dp, &lv = *(dp=new (buf) S21469C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,60), "sizeof(S21469C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21469C1)");
    check_field_offset(lv, s21469c1f0, ABISELECT(8,4), "S21469C1.s21469c1f0");
    check_field_offset(lv, s21469c1f1, ABISELECT(24,16), "S21469C1.s21469c1f1");
    check_field_offset(lv, s21469c1f2, ABISELECT(40,28), "S21469C1.s21469c1f2");
    check_field_offset(lv, s21469c1f3, ABISELECT(64,44), "S21469C1.s21469c1f3");
    test_class_info(&lv, &cd_S21469C1);
    dp->~S21469C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21469C1(Test_S21469C1, "S21469C1", ABISELECT(88,60));

#else // __cplusplus

extern void _ZN8S21469C1C1Ev();
extern void _ZN8S21469C1D1Ev();
Name_Map name_map_S21469C1[] = {
  NSPAIR(_ZN8S21469C1C1Ev),
  NSPAIR(_ZN8S21469C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21469C1[];
extern void _ZN8S21469C1D1Ev();
extern void _ZN8S21469C1D0Ev();
static  VTBL_ENTRY vtc_S21469C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21469C1[0]),
  (VTBL_ENTRY)&_ZN8S21469C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21469C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21469C1[];
extern  VTBL_ENTRY _ZTV8S21469C1[];
Class_Descriptor cd_S21469C1 = {  "S21469C1", // class name
  0,0,//no base classes
  &(vtc_S21469C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,60), // object size
  NSPAIRA(_ZTI8S21469C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21469C1),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  S17996C1  {
  void *s17996c1f0[2];
  ::S3214C4_nt s17996c1f1;
  __tsi64 s17996c1f2[2];
  void *s17996c1f3;
  int s17996c1f4;
  ::S9141C26 s17996c1f5;
  void *s17996c1f6;
  void  mf17996c1(); // _ZN8S17996C19mf17996c1Ev
};
//SIG(1 S17996C1) C1{ m Fp[2] FC2{ m Fi[2]} FL[2] Fp Fi FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}} Fp}


void  S17996C1 ::mf17996c1(){}

static void Test_S17996C1()
{
  {
    init_simple_test("S17996C1");
    S17996C1 lv;
    check2(sizeof(lv), ABISELECT(96,64), "sizeof(S17996C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17996C1)");
    check_field_offset(lv, s17996c1f0, 0, "S17996C1.s17996c1f0");
    check_field_offset(lv, s17996c1f1, ABISELECT(16,8), "S17996C1.s17996c1f1");
    check_field_offset(lv, s17996c1f2, ABISELECT(24,16), "S17996C1.s17996c1f2");
    check_field_offset(lv, s17996c1f3, ABISELECT(40,32), "S17996C1.s17996c1f3");
    check_field_offset(lv, s17996c1f4, ABISELECT(48,36), "S17996C1.s17996c1f4");
    check_field_offset(lv, s17996c1f5, ABISELECT(56,40), "S17996C1.s17996c1f5");
    check_field_offset(lv, s17996c1f6, ABISELECT(88,60), "S17996C1.s17996c1f6");
  }
}
static Arrange_To_Call_Me vS17996C1(Test_S17996C1, "S17996C1", ABISELECT(96,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S11072C1  {
  ::S9141C26 s11072c1f0;
  ::S9141C20_nt s11072c1f1;
  ::S15340C3 s11072c1f2;
};
//SIG(1 S11072C1) C1{ FC2{ BC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp Fi}} FC6{ BC7{ m FC8{ BC5} Fp Fi}} FC9{ BC5}}



static void Test_S11072C1()
{
  {
    init_simple_test("S11072C1");
    S11072C1 lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S11072C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11072C1)");
    check_field_offset(lv, s11072c1f0, 0, "S11072C1.s11072c1f0");
    check_field_offset(lv, s11072c1f1, ABISELECT(32,20), "S11072C1.s11072c1f1");
    check_field_offset(lv, s11072c1f2, ABISELECT(64,40), "S11072C1.s11072c1f2");
  }
}
static Arrange_To_Call_Me vS11072C1(Test_S11072C1, "S11072C1", ABISELECT(80,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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


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

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

#else // __cplusplus

extern void _ZN8S19173C4C1Ev();
extern void _ZN8S19173C4D1Ev();
Name_Map name_map_S19173C4[] = {
  NSPAIR(_ZN8S19173C4C1Ev),
  NSPAIR(_ZN8S19173C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19173C4[];
extern void _ZN8S19173C42v1Ev();
static  VTBL_ENTRY vtc_S19173C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19173C4[0]),
  (VTBL_ENTRY)&_ZN8S19173C42v1Ev,
};
extern VTBL_ENTRY _ZTI8S19173C4[];
extern  VTBL_ENTRY _ZTV8S19173C4[];
Class_Descriptor cd_S19173C4 = {  "S19173C4", // class name
  0,0,//no base classes
  &(vtc_S19173C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19173C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19173C4),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  S19173C2  : S20997C6 , S19173C4 {
  ~S19173C2(); // tgen
  S19173C2(); // tgen
};
//SIG(-1 S19173C2) C1{ BC2{ m FL[5]} BC3{ v1}}


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

static void Test_S19173C2()
{
  extern Class_Descriptor cd_S19173C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19173C2, buf);
    S19173C2 *dp, &lv = *(dp=new (buf) S19173C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19173C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19173C2)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S19173C2");
    check_base_class_offset(lv, (S19173C4*), 0, "S19173C2");
    test_class_info(&lv, &cd_S19173C2);
    dp->~S19173C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19173C2(Test_S19173C2, "S19173C2", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S19173C2C1Ev();
extern void _ZN8S19173C2D1Ev();
Name_Map name_map_S19173C2[] = {
  NSPAIR(_ZN8S19173C2C1Ev),
  NSPAIR(_ZN8S19173C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19173C4;
extern VTBL_ENTRY _ZTI8S19173C4[];
extern  VTBL_ENTRY _ZTV8S19173C4[];
static Base_Class bases_S19173C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19173C4,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19173C2[];
extern void _ZN8S19173C42v1Ev();
static  VTBL_ENTRY vtc_S19173C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19173C2[0]),
  (VTBL_ENTRY)&_ZN8S19173C42v1Ev,
};
extern VTBL_ENTRY _ZTI8S19173C2[];
extern  VTBL_ENTRY _ZTV8S19173C2[];
Class_Descriptor cd_S19173C2 = {  "S19173C2", // class name
  bases_S19173C2, 2,
  &(vtc_S19173C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S19173C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19173C2),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19173C6  : virtual S20997C6 , virtual S19173C4 , S4227C37 {
  virtual  ~S19173C6(); // _ZN8S19173C6D2Ev
  S19173C6(); // tgen
};
//SIG(-1 S19173C6) C1{ VBC2{ m FL[5]} VBC3{ v1} BC4{ m} vd}


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

static void Test_S19173C6()
{
  extern Class_Descriptor cd_S19173C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19173C6, buf);
    S19173C6 *dp, &lv = *(dp=new (buf) S19173C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19173C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19173C6)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S19173C6");
    check_base_class_offset(lv, (S19173C4*), 0, "S19173C6");
    check_base_class_offset(lv, (S4227C37*), 0, "S19173C6");
    test_class_info(&lv, &cd_S19173C6);
    dp->~S19173C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19173C6(Test_S19173C6, "S19173C6", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S19173C6C1Ev();
extern void _ZN8S19173C6D2Ev();
Name_Map name_map_S19173C6[] = {
  NSPAIR(_ZN8S19173C6C1Ev),
  NSPAIR(_ZN8S19173C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19173C4;
extern VTBL_ENTRY _ZTI8S19173C4[];
extern  VTBL_ENTRY _ZTV8S19173C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
static Base_Class bases_S19173C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19173C4,    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_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19173C6[];
extern void _ZN8S19173C42v1Ev();
extern void _ZN8S19173C6D1Ev();
extern void _ZN8S19173C6D0Ev();
static  VTBL_ENTRY vtc_S19173C6[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19173C6[0]),
  (VTBL_ENTRY)&_ZN8S19173C42v1Ev,
  (VTBL_ENTRY)&_ZN8S19173C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19173C6D0Ev,
};
extern VTBL_ENTRY _ZTV8S19173C6[];
static  VTT_ENTRY vtt_S19173C6[] = {
  {&(_ZTV8S19173C6[5]),  5,8},
  {&(_ZTV8S19173C6[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19173C6[];
extern  VTBL_ENTRY _ZTV8S19173C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19173C6[];
Class_Descriptor cd_S19173C6 = {  "S19173C6", // class name
  bases_S19173C6, 3,
  &(vtc_S19173C6[0]), // expected_vtbl_contents
  &(vtt_S19173C6[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S19173C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19173C6),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19173C6),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  S19173C5  : S19173C6 {
  virtual  ~S19173C5(); // _ZN8S19173C5D2Ev
  S19173C5(); // tgen
};
//SIG(-1 S19173C5) C1{ BC2{ VBC3{ m FL[5]} VBC4{ v1} BC5{ m} vd} vd}


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

static void Test_S19173C5()
{
  extern Class_Descriptor cd_S19173C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19173C5, buf);
    S19173C5 *dp, &lv = *(dp=new (buf) S19173C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19173C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19173C5)");
    check_base_class_offset(lv, (S20997C6*)(S19173C6*), ABISELECT(8,4), "S19173C5");
    check_base_class_offset(lv, (S19173C4*)(S19173C6*), 0, "S19173C5");
    check_base_class_offset(lv, (S4227C37*)(S19173C6*), 0, "S19173C5");
    check_base_class_offset(lv, (S19173C6*), 0, "S19173C5");
    test_class_info(&lv, &cd_S19173C5);
    dp->~S19173C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19173C5(Test_S19173C5, "S19173C5", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S19173C5C1Ev();
extern void _ZN8S19173C5D2Ev();
Name_Map name_map_S19173C5[] = {
  NSPAIR(_ZN8S19173C5C1Ev),
  NSPAIR(_ZN8S19173C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19173C4;
extern VTBL_ENTRY _ZTI8S19173C4[];
extern  VTBL_ENTRY _ZTV8S19173C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19173C6;
extern VTBL_ENTRY _ZTI8S19173C6[];
extern  VTBL_ENTRY _ZTV8S19173C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19173C6[];
static Base_Class bases_S19173C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19173C4,    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
    3, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19173C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19173C5[];
extern void _ZN8S19173C42v1Ev();
extern void _ZN8S19173C5D1Ev();
extern void _ZN8S19173C5D0Ev();
static  VTBL_ENTRY vtc_S19173C5[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19173C5[0]),
  (VTBL_ENTRY)&_ZN8S19173C42v1Ev,
  (VTBL_ENTRY)&_ZN8S19173C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19173C5D0Ev,
};
extern VTBL_ENTRY _ZTV8S19173C5[];
extern void _ZN8S19173C42v1Ev();
extern void _ZN8S19173C6D1Ev();
extern void _ZN8S19173C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19173C6__8S19173C5[] = {
  0,
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19173C6[0]),
  (VTBL_ENTRY)&_ZN8S19173C42v1Ev,
  (VTBL_ENTRY)&_ZN8S19173C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19173C6D0Ev,
};
static  VTT_ENTRY vtt_S19173C5[] = {
  {&(_ZTV8S19173C5[5]),  5,8},
  {&(_tg__ZTV8S19173C6__8S19173C5[5]),  5,8},
  {&(_tg__ZTV8S19173C6__8S19173C5[5]),  5,8},
  {&(_ZTV8S19173C5[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19173C5[];
extern  VTBL_ENTRY _ZTV8S19173C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19173C5[];
Class_Descriptor cd_S19173C5 = {  "S19173C5", // class name
  bases_S19173C5, 4,
  &(vtc_S19173C5[0]), // expected_vtbl_contents
  &(vtt_S19173C5[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S19173C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19173C5),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19173C5),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  S19173C1  : virtual S19173C2 , S19173C5 , virtual S10258C6_nt {
  int s19173c1f0;
  ~S19173C1(); // tgen
  S19173C1(); // tgen
};
//SIG(1 S19173C1) C1{ VBC2{ BC3{ m FL[5]} BC4{ v1}} BC5{ BC6{ VBC3 VBC4 BC7{ m} vd} vd} VBC8{ m FL[4]} Fi}


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

static void Test_S19173C1()
{
  extern Class_Descriptor cd_S19173C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,32)];
    init_test(&cd_S19173C1, buf);
    S19173C1 *dp, &lv = *(dp=new (buf) S19173C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,124), "sizeof(S19173C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19173C1)");
    check_base_class_offset(lv, (S20997C6*)(S19173C2*), ABISELECT(24,12), "S19173C1");
    check_base_class_offset(lv, (S19173C4*)(S19173C2*), ABISELECT(16,8), "S19173C1");
    check_base_class_offset(lv, (S19173C2*), ABISELECT(16,8), "S19173C1");
    check_base_class_offset(lv, (S20997C6*)(S19173C6*)(S19173C5*), ABISELECT(64,52), "S19173C1");
    check_base_class_offset(lv, (S19173C4*)(S19173C6*)(S19173C5*), 0, "S19173C1");
    check_base_class_offset(lv, (S4227C37*)(S19173C6*)(S19173C5*), 0, "S19173C1");
    check_base_class_offset(lv, (S19173C6*)(S19173C5*), 0, "S19173C1");
    check_base_class_offset(lv, (S19173C5*), 0, "S19173C1");
    check_base_class_offset(lv, (S10258C6_nt*), ABISELECT(104,92), "S19173C1");
    check_field_offset(lv, s19173c1f0, ABISELECT(8,4), "S19173C1.s19173c1f0");
    test_class_info(&lv, &cd_S19173C1);
    dp->~S19173C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19173C1(Test_S19173C1, "S19173C1", ABISELECT(136,124));

#else // __cplusplus

extern void _ZN8S19173C1C1Ev();
extern void _ZN8S19173C1D1Ev();
Name_Map name_map_S19173C1[] = {
  NSPAIR(_ZN8S19173C1C1Ev),
  NSPAIR(_ZN8S19173C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19173C4;
extern VTBL_ENTRY _ZTI8S19173C4[];
extern  VTBL_ENTRY _ZTV8S19173C4[];
extern Class_Descriptor cd_S19173C2;
extern VTBL_ENTRY _ZTI8S19173C2[];
extern  VTBL_ENTRY _ZTV8S19173C2[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S19173C4;
extern VTBL_ENTRY _ZTI8S19173C4[];
extern  VTBL_ENTRY _ZTV8S19173C4[];
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S19173C6;
extern VTBL_ENTRY _ZTI8S19173C6[];
extern  VTBL_ENTRY _ZTV8S19173C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19173C6[];
extern Class_Descriptor cd_S19173C5;
extern VTBL_ENTRY _ZTI8S19173C5[];
extern  VTBL_ENTRY _ZTV8S19173C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19173C5[];
extern Class_Descriptor cd_S10258C6_nt;
extern VTBL_ENTRY _ZTI11S10258C6_nt[];
static Base_Class bases_S19173C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    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, 0},
  {&cd_S19173C4,    ABISELECT(16,8), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19173C2,    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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20997C6,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19173C4,    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
    3, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19173C6,    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
    7, //immediately_derived
  0, 0},
  {&cd_S19173C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10258C6_nt,    ABISELECT(104,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19173C1[];
extern void _ZN8S19173C42v1Ev();
extern void _ZN8S19173C1D1Ev();
extern void _ZN8S19173C1D0Ev();
extern void _ZN8S19173C42v1Ev();
static  VTBL_ENTRY vtc_S19173C1[] = {
  ABISELECT(104,92),
  ABISELECT(16,8),
  0,
  ABISELECT(64,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19173C1[0]),
  (VTBL_ENTRY)&_ZN8S19173C42v1Ev,
  (VTBL_ENTRY)&_ZN8S19173C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19173C1D0Ev,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19173C1[0]),
  (VTBL_ENTRY)&_ZN8S19173C42v1Ev,
};
extern VTBL_ENTRY _ZTV8S19173C1[];
extern void _ZN8S19173C42v1Ev();
extern void _ZN8S19173C5D1Ev();
extern void _ZN8S19173C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19173C5__8S19173C1[] = {
  0,
  ABISELECT(64,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19173C5[0]),
  (VTBL_ENTRY)&_ZN8S19173C42v1Ev,
  (VTBL_ENTRY)&_ZN8S19173C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19173C5D0Ev,
};
extern void _ZN8S19173C42v1Ev();
extern void _ZN8S19173C6D1Ev();
extern void _ZN8S19173C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19173C68S19173C5__8S19173C1[] = {
  0,
  ABISELECT(64,52),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19173C6[0]),
  (VTBL_ENTRY)&_ZN8S19173C42v1Ev,
  (VTBL_ENTRY)&_ZN8S19173C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19173C6D0Ev,
};
static  VTT_ENTRY vtt_S19173C1[] = {
  {&(_ZTV8S19173C1[7]),  7,14},
  {&(_tg__ZTV8S19173C5__8S19173C1[5]),  5,8},
  {&(_tg__ZTV8S19173C68S19173C5__8S19173C1[5]),  5,8},
  {&(_tg__ZTV8S19173C68S19173C5__8S19173C1[5]),  5,8},
  {&(_tg__ZTV8S19173C5__8S19173C1[5]),  5,8},
  {&(_ZTV8S19173C1[13]),  13,14},
  {&(_ZTV8S19173C1[7]),  7,14},
};
extern VTBL_ENTRY _ZTI8S19173C1[];
extern  VTBL_ENTRY _ZTV8S19173C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19173C1[];
Class_Descriptor cd_S19173C1 = {  "S19173C1", // class name
  bases_S19173C1, 9,
  &(vtc_S19173C1[0]), // expected_vtbl_contents
  &(vtt_S19173C1[0]), // expected_vtt_contents
  ABISELECT(136,124), // object size
  NSPAIRA(_ZTI8S19173C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19173C1),14, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19173C1),7, //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  S9672C2  {
  ::S4227C19_nt s9672c2f0;
  int s9672c2f1[2];
  char s9672c2f2;
  virtual  ~S9672C2(); // _ZN7S9672C2D1Ev
  virtual void  v4(); // _ZN7S9672C22v4Ev
  virtual void  v5(); // _ZN7S9672C22v5Ev
  virtual void  v6(); // _ZN7S9672C22v6Ev
  S9672C2(); // tgen
};
//SIG(-1 S9672C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9672C2 ::~S9672C2(){ note_dtor("S9672C2", this);}
void  S9672C2 ::v4(){vfunc_called(this, "_ZN7S9672C22v4Ev");}
void  S9672C2 ::v5(){vfunc_called(this, "_ZN7S9672C22v5Ev");}
void  S9672C2 ::v6(){vfunc_called(this, "_ZN7S9672C22v6Ev");}
S9672C2 ::S9672C2(){ note_ctor("S9672C2", this);} // tgen

static void Test_S9672C2()
{
  extern Class_Descriptor cd_S9672C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9672C2, buf);
    S9672C2 *dp, &lv = *(dp=new (buf) S9672C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9672C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9672C2)");
    check_field_offset(lv, s9672c2f0, ABISELECT(8,4), "S9672C2.s9672c2f0");
    check_field_offset(lv, s9672c2f1, ABISELECT(24,16), "S9672C2.s9672c2f1");
    check_field_offset(lv, s9672c2f2, ABISELECT(32,24), "S9672C2.s9672c2f2");
    test_class_info(&lv, &cd_S9672C2);
    dp->~S9672C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9672C2(Test_S9672C2, "S9672C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9672C2C1Ev();
extern void _ZN7S9672C2D1Ev();
Name_Map name_map_S9672C2[] = {
  NSPAIR(_ZN7S9672C2C1Ev),
  NSPAIR(_ZN7S9672C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9672C2[];
extern void _ZN7S9672C2D1Ev();
extern void _ZN7S9672C2D0Ev();
extern void _ZN7S9672C22v4Ev();
extern void _ZN7S9672C22v5Ev();
extern void _ZN7S9672C22v6Ev();
static  VTBL_ENTRY vtc_S9672C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9672C2[0]),
  (VTBL_ENTRY)&_ZN7S9672C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9672C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9672C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9672C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9672C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9672C2[];
extern  VTBL_ENTRY _ZTV7S9672C2[];
Class_Descriptor cd_S9672C2 = {  "S9672C2", // class name
  0,0,//no base classes
  &(vtc_S9672C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9672C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9672C2),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  S9672C1  : S9672C2 {
  int s9672c1f0;
  void *s9672c1f1;
  char s9672c1f2;
  void *s9672c1f3;
  virtual  ~S9672C1(); // _ZN7S9672C1D1Ev
  virtual void  v1(); // _ZN7S9672C12v1Ev
  virtual void  v2(); // _ZN7S9672C12v2Ev
  virtual void  v3(); // _ZN7S9672C12v3Ev
  S9672C1(); // tgen
};
//SIG(1 S9672C1) C1{ BC2{ vd v4 v5 v6 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 Fi Fp Fc Fp}


 S9672C1 ::~S9672C1(){ note_dtor("S9672C1", this);}
void  S9672C1 ::v1(){vfunc_called(this, "_ZN7S9672C12v1Ev");}
void  S9672C1 ::v2(){vfunc_called(this, "_ZN7S9672C12v2Ev");}
void  S9672C1 ::v3(){vfunc_called(this, "_ZN7S9672C12v3Ev");}
S9672C1 ::S9672C1(){ note_ctor("S9672C1", this);} // tgen

static void Test_S9672C1()
{
  extern Class_Descriptor cd_S9672C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S9672C1, buf);
    S9672C1 *dp, &lv = *(dp=new (buf) S9672C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S9672C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9672C1)");
    check_base_class_offset(lv, (S9672C2*), 0, "S9672C1");
    check_field_offset(lv, s9672c1f0, ABISELECT(36,28), "S9672C1.s9672c1f0");
    check_field_offset(lv, s9672c1f1, ABISELECT(40,32), "S9672C1.s9672c1f1");
    check_field_offset(lv, s9672c1f2, ABISELECT(48,36), "S9672C1.s9672c1f2");
    check_field_offset(lv, s9672c1f3, ABISELECT(56,40), "S9672C1.s9672c1f3");
    test_class_info(&lv, &cd_S9672C1);
    dp->~S9672C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9672C1(Test_S9672C1, "S9672C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S9672C1C1Ev();
extern void _ZN7S9672C1D1Ev();
Name_Map name_map_S9672C1[] = {
  NSPAIR(_ZN7S9672C1C1Ev),
  NSPAIR(_ZN7S9672C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9672C2;
extern VTBL_ENTRY _ZTI7S9672C2[];
extern  VTBL_ENTRY _ZTV7S9672C2[];
static Base_Class bases_S9672C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9672C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9672C1[];
extern void _ZN7S9672C1D1Ev();
extern void _ZN7S9672C1D0Ev();
extern void _ZN7S9672C22v4Ev();
extern void _ZN7S9672C22v5Ev();
extern void _ZN7S9672C22v6Ev();
extern void _ZN7S9672C12v1Ev();
extern void _ZN7S9672C12v2Ev();
extern void _ZN7S9672C12v3Ev();
static  VTBL_ENTRY vtc_S9672C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9672C1[0]),
  (VTBL_ENTRY)&_ZN7S9672C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9672C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9672C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9672C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9672C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9672C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9672C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9672C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9672C1[];
extern  VTBL_ENTRY _ZTV7S9672C1[];
Class_Descriptor cd_S9672C1 = {  "S9672C1", // class name
  bases_S9672C1, 1,
  &(vtc_S9672C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S9672C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9672C1),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  S15445C1  {
  ::S15340C3 s15445c1f0;
  int s15445c1f1;
  void *s15445c1f2;
  int s15445c1f3;
  void *s15445c1f4;
  ::S9141C28_nt s15445c1f5;
  ::S9141C26 s15445c1f6;
  void  mf15445c1(); // _ZN8S15445C19mf15445c1Ev
};
//SIG(1 S15445C1) C1{ m FC2{ BC3{ m Fp Fi[2]}} Fi Fp Fi Fp FC4{ BC3} FC5{ BC6{ m FC4 Fp Fi}}}


void  S15445C1 ::mf15445c1(){}

static void Test_S15445C1()
{
  {
    init_simple_test("S15445C1");
    S15445C1 lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S15445C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15445C1)");
    check_field_offset(lv, s15445c1f0, 0, "S15445C1.s15445c1f0");
    check_field_offset(lv, s15445c1f1, ABISELECT(16,12), "S15445C1.s15445c1f1");
    check_field_offset(lv, s15445c1f2, ABISELECT(24,16), "S15445C1.s15445c1f2");
    check_field_offset(lv, s15445c1f3, ABISELECT(32,20), "S15445C1.s15445c1f3");
    check_field_offset(lv, s15445c1f4, ABISELECT(40,24), "S15445C1.s15445c1f4");
    check_field_offset(lv, s15445c1f5, ABISELECT(48,28), "S15445C1.s15445c1f5");
    check_field_offset(lv, s15445c1f6, ABISELECT(64,40), "S15445C1.s15445c1f6");
  }
}
static Arrange_To_Call_Me vS15445C1(Test_S15445C1, "S15445C1", ABISELECT(96,60));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7621C3_nt  {
  virtual  ~S7621C3_nt(); // _ZN10S7621C3_ntD1Ev
  virtual void  v5(); // _ZN10S7621C3_nt2v5Ev
  virtual void  v6(); // _ZN10S7621C3_nt2v6Ev
  virtual void  v7(); // _ZN10S7621C3_nt2v7Ev
  virtual void  v8(); // _ZN10S7621C3_nt2v8Ev
  S7621C3_nt(); // tgen
};
//SIG(-1 S7621C3_nt) C1{ vd v1 v2 v3 v4}


 S7621C3_nt ::~S7621C3_nt(){ note_dtor("S7621C3_nt", this);}
void  S7621C3_nt ::v5(){vfunc_called(this, "_ZN10S7621C3_nt2v5Ev");}
void  S7621C3_nt ::v6(){vfunc_called(this, "_ZN10S7621C3_nt2v6Ev");}
void  S7621C3_nt ::v7(){vfunc_called(this, "_ZN10S7621C3_nt2v7Ev");}
void  S7621C3_nt ::v8(){vfunc_called(this, "_ZN10S7621C3_nt2v8Ev");}
S7621C3_nt ::S7621C3_nt(){ note_ctor("S7621C3_nt", this);} // tgen

//skip512 S7621C3_nt

#else // __cplusplus

extern void _ZN10S7621C3_ntC1Ev();
extern void _ZN10S7621C3_ntD1Ev();
Name_Map name_map_S7621C3_nt[] = {
  NSPAIR(_ZN10S7621C3_ntC1Ev),
  NSPAIR(_ZN10S7621C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7621C3_nt[];
extern void _ZN10S7621C3_ntD1Ev();
extern void _ZN10S7621C3_ntD0Ev();
extern void _ZN10S7621C3_nt2v5Ev();
extern void _ZN10S7621C3_nt2v6Ev();
extern void _ZN10S7621C3_nt2v7Ev();
extern void _ZN10S7621C3_nt2v8Ev();
static  VTBL_ENTRY vtc_S7621C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7621C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S7621C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S7621C3_nt[];
VTBL_ENTRY *P__ZTI10S7621C3_nt = _ZTI10S7621C3_nt; 
extern  VTBL_ENTRY _ZTV10S7621C3_nt[];
Class_Descriptor cd_S7621C3_nt = {  "S7621C3_nt", // class name
  0,0,//no base classes
  &(vtc_S7621C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7621C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7621C3_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  S7621C2  : virtual S7621C3_nt {
  void *s7621c2f0;
  ::S7621C3_nt s7621c2f1;
  int s7621c2f2[2];
  virtual  ~S7621C2(); // _ZN7S7621C2D2Ev
  virtual void  v9(); // _ZN7S7621C22v9Ev
  virtual void  v10(); // _ZN7S7621C23v10Ev
  virtual void  v11(); // _ZN7S7621C23v11Ev
  S7621C2(); // tgen
};
//SIG(-1 S7621C2) C1{ VBC2{ vd v4 v5 v6 v7} vd v1 v2 v3 Fp FC2 Fi[2]}


 S7621C2 ::~S7621C2(){ note_dtor("S7621C2", this);}
void  S7621C2 ::v9(){vfunc_called(this, "_ZN7S7621C22v9Ev");}
void  S7621C2 ::v10(){vfunc_called(this, "_ZN7S7621C23v10Ev");}
void  S7621C2 ::v11(){vfunc_called(this, "_ZN7S7621C23v11Ev");}
S7621C2 ::S7621C2(){ note_ctor("S7621C2", this);} // tgen

static void Test_S7621C2()
{
  extern Class_Descriptor cd_S7621C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7621C2, buf);
    S7621C2 *dp, &lv = *(dp=new (buf) S7621C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7621C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7621C2)");
    check_base_class_offset(lv, (S7621C3_nt*), 0, "S7621C2");
    check_field_offset(lv, s7621c2f0, ABISELECT(8,4), "S7621C2.s7621c2f0");
    check_field_offset(lv, s7621c2f1, ABISELECT(16,8), "S7621C2.s7621c2f1");
    check_field_offset(lv, s7621c2f2, ABISELECT(24,12), "S7621C2.s7621c2f2");
    test_class_info(&lv, &cd_S7621C2);
    dp->~S7621C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7621C2(Test_S7621C2, "S7621C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7621C2C1Ev();
extern void _ZN7S7621C2D2Ev();
Name_Map name_map_S7621C2[] = {
  NSPAIR(_ZN7S7621C2C1Ev),
  NSPAIR(_ZN7S7621C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7621C3_nt;
extern VTBL_ENTRY _ZTI10S7621C3_nt[];
extern  VTBL_ENTRY _ZTV10S7621C3_nt[];
static Base_Class bases_S7621C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7621C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7621C2[];
extern void _ZN7S7621C2D1Ev();
extern void _ZN7S7621C2D0Ev();
extern void _ZN10S7621C3_nt2v5Ev();
extern void _ZN10S7621C3_nt2v6Ev();
extern void _ZN10S7621C3_nt2v7Ev();
extern void _ZN10S7621C3_nt2v8Ev();
extern void _ZN7S7621C22v9Ev();
extern void _ZN7S7621C23v10Ev();
extern void _ZN7S7621C23v11Ev();
static  VTBL_ENTRY vtc_S7621C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7621C2[0]),
  (VTBL_ENTRY)&_ZN7S7621C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7621C2D0Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7621C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7621C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7621C23v11Ev,
};
extern VTBL_ENTRY _ZTV7S7621C2[];
static  VTT_ENTRY vtt_S7621C2[] = {
  {&(_ZTV7S7621C2[8]),  8,17},
  {&(_ZTV7S7621C2[8]),  8,17},
};
extern VTBL_ENTRY _ZTI7S7621C2[];
extern  VTBL_ENTRY _ZTV7S7621C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7621C2[];
Class_Descriptor cd_S7621C2 = {  "S7621C2", // class name
  bases_S7621C2, 1,
  &(vtc_S7621C2[0]), // expected_vtbl_contents
  &(vtt_S7621C2[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7621C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7621C2),17, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7621C2),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  S7621C1  : S7621C2 {
  virtual  ~S7621C1(); // _ZN7S7621C1D2Ev
  virtual void  v1(); // _ZN7S7621C12v1Ev
  virtual void  v2(); // _ZN7S7621C12v2Ev
  virtual void  v3(); // _ZN7S7621C12v3Ev
  virtual void  v4(); // _ZN7S7621C12v4Ev
  S7621C1(); // tgen
};
//SIG(1 S7621C1) C1{ BC2{ VBC3{ vd v5 v6 v7 v8} vd v9 v10 v11 Fp FC3 Fi[2]} vd v1 v2 v3 v4}


 S7621C1 ::~S7621C1(){ note_dtor("S7621C1", this);}
void  S7621C1 ::v1(){vfunc_called(this, "_ZN7S7621C12v1Ev");}
void  S7621C1 ::v2(){vfunc_called(this, "_ZN7S7621C12v2Ev");}
void  S7621C1 ::v3(){vfunc_called(this, "_ZN7S7621C12v3Ev");}
void  S7621C1 ::v4(){vfunc_called(this, "_ZN7S7621C12v4Ev");}
S7621C1 ::S7621C1(){ note_ctor("S7621C1", this);} // tgen

static void Test_S7621C1()
{
  extern Class_Descriptor cd_S7621C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7621C1, buf);
    S7621C1 *dp, &lv = *(dp=new (buf) S7621C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7621C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7621C1)");
    check_base_class_offset(lv, (S7621C3_nt*)(S7621C2*), 0, "S7621C1");
    check_base_class_offset(lv, (S7621C2*), 0, "S7621C1");
    test_class_info(&lv, &cd_S7621C1);
    dp->~S7621C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7621C1(Test_S7621C1, "S7621C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7621C1C1Ev();
extern void _ZN7S7621C1D2Ev();
Name_Map name_map_S7621C1[] = {
  NSPAIR(_ZN7S7621C1C1Ev),
  NSPAIR(_ZN7S7621C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7621C3_nt;
extern VTBL_ENTRY _ZTI10S7621C3_nt[];
extern  VTBL_ENTRY _ZTV10S7621C3_nt[];
extern Class_Descriptor cd_S7621C2;
extern VTBL_ENTRY _ZTI7S7621C2[];
extern  VTBL_ENTRY _ZTV7S7621C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7621C2[];
static Base_Class bases_S7621C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7621C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7621C2,    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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7621C1[];
extern void _ZN7S7621C1D1Ev();
extern void _ZN7S7621C1D0Ev();
extern void _ZN10S7621C3_nt2v5Ev();
extern void _ZN10S7621C3_nt2v6Ev();
extern void _ZN10S7621C3_nt2v7Ev();
extern void _ZN10S7621C3_nt2v8Ev();
extern void _ZN7S7621C22v9Ev();
extern void _ZN7S7621C23v10Ev();
extern void _ZN7S7621C23v11Ev();
extern void _ZN7S7621C12v1Ev();
extern void _ZN7S7621C12v2Ev();
extern void _ZN7S7621C12v3Ev();
extern void _ZN7S7621C12v4Ev();
static  VTBL_ENTRY vtc_S7621C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7621C1[0]),
  (VTBL_ENTRY)&_ZN7S7621C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7621C1D0Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7621C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7621C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7621C23v11Ev,
  (VTBL_ENTRY)&_ZN7S7621C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7621C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7621C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7621C12v4Ev,
};
extern VTBL_ENTRY _ZTV7S7621C1[];
extern void _ZN7S7621C2D1Ev();
extern void _ZN7S7621C2D0Ev();
extern void _ZN10S7621C3_nt2v5Ev();
extern void _ZN10S7621C3_nt2v6Ev();
extern void _ZN10S7621C3_nt2v7Ev();
extern void _ZN10S7621C3_nt2v8Ev();
extern void _ZN7S7621C22v9Ev();
extern void _ZN7S7621C23v10Ev();
extern void _ZN7S7621C23v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7621C2__7S7621C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7621C2[0]),
  (VTBL_ENTRY)&_ZN7S7621C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7621C2D0Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S7621C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S7621C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7621C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7621C23v11Ev,
};
static  VTT_ENTRY vtt_S7621C1[] = {
  {&(_ZTV7S7621C1[8]),  8,21},
  {&(_tg__ZTV7S7621C2__7S7621C1[8]),  8,17},
  {&(_tg__ZTV7S7621C2__7S7621C1[8]),  8,17},
  {&(_ZTV7S7621C1[8]),  8,21},
};
extern VTBL_ENTRY _ZTI7S7621C1[];
extern  VTBL_ENTRY _ZTV7S7621C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7621C1[];
Class_Descriptor cd_S7621C1 = {  "S7621C1", // class name
  bases_S7621C1, 2,
  &(vtc_S7621C1[0]), // expected_vtbl_contents
  &(vtt_S7621C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7621C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7621C1),21, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7621C1),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15442C1  {
  ::S15340C3 s15442c1f0;
  ::S9141C26 s15442c1f1;
  int s15442c1f2[2];
  __tsi64 s15442c1f3[2];
  void *s15442c1f4[2];
  void  mf15442c1(); // _ZN8S15442C19mf15442c1Ev
};
//SIG(1 S15442C1) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC4{ BC5{ m FC6{ BC3} Fp Fi}} Fi[2] FL[2] Fp[2]}


void  S15442C1 ::mf15442c1(){}

static void Test_S15442C1()
{
  {
    init_simple_test("S15442C1");
    S15442C1 lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S15442C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15442C1)");
    check_field_offset(lv, s15442c1f0, 0, "S15442C1.s15442c1f0");
    check_field_offset(lv, s15442c1f1, ABISELECT(16,12), "S15442C1.s15442c1f1");
    check_field_offset(lv, s15442c1f2, ABISELECT(48,32), "S15442C1.s15442c1f2");
    check_field_offset(lv, s15442c1f3, ABISELECT(56,40), "S15442C1.s15442c1f3");
    check_field_offset(lv, s15442c1f4, ABISELECT(72,56), "S15442C1.s15442c1f4");
  }
}
static Arrange_To_Call_Me vS15442C1(Test_S15442C1, "S15442C1", ABISELECT(88,64));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15393C1  {
  ::S9141C26 s15393c1f0;
  int s15393c1f1[3];
  __tsi64 s15393c1f2;
  int s15393c1f3;
  ::S15340C2 s15393c1f4;
  void  mf15393c1(); // _ZN8S15393C19mf15393c1Ev
};
//SIG(1 S15393C1) C1{ m FC2{ BC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp Fi}} Fi[3] FL Fi FC6{ BC7{ BC5}}}


void  S15393C1 ::mf15393c1(){}

static void Test_S15393C1()
{
  {
    init_simple_test("S15393C1");
    S15393C1 lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S15393C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15393C1)");
    check_field_offset(lv, s15393c1f0, 0, "S15393C1.s15393c1f0");
    check_field_offset(lv, s15393c1f1, ABISELECT(32,20), "S15393C1.s15393c1f1");
    check_field_offset(lv, s15393c1f2, ABISELECT(48,32), "S15393C1.s15393c1f2");
    check_field_offset(lv, s15393c1f3, ABISELECT(56,40), "S15393C1.s15393c1f3");
    check_field_offset(lv, s15393c1f4, ABISELECT(64,44), "S15393C1.s15393c1f4");
  }
}
static Arrange_To_Call_Me vS15393C1(Test_S15393C1, "S15393C1", ABISELECT(80,56));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6781C2_nt  {
  virtual void  v3(); // _ZN10S6781C2_nt2v3Ev
  virtual void  v4(); // _ZN10S6781C2_nt2v4Ev
  ~S6781C2_nt(); // tgen
  S6781C2_nt(); // tgen
};
//SIG(-1 S6781C2_nt) C1{ v1 v2}


void  S6781C2_nt ::v3(){vfunc_called(this, "_ZN10S6781C2_nt2v3Ev");}
void  S6781C2_nt ::v4(){vfunc_called(this, "_ZN10S6781C2_nt2v4Ev");}
S6781C2_nt ::~S6781C2_nt(){ note_dtor("S6781C2_nt", this);} // tgen
S6781C2_nt ::S6781C2_nt(){ note_ctor("S6781C2_nt", this);} // tgen

//skip512 S6781C2_nt

#else // __cplusplus

extern void _ZN10S6781C2_ntC1Ev();
extern void _ZN10S6781C2_ntD1Ev();
Name_Map name_map_S6781C2_nt[] = {
  NSPAIR(_ZN10S6781C2_ntC1Ev),
  NSPAIR(_ZN10S6781C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6781C2_nt[];
extern void _ZN10S6781C2_nt2v3Ev();
extern void _ZN10S6781C2_nt2v4Ev();
static  VTBL_ENTRY vtc_S6781C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6781C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S6781C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S6781C2_nt2v4Ev,
};
extern VTBL_ENTRY _ZTI10S6781C2_nt[];
VTBL_ENTRY *P__ZTI10S6781C2_nt = _ZTI10S6781C2_nt; 
extern  VTBL_ENTRY _ZTV10S6781C2_nt[];
Class_Descriptor cd_S6781C2_nt = {  "S6781C2_nt", // class name
  0,0,//no base classes
  &(vtc_S6781C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6781C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6781C2_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  S6781C1  : S6781C2_nt {
  int s6781c1f0[4];
  void *s6781c1f1;
  ::S9141C26 s6781c1f2;
  void *s6781c1f3;
  virtual void  v1(); // _ZN7S6781C12v1Ev
  virtual void  v2(); // _ZN7S6781C12v2Ev
  ~S6781C1(); // tgen
  S6781C1(); // tgen
};
//SIG(1 S6781C1) C1{ BC2{ v3 v4} v1 v2 Fi[4] Fp FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}} Fp}


void  S6781C1 ::v1(){vfunc_called(this, "_ZN7S6781C12v1Ev");}
void  S6781C1 ::v2(){vfunc_called(this, "_ZN7S6781C12v2Ev");}
S6781C1 ::~S6781C1(){ note_dtor("S6781C1", this);} // tgen
S6781C1 ::S6781C1(){ note_ctor("S6781C1", this);} // tgen

static void Test_S6781C1()
{
  extern Class_Descriptor cd_S6781C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,13)];
    init_test(&cd_S6781C1, buf);
    S6781C1 *dp, &lv = *(dp=new (buf) S6781C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,48), "sizeof(S6781C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6781C1)");
    check_base_class_offset(lv, (S6781C2_nt*), 0, "S6781C1");
    check_field_offset(lv, s6781c1f0, ABISELECT(8,4), "S6781C1.s6781c1f0");
    check_field_offset(lv, s6781c1f1, ABISELECT(24,20), "S6781C1.s6781c1f1");
    check_field_offset(lv, s6781c1f2, ABISELECT(32,24), "S6781C1.s6781c1f2");
    check_field_offset(lv, s6781c1f3, ABISELECT(64,44), "S6781C1.s6781c1f3");
    test_class_info(&lv, &cd_S6781C1);
    dp->~S6781C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6781C1(Test_S6781C1, "S6781C1", ABISELECT(72,48));

#else // __cplusplus

extern void _ZN7S6781C1C1Ev();
extern void _ZN7S6781C1D1Ev();
Name_Map name_map_S6781C1[] = {
  NSPAIR(_ZN7S6781C1C1Ev),
  NSPAIR(_ZN7S6781C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6781C2_nt;
extern VTBL_ENTRY _ZTI10S6781C2_nt[];
extern  VTBL_ENTRY _ZTV10S6781C2_nt[];
static Base_Class bases_S6781C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6781C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6781C1[];
extern void _ZN10S6781C2_nt2v3Ev();
extern void _ZN10S6781C2_nt2v4Ev();
extern void _ZN7S6781C12v1Ev();
extern void _ZN7S6781C12v2Ev();
static  VTBL_ENTRY vtc_S6781C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6781C1[0]),
  (VTBL_ENTRY)&_ZN10S6781C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S6781C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN7S6781C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6781C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6781C1[];
extern  VTBL_ENTRY _ZTV7S6781C1[];
Class_Descriptor cd_S6781C1 = {  "S6781C1", // class name
  bases_S6781C1, 1,
  &(vtc_S6781C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,48), // object size
  NSPAIRA(_ZTI7S6781C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6781C1),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  S15797C1  {
  ::S5594C12 s15797c1f0;
  ::S9141C8_nt s15797c1f1;
  int s15797c1f2;
  void *s15797c1f3;
  void  mf15797c1(); // _ZN8S15797C19mf15797c1Ev
};
//SIG(1 S15797C1) C1{ m FC2{ m FC3{ m Fi[4]} FC4{ BC5{ m Fp Fi[2]}} FC6{ BC5}} FC7{ m Fp} Fi Fp}


void  S15797C1 ::mf15797c1(){}

static void Test_S15797C1()
{
  {
    init_simple_test("S15797C1");
    S15797C1 lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S15797C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15797C1)");
    check_field_offset(lv, s15797c1f0, 0, "S15797C1.s15797c1f0");
    check_field_offset(lv, s15797c1f1, ABISELECT(48,40), "S15797C1.s15797c1f1");
    check_field_offset(lv, s15797c1f2, ABISELECT(56,44), "S15797C1.s15797c1f2");
    check_field_offset(lv, s15797c1f3, ABISELECT(64,48), "S15797C1.s15797c1f3");
  }
}
static Arrange_To_Call_Me vS15797C1(Test_S15797C1, "S15797C1", ABISELECT(72,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3575C3  : virtual S3577C4_nt {
  void *s3575c3f0[2];
  unsigned int s3575c3f1:1;
  virtual  ~S3575C3(); // _ZN7S3575C3D2Ev
  virtual void  v2(); // _ZN7S3575C32v2Ev
  virtual void  v3(); // _ZN7S3575C32v3Ev
  S3575C3(); // tgen
};
//SIG(-1 S3575C3) C1{ VBC2{ vd m Fi} vd v1 v2 Fp[2] Fi:1}


 S3575C3 ::~S3575C3(){ note_dtor("S3575C3", this);}
void  S3575C3 ::v2(){vfunc_called(this, "_ZN7S3575C32v2Ev");}
void  S3575C3 ::v3(){vfunc_called(this, "_ZN7S3575C32v3Ev");}
S3575C3 ::S3575C3(){ note_ctor("S3575C3", this);} // tgen

static void Test_S3575C3()
{
  extern Class_Descriptor cd_S3575C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S3575C3, buf);
    S3575C3 *dp, &lv = *(dp=new (buf) S3575C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S3575C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3575C3)");
    check_base_class_offset(lv, (S3577C4_nt*), ABISELECT(32,16), "S3575C3");
    check_field_offset(lv, s3575c3f0, ABISELECT(8,4), "S3575C3.s3575c3f0");
    set_bf_and_test(lv, s3575c3f1, ABISELECT(24,12), 0, 1, 1, "S3575C3");
    test_class_info(&lv, &cd_S3575C3);
    dp->~S3575C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3575C3(Test_S3575C3, "S3575C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S3575C3C1Ev();
extern void _ZN7S3575C3D2Ev();
Name_Map name_map_S3575C3[] = {
  NSPAIR(_ZN7S3575C3C1Ev),
  NSPAIR(_ZN7S3575C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S3575C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3575C3[];
extern void _ZN7S3575C3D1Ev();
extern void _ZN7S3575C3D0Ev();
extern void _ZN7S3575C32v2Ev();
extern void _ZN7S3575C32v3Ev();
extern void ABISELECT(_ZTv0_n24_N7S3575C3D1Ev,_ZTv0_n12_N7S3575C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S3575C3D1Ev,_ZThn16_N7S3575C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3575C3D0Ev,_ZTv0_n12_N7S3575C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S3575C3D0Ev,_ZThn16_N7S3575C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3575C3[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3575C3[0]),
  (VTBL_ENTRY)&_ZN7S3575C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3575C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3575C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3575C32v3Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S3575C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3575C3D1Ev,_ZTv0_n12_N7S3575C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3575C3D0Ev,_ZTv0_n12_N7S3575C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S3575C3[];
static  VTT_ENTRY vtt_S3575C3[] = {
  {&(_ZTV7S3575C3[3]),  3,12},
  {&(_ZTV7S3575C3[10]),  10,12},
};
extern VTBL_ENTRY _ZTI7S3575C3[];
extern  VTBL_ENTRY _ZTV7S3575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3575C3[];
static VTBL_ENTRY alt_thunk_names140[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3575C3D0Ev,_ZTv0_n12_N7S3575C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3575C3D0Ev,_ZThn16_N7S3575C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3575C3D1Ev,_ZTv0_n12_N7S3575C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3575C3D1Ev,_ZThn16_N7S3575C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3575C3 = {  "S3575C3", // class name
  bases_S3575C3, 1,
  &(vtc_S3575C3[0]), // expected_vtbl_contents
  &(vtt_S3575C3[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S3575C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3575C3),12, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3575C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names140,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3575C2  : S3575C3 {
  int s3575c2f0;
  unsigned int s3575c2f1:1;
  virtual void  v4(); // _ZN7S3575C22v4Ev
  virtual void  v5(); // _ZN7S3575C22v5Ev
  ~S3575C2(); // tgen
  S3575C2(); // tgen
};
//SIG(-1 S3575C2) C1{ BC2{ VBC3{ vd m Fi} vd v3 v4 Fp[2] Fi:1} v1 v2 Fi Fi:1}


void  S3575C2 ::v4(){vfunc_called(this, "_ZN7S3575C22v4Ev");}
void  S3575C2 ::v5(){vfunc_called(this, "_ZN7S3575C22v5Ev");}
S3575C2 ::~S3575C2(){ note_dtor("S3575C2", this);} // tgen
S3575C2 ::S3575C2(){ note_ctor("S3575C2", this);} // tgen

static void Test_S3575C2()
{
  extern Class_Descriptor cd_S3575C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S3575C2, buf);
    S3575C2 *dp, &lv = *(dp=new (buf) S3575C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S3575C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3575C2)");
    check_base_class_offset(lv, (S3577C4_nt*)(S3575C3*), ABISELECT(40,24), "S3575C2");
    check_base_class_offset(lv, (S3575C3*), 0, "S3575C2");
    check_field_offset(lv, s3575c2f0, ABISELECT(28,16), "S3575C2.s3575c2f0");
    set_bf_and_test(lv, s3575c2f1, ABISELECT(32,20), 0, 1, 1, "S3575C2");
    test_class_info(&lv, &cd_S3575C2);
    dp->~S3575C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3575C2(Test_S3575C2, "S3575C2", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S3575C2C1Ev();
extern void _ZN7S3575C2D1Ev();
Name_Map name_map_S3575C2[] = {
  NSPAIR(_ZN7S3575C2C1Ev),
  NSPAIR(_ZN7S3575C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S3575C3;
extern VTBL_ENTRY _ZTI7S3575C3[];
extern  VTBL_ENTRY _ZTV7S3575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3575C3[];
static Base_Class bases_S3575C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(40,24), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3575C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3575C2[];
extern void _ZN7S3575C2D1Ev();
extern void _ZN7S3575C2D0Ev();
extern void _ZN7S3575C32v2Ev();
extern void _ZN7S3575C32v3Ev();
extern void _ZN7S3575C22v4Ev();
extern void _ZN7S3575C22v5Ev();
extern void ABISELECT(_ZTv0_n24_N7S3575C2D1Ev,_ZTv0_n12_N7S3575C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S3575C2D1Ev,_ZThn24_N7S3575C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3575C2D0Ev,_ZTv0_n12_N7S3575C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S3575C2D0Ev,_ZThn24_N7S3575C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3575C2[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3575C2[0]),
  (VTBL_ENTRY)&_ZN7S3575C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3575C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3575C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3575C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3575C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3575C22v5Ev,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S3575C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3575C2D1Ev,_ZTv0_n12_N7S3575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3575C2D0Ev,_ZTv0_n12_N7S3575C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S3575C2[];
extern void _ZN7S3575C3D1Ev();
extern void _ZN7S3575C3D0Ev();
extern void _ZN7S3575C32v2Ev();
extern void _ZN7S3575C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3575C3__7S3575C2[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3575C3[0]),
  (VTBL_ENTRY)&_ZN7S3575C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3575C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3575C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3575C32v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3575C3D1Ev,_ZTv0_n12_N7S3575C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S3575C3D1Ev,_ZThn24_N7S3575C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3575C3D0Ev,_ZTv0_n12_N7S3575C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S3575C3D0Ev,_ZThn24_N7S3575C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3575C3__7S3575C2[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S3575C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3575C3D1Ev,_ZTv0_n12_N7S3575C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3575C3D0Ev,_ZTv0_n12_N7S3575C3D0Ev),
};
static  VTT_ENTRY vtt_S3575C2[] = {
  {&(_ZTV7S3575C2[3]),  3,14},
  {&(_tg__ZTV7S3575C3__7S3575C2[3]),  3,7},
  {&(_tg__ZTV10S3577C4_nt__7S3575C3__7S3575C2[3]),  3,5},
  {&(_ZTV7S3575C2[12]),  12,14},
};
extern VTBL_ENTRY _ZTI7S3575C2[];
extern  VTBL_ENTRY _ZTV7S3575C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3575C2[];
static VTBL_ENTRY alt_thunk_names141[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3575C3D0Ev,_ZTv0_n12_N7S3575C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3575C3D0Ev,_ZThn24_N7S3575C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3575C3D1Ev,_ZTv0_n12_N7S3575C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3575C3D1Ev,_ZThn24_N7S3575C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3575C2D0Ev,_ZTv0_n12_N7S3575C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3575C2D0Ev,_ZThn24_N7S3575C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3575C2D1Ev,_ZTv0_n12_N7S3575C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3575C2D1Ev,_ZThn24_N7S3575C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3575C2 = {  "S3575C2", // class name
  bases_S3575C2, 2,
  &(vtc_S3575C2[0]), // expected_vtbl_contents
  &(vtt_S3575C2[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S3575C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3575C2),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3575C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names141,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3575C1  : S3575C2 {
  void *s3575c1f0;
  int s3575c1f1;
  virtual void  v1(); // _ZN7S3575C12v1Ev
  ~S3575C1(); // tgen
  S3575C1(); // tgen
};
//SIG(1 S3575C1) C1{ BC2{ BC3{ VBC4{ vd m Fi} vd v2 v3 Fp[2] Fi:1} v4 v5 Fi Fi:1} v1 Fp Fi}


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

static void Test_S3575C1()
{
  extern Class_Descriptor cd_S3575C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S3575C1, buf);
    S3575C1 *dp, &lv = *(dp=new (buf) S3575C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S3575C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3575C1)");
    check_base_class_offset(lv, (S3577C4_nt*)(S3575C3*)(S3575C2*), ABISELECT(56,32), "S3575C1");
    check_base_class_offset(lv, (S3575C3*)(S3575C2*), 0, "S3575C1");
    check_base_class_offset(lv, (S3575C2*), 0, "S3575C1");
    check_field_offset(lv, s3575c1f0, ABISELECT(40,24), "S3575C1.s3575c1f0");
    check_field_offset(lv, s3575c1f1, ABISELECT(48,28), "S3575C1.s3575c1f1");
    test_class_info(&lv, &cd_S3575C1);
    dp->~S3575C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3575C1(Test_S3575C1, "S3575C1", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S3575C1C1Ev();
extern void _ZN7S3575C1D1Ev();
Name_Map name_map_S3575C1[] = {
  NSPAIR(_ZN7S3575C1C1Ev),
  NSPAIR(_ZN7S3575C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S3575C3;
extern VTBL_ENTRY _ZTI7S3575C3[];
extern  VTBL_ENTRY _ZTV7S3575C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3575C3[];
extern Class_Descriptor cd_S3575C2;
extern VTBL_ENTRY _ZTI7S3575C2[];
extern  VTBL_ENTRY _ZTV7S3575C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3575C2[];
static Base_Class bases_S3575C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(56,32), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3575C3,    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
    2, //immediately_derived
  0, 0},
  {&cd_S3575C2,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S3575C1[];
extern void _ZN7S3575C1D1Ev();
extern void _ZN7S3575C1D0Ev();
extern void _ZN7S3575C32v2Ev();
extern void _ZN7S3575C32v3Ev();
extern void _ZN7S3575C22v4Ev();
extern void _ZN7S3575C22v5Ev();
extern void _ZN7S3575C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S3575C1D1Ev,_ZTv0_n12_N7S3575C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S3575C1D1Ev,_ZThn32_N7S3575C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3575C1D0Ev,_ZTv0_n12_N7S3575C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S3575C1D0Ev,_ZThn32_N7S3575C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3575C1[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3575C1[0]),
  (VTBL_ENTRY)&_ZN7S3575C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3575C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3575C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3575C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3575C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3575C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3575C12v1Ev,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3575C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3575C1D1Ev,_ZTv0_n12_N7S3575C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3575C1D0Ev,_ZTv0_n12_N7S3575C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S3575C1[];
extern void _ZN7S3575C2D1Ev();
extern void _ZN7S3575C2D0Ev();
extern void _ZN7S3575C32v2Ev();
extern void _ZN7S3575C32v3Ev();
extern void _ZN7S3575C22v4Ev();
extern void _ZN7S3575C22v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3575C2__7S3575C1[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3575C2[0]),
  (VTBL_ENTRY)&_ZN7S3575C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3575C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3575C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3575C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3575C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3575C22v5Ev,
};
extern void _ZN7S3575C3D1Ev();
extern void _ZN7S3575C3D0Ev();
extern void _ZN7S3575C32v2Ev();
extern void _ZN7S3575C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3575C37S3575C2__7S3575C1[] = {
  ABISELECT(56,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3575C3[0]),
  (VTBL_ENTRY)&_ZN7S3575C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3575C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3575C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3575C32v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3575C3D1Ev,_ZTv0_n12_N7S3575C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S3575C3D1Ev,_ZThn32_N7S3575C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3575C3D0Ev,_ZTv0_n12_N7S3575C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S3575C3D0Ev,_ZThn32_N7S3575C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3575C37S3575C2__7S3575C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3575C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3575C3D1Ev,_ZTv0_n12_N7S3575C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3575C3D0Ev,_ZTv0_n12_N7S3575C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3575C2D1Ev,_ZTv0_n12_N7S3575C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S3575C2D1Ev,_ZThn32_N7S3575C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3575C2D0Ev,_ZTv0_n12_N7S3575C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S3575C2D0Ev,_ZThn32_N7S3575C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3575C2__7S3575C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S3575C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3575C2D1Ev,_ZTv0_n12_N7S3575C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3575C2D0Ev,_ZTv0_n12_N7S3575C2D0Ev),
};
static  VTT_ENTRY vtt_S3575C1[] = {
  {&(_ZTV7S3575C1[3]),  3,15},
  {&(_tg__ZTV7S3575C2__7S3575C1[3]),  3,9},
  {&(_tg__ZTV7S3575C37S3575C2__7S3575C1[3]),  3,7},
  {&(_tg__ZTV10S3577C4_nt__7S3575C37S3575C2__7S3575C1[3]),  3,5},
  {&(_tg__ZTV10S3577C4_nt__7S3575C2__7S3575C1[3]),  3,5},
  {&(_ZTV7S3575C1[13]),  13,15},
};
extern VTBL_ENTRY _ZTI7S3575C1[];
extern  VTBL_ENTRY _ZTV7S3575C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3575C1[];
static VTBL_ENTRY alt_thunk_names142[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3575C2D0Ev,_ZTv0_n12_N7S3575C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3575C2D0Ev,_ZThn32_N7S3575C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3575C2D1Ev,_ZTv0_n12_N7S3575C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3575C2D1Ev,_ZThn32_N7S3575C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3575C3D0Ev,_ZTv0_n12_N7S3575C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3575C3D0Ev,_ZThn32_N7S3575C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3575C3D1Ev,_ZTv0_n12_N7S3575C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3575C3D1Ev,_ZThn32_N7S3575C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3575C1D0Ev,_ZTv0_n12_N7S3575C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3575C1D0Ev,_ZThn32_N7S3575C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3575C1D1Ev,_ZTv0_n12_N7S3575C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S3575C1D1Ev,_ZThn32_N7S3575C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3575C1 = {  "S3575C1", // class name
  bases_S3575C1, 3,
  &(vtc_S3575C1[0]), // expected_vtbl_contents
  &(vtt_S3575C1[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S3575C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3575C1),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3575C1),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names142,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3576C3  : virtual S3577C4_nt {
  void *s3576c3f0[2];
  unsigned int s3576c3f1:1;
  virtual  ~S3576C3(); // _ZN7S3576C3D2Ev
  virtual void  v2(); // _ZN7S3576C32v2Ev
  virtual void  v3(); // _ZN7S3576C32v3Ev
  S3576C3(); // tgen
};
//SIG(-1 S3576C3) C1{ VBC2{ vd m Fi} vd v1 v2 Fp[2] Fi:1}


 S3576C3 ::~S3576C3(){ note_dtor("S3576C3", this);}
void  S3576C3 ::v2(){vfunc_called(this, "_ZN7S3576C32v2Ev");}
void  S3576C3 ::v3(){vfunc_called(this, "_ZN7S3576C32v3Ev");}
S3576C3 ::S3576C3(){ note_ctor("S3576C3", this);} // tgen

static void Test_S3576C3()
{
  extern Class_Descriptor cd_S3576C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S3576C3, buf);
    S3576C3 *dp, &lv = *(dp=new (buf) S3576C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S3576C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3576C3)");
    check_base_class_offset(lv, (S3577C4_nt*), ABISELECT(32,16), "S3576C3");
    check_field_offset(lv, s3576c3f0, ABISELECT(8,4), "S3576C3.s3576c3f0");
    set_bf_and_test(lv, s3576c3f1, ABISELECT(24,12), 0, 1, 1, "S3576C3");
    test_class_info(&lv, &cd_S3576C3);
    dp->~S3576C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3576C3(Test_S3576C3, "S3576C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S3576C3C1Ev();
extern void _ZN7S3576C3D2Ev();
Name_Map name_map_S3576C3[] = {
  NSPAIR(_ZN7S3576C3C1Ev),
  NSPAIR(_ZN7S3576C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
static Base_Class bases_S3576C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(32,16), //bcp->offset
    7, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3576C3[];
extern void _ZN7S3576C3D1Ev();
extern void _ZN7S3576C3D0Ev();
extern void _ZN7S3576C32v2Ev();
extern void _ZN7S3576C32v3Ev();
extern void ABISELECT(_ZTv0_n24_N7S3576C3D1Ev,_ZTv0_n12_N7S3576C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S3576C3D1Ev,_ZThn16_N7S3576C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3576C3D0Ev,_ZTv0_n12_N7S3576C3D0Ev)();
extern void ABISELECT(_ZThn32_N7S3576C3D0Ev,_ZThn16_N7S3576C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3576C3[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3576C3[0]),
  (VTBL_ENTRY)&_ZN7S3576C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3576C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3576C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3576C32v3Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S3576C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3576C3D1Ev,_ZTv0_n12_N7S3576C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3576C3D0Ev,_ZTv0_n12_N7S3576C3D0Ev),
};
extern VTBL_ENTRY _ZTV7S3576C3[];
static  VTT_ENTRY vtt_S3576C3[] = {
  {&(_ZTV7S3576C3[3]),  3,12},
  {&(_ZTV7S3576C3[10]),  10,12},
};
extern VTBL_ENTRY _ZTI7S3576C3[];
extern  VTBL_ENTRY _ZTV7S3576C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3576C3[];
static VTBL_ENTRY alt_thunk_names143[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3576C3D0Ev,_ZTv0_n12_N7S3576C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3576C3D0Ev,_ZThn16_N7S3576C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3576C3D1Ev,_ZTv0_n12_N7S3576C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3576C3D1Ev,_ZThn16_N7S3576C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3576C3 = {  "S3576C3", // class name
  bases_S3576C3, 1,
  &(vtc_S3576C3[0]), // expected_vtbl_contents
  &(vtt_S3576C3[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S3576C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3576C3),12, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3576C3),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names143,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3576C2  : S3576C3 {
  int s3576c2f0[4];
  virtual void  v4(); // _ZN7S3576C22v4Ev
  virtual void  v5(); // _ZN7S3576C22v5Ev
  ~S3576C2(); // tgen
  S3576C2(); // tgen
};
//SIG(-1 S3576C2) C1{ BC2{ VBC3{ vd m Fi} vd v3 v4 Fp[2] Fi:1} v1 v2 Fi[4]}


void  S3576C2 ::v4(){vfunc_called(this, "_ZN7S3576C22v4Ev");}
void  S3576C2 ::v5(){vfunc_called(this, "_ZN7S3576C22v5Ev");}
S3576C2 ::~S3576C2(){ note_dtor("S3576C2", this);} // tgen
S3576C2 ::S3576C2(){ note_ctor("S3576C2", this);} // tgen

static void Test_S3576C2()
{
  extern Class_Descriptor cd_S3576C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S3576C2, buf);
    S3576C2 *dp, &lv = *(dp=new (buf) S3576C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S3576C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3576C2)");
    check_base_class_offset(lv, (S3577C4_nt*)(S3576C3*), ABISELECT(48,32), "S3576C2");
    check_base_class_offset(lv, (S3576C3*), 0, "S3576C2");
    check_field_offset(lv, s3576c2f0, ABISELECT(28,16), "S3576C2.s3576c2f0");
    test_class_info(&lv, &cd_S3576C2);
    dp->~S3576C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3576C2(Test_S3576C2, "S3576C2", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN7S3576C2C1Ev();
extern void _ZN7S3576C2D1Ev();
Name_Map name_map_S3576C2[] = {
  NSPAIR(_ZN7S3576C2C1Ev),
  NSPAIR(_ZN7S3576C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S3576C3;
extern VTBL_ENTRY _ZTI7S3576C3[];
extern  VTBL_ENTRY _ZTV7S3576C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3576C3[];
static Base_Class bases_S3576C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(48,32), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3576C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3576C2[];
extern void _ZN7S3576C2D1Ev();
extern void _ZN7S3576C2D0Ev();
extern void _ZN7S3576C32v2Ev();
extern void _ZN7S3576C32v3Ev();
extern void _ZN7S3576C22v4Ev();
extern void _ZN7S3576C22v5Ev();
extern void ABISELECT(_ZTv0_n24_N7S3576C2D1Ev,_ZTv0_n12_N7S3576C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S3576C2D1Ev,_ZThn32_N7S3576C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3576C2D0Ev,_ZTv0_n12_N7S3576C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S3576C2D0Ev,_ZThn32_N7S3576C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3576C2[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3576C2[0]),
  (VTBL_ENTRY)&_ZN7S3576C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3576C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3576C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3576C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3576C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3576C22v5Ev,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S3576C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3576C2D1Ev,_ZTv0_n12_N7S3576C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3576C2D0Ev,_ZTv0_n12_N7S3576C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S3576C2[];
extern void _ZN7S3576C3D1Ev();
extern void _ZN7S3576C3D0Ev();
extern void _ZN7S3576C32v2Ev();
extern void _ZN7S3576C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3576C3__7S3576C2[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S3576C3[0]),
  (VTBL_ENTRY)&_ZN7S3576C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3576C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3576C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3576C32v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3576C3D1Ev,_ZTv0_n12_N7S3576C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S3576C3D1Ev,_ZThn32_N7S3576C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3576C3D0Ev,_ZTv0_n12_N7S3576C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S3576C3D0Ev,_ZThn32_N7S3576C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3576C3__7S3576C2[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S3576C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3576C3D1Ev,_ZTv0_n12_N7S3576C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3576C3D0Ev,_ZTv0_n12_N7S3576C3D0Ev),
};
static  VTT_ENTRY vtt_S3576C2[] = {
  {&(_ZTV7S3576C2[3]),  3,14},
  {&(_tg__ZTV7S3576C3__7S3576C2[3]),  3,7},
  {&(_tg__ZTV10S3577C4_nt__7S3576C3__7S3576C2[3]),  3,5},
  {&(_ZTV7S3576C2[12]),  12,14},
};
extern VTBL_ENTRY _ZTI7S3576C2[];
extern  VTBL_ENTRY _ZTV7S3576C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3576C2[];
static VTBL_ENTRY alt_thunk_names144[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3576C3D0Ev,_ZTv0_n12_N7S3576C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3576C3D0Ev,_ZThn32_N7S3576C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3576C3D1Ev,_ZTv0_n12_N7S3576C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3576C3D1Ev,_ZThn32_N7S3576C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3576C2D0Ev,_ZTv0_n12_N7S3576C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3576C2D0Ev,_ZThn32_N7S3576C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3576C2D1Ev,_ZTv0_n12_N7S3576C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3576C2D1Ev,_ZThn32_N7S3576C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3576C2 = {  "S3576C2", // class name
  bases_S3576C2, 2,
  &(vtc_S3576C2[0]), // expected_vtbl_contents
  &(vtt_S3576C2[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI7S3576C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3576C2),14, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3576C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names144,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3576C1  : S3576C2 {
  void *s3576c1f0;
  int s3576c1f1;
  virtual void  v1(); // _ZN7S3576C12v1Ev
  ~S3576C1(); // tgen
  S3576C1(); // tgen
};
//SIG(1 S3576C1) C1{ BC2{ BC3{ VBC4{ vd m Fi} vd v2 v3 Fp[2] Fi:1} v4 v5 Fi[4]} v1 Fp Fi}


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

static void Test_S3576C1()
{
  extern Class_Descriptor cd_S3576C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S3576C1, buf);
    S3576C1 *dp, &lv = *(dp=new (buf) S3576C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S3576C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3576C1)");
    check_base_class_offset(lv, (S3577C4_nt*)(S3576C3*)(S3576C2*), ABISELECT(64,40), "S3576C1");
    check_base_class_offset(lv, (S3576C3*)(S3576C2*), 0, "S3576C1");
    check_base_class_offset(lv, (S3576C2*), 0, "S3576C1");
    check_field_offset(lv, s3576c1f0, ABISELECT(48,32), "S3576C1.s3576c1f0");
    check_field_offset(lv, s3576c1f1, ABISELECT(56,36), "S3576C1.s3576c1f1");
    test_class_info(&lv, &cd_S3576C1);
    dp->~S3576C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3576C1(Test_S3576C1, "S3576C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN7S3576C1C1Ev();
extern void _ZN7S3576C1D1Ev();
Name_Map name_map_S3576C1[] = {
  NSPAIR(_ZN7S3576C1C1Ev),
  NSPAIR(_ZN7S3576C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3577C4_nt;
extern VTBL_ENTRY _ZTI10S3577C4_nt[];
extern  VTBL_ENTRY _ZTV10S3577C4_nt[];
extern Class_Descriptor cd_S3576C3;
extern VTBL_ENTRY _ZTI7S3576C3[];
extern  VTBL_ENTRY _ZTV7S3576C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3576C3[];
extern Class_Descriptor cd_S3576C2;
extern VTBL_ENTRY _ZTI7S3576C2[];
extern  VTBL_ENTRY _ZTV7S3576C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3576C2[];
static Base_Class bases_S3576C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3577C4_nt,    ABISELECT(64,40), //bcp->offset
    10, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S3576C3,    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
    2, //immediately_derived
  0, 0},
  {&cd_S3576C2,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S3576C1[];
extern void _ZN7S3576C1D1Ev();
extern void _ZN7S3576C1D0Ev();
extern void _ZN7S3576C32v2Ev();
extern void _ZN7S3576C32v3Ev();
extern void _ZN7S3576C22v4Ev();
extern void _ZN7S3576C22v5Ev();
extern void _ZN7S3576C12v1Ev();
extern void ABISELECT(_ZTv0_n24_N7S3576C1D1Ev,_ZTv0_n12_N7S3576C1D1Ev)();
extern void ABISELECT(_ZThn64_N7S3576C1D1Ev,_ZThn40_N7S3576C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3576C1D0Ev,_ZTv0_n12_N7S3576C1D0Ev)();
extern void ABISELECT(_ZThn64_N7S3576C1D0Ev,_ZThn40_N7S3576C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3576C1[] = {
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3576C1[0]),
  (VTBL_ENTRY)&_ZN7S3576C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3576C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3576C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3576C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3576C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3576C22v5Ev,
  (VTBL_ENTRY)&_ZN7S3576C12v1Ev,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S3576C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3576C1D1Ev,_ZTv0_n12_N7S3576C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3576C1D0Ev,_ZTv0_n12_N7S3576C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S3576C1[];
extern void _ZN7S3576C2D1Ev();
extern void _ZN7S3576C2D0Ev();
extern void _ZN7S3576C32v2Ev();
extern void _ZN7S3576C32v3Ev();
extern void _ZN7S3576C22v4Ev();
extern void _ZN7S3576C22v5Ev();
static  VTBL_ENTRY _tg__ZTV7S3576C2__7S3576C1[] = {
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3576C2[0]),
  (VTBL_ENTRY)&_ZN7S3576C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3576C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3576C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3576C32v3Ev,
  (VTBL_ENTRY)&_ZN7S3576C22v4Ev,
  (VTBL_ENTRY)&_ZN7S3576C22v5Ev,
};
extern void _ZN7S3576C3D1Ev();
extern void _ZN7S3576C3D0Ev();
extern void _ZN7S3576C32v2Ev();
extern void _ZN7S3576C32v3Ev();
static  VTBL_ENTRY _tg__ZTV7S3576C37S3576C2__7S3576C1[] = {
  ABISELECT(64,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S3576C3[0]),
  (VTBL_ENTRY)&_ZN7S3576C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3576C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3576C32v2Ev,
  (VTBL_ENTRY)&_ZN7S3576C32v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3576C3D1Ev,_ZTv0_n12_N7S3576C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S3576C3D1Ev,_ZThn40_N7S3576C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3576C3D0Ev,_ZTv0_n12_N7S3576C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S3576C3D0Ev,_ZThn40_N7S3576C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3576C37S3576C2__7S3576C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S3576C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3576C3D1Ev,_ZTv0_n12_N7S3576C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3576C3D0Ev,_ZTv0_n12_N7S3576C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3576C2D1Ev,_ZTv0_n12_N7S3576C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S3576C2D1Ev,_ZThn40_N7S3576C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3576C2D0Ev,_ZTv0_n12_N7S3576C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S3576C2D0Ev,_ZThn40_N7S3576C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV10S3577C4_nt__7S3576C2__7S3576C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI7S3576C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3576C2D1Ev,_ZTv0_n12_N7S3576C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3576C2D0Ev,_ZTv0_n12_N7S3576C2D0Ev),
};
static  VTT_ENTRY vtt_S3576C1[] = {
  {&(_ZTV7S3576C1[3]),  3,15},
  {&(_tg__ZTV7S3576C2__7S3576C1[3]),  3,9},
  {&(_tg__ZTV7S3576C37S3576C2__7S3576C1[3]),  3,7},
  {&(_tg__ZTV10S3577C4_nt__7S3576C37S3576C2__7S3576C1[3]),  3,5},
  {&(_tg__ZTV10S3577C4_nt__7S3576C2__7S3576C1[3]),  3,5},
  {&(_ZTV7S3576C1[13]),  13,15},
};
extern VTBL_ENTRY _ZTI7S3576C1[];
extern  VTBL_ENTRY _ZTV7S3576C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3576C1[];
static VTBL_ENTRY alt_thunk_names145[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3576C2D0Ev,_ZTv0_n12_N7S3576C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3576C2D0Ev,_ZThn40_N7S3576C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3576C2D1Ev,_ZTv0_n12_N7S3576C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3576C2D1Ev,_ZThn40_N7S3576C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3576C3D0Ev,_ZTv0_n12_N7S3576C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3576C3D0Ev,_ZThn40_N7S3576C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3576C3D1Ev,_ZTv0_n12_N7S3576C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3576C3D1Ev,_ZThn40_N7S3576C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3576C1D0Ev,_ZTv0_n12_N7S3576C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3576C1D0Ev,_ZThn40_N7S3576C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3576C1D1Ev,_ZTv0_n12_N7S3576C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S3576C1D1Ev,_ZThn40_N7S3576C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3576C1 = {  "S3576C1", // class name
  bases_S3576C1, 3,
  &(vtc_S3576C1[0]), // expected_vtbl_contents
  &(vtt_S3576C1[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI7S3576C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3576C1),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3576C1),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names145,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9953C2  {
  virtual  ~S9953C2(); // _ZN7S9953C2D1Ev
  virtual void  v5(); // _ZN7S9953C22v5Ev
  virtual void  v6(); // _ZN7S9953C22v6Ev
  virtual void  v7(); // _ZN7S9953C22v7Ev
  virtual void  v8(); // _ZN7S9953C22v8Ev
  S9953C2(); // tgen
};
//SIG(-1 S9953C2) C1{ vd v1 v2 v3 v4}


 S9953C2 ::~S9953C2(){ note_dtor("S9953C2", this);}
void  S9953C2 ::v5(){vfunc_called(this, "_ZN7S9953C22v5Ev");}
void  S9953C2 ::v6(){vfunc_called(this, "_ZN7S9953C22v6Ev");}
void  S9953C2 ::v7(){vfunc_called(this, "_ZN7S9953C22v7Ev");}
void  S9953C2 ::v8(){vfunc_called(this, "_ZN7S9953C22v8Ev");}
S9953C2 ::S9953C2(){ note_ctor("S9953C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9953C2C1Ev();
extern void _ZN7S9953C2D1Ev();
Name_Map name_map_S9953C2[] = {
  NSPAIR(_ZN7S9953C2C1Ev),
  NSPAIR(_ZN7S9953C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9953C2[];
extern void _ZN7S9953C2D1Ev();
extern void _ZN7S9953C2D0Ev();
extern void _ZN7S9953C22v5Ev();
extern void _ZN7S9953C22v6Ev();
extern void _ZN7S9953C22v7Ev();
extern void _ZN7S9953C22v8Ev();
static  VTBL_ENTRY vtc_S9953C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9953C2[0]),
  (VTBL_ENTRY)&_ZN7S9953C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9953C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9953C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9953C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9953C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9953C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S9953C2[];
extern  VTBL_ENTRY _ZTV7S9953C2[];
Class_Descriptor cd_S9953C2 = {  "S9953C2", // class name
  0,0,//no base classes
  &(vtc_S9953C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9953C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9953C2),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  S9953C3_nt  {
  short s9953c3f0[3];
  void  mf9953c3(); // _ZN10S9953C3_nt8mf9953c3Ev
};
//SIG(-1 S9953C3_nt) C1{ m Fs[3]}


void  S9953C3_nt ::mf9953c3(){}

//skip512 S9953C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9953C1  : S9953C2 {
  ::S9953C3_nt s9953c1f0;
  ::S9953C3_nt s9953c1f1;
  ::S9953C3_nt s9953c1f2;
  ::S9953C3_nt s9953c1f3;
  ::S9953C3_nt s9953c1f4;
  virtual void  v1(); // _ZN7S9953C12v1Ev
  virtual void  v2(); // _ZN7S9953C12v2Ev
  virtual void  v3(); // _ZN7S9953C12v3Ev
  virtual void  v4(); // _ZN7S9953C12v4Ev
  ~S9953C1(); // tgen
  S9953C1(); // tgen
};
//SIG(1 S9953C1) C1{ BC2{ vd v5 v6 v7 v8} v1 v2 v3 v4 FC3{ m Fs[3]} FC3 FC3 FC3 FC3}


void  S9953C1 ::v1(){vfunc_called(this, "_ZN7S9953C12v1Ev");}
void  S9953C1 ::v2(){vfunc_called(this, "_ZN7S9953C12v2Ev");}
void  S9953C1 ::v3(){vfunc_called(this, "_ZN7S9953C12v3Ev");}
void  S9953C1 ::v4(){vfunc_called(this, "_ZN7S9953C12v4Ev");}
S9953C1 ::~S9953C1(){ note_dtor("S9953C1", this);} // tgen
S9953C1 ::S9953C1(){ note_ctor("S9953C1", this);} // tgen

static void Test_S9953C1()
{
  extern Class_Descriptor cd_S9953C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,10)];
    init_test(&cd_S9953C1, buf);
    S9953C1 *dp, &lv = *(dp=new (buf) S9953C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,36), "sizeof(S9953C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9953C1)");
    check_base_class_offset(lv, (S9953C2*), 0, "S9953C1");
    check_field_offset(lv, s9953c1f0, ABISELECT(8,4), "S9953C1.s9953c1f0");
    check_field_offset(lv, s9953c1f1, ABISELECT(14,10), "S9953C1.s9953c1f1");
    check_field_offset(lv, s9953c1f2, ABISELECT(20,16), "S9953C1.s9953c1f2");
    check_field_offset(lv, s9953c1f3, ABISELECT(26,22), "S9953C1.s9953c1f3");
    check_field_offset(lv, s9953c1f4, ABISELECT(32,28), "S9953C1.s9953c1f4");
    test_class_info(&lv, &cd_S9953C1);
    dp->~S9953C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9953C1(Test_S9953C1, "S9953C1", ABISELECT(40,36));

#else // __cplusplus

extern void _ZN7S9953C1C1Ev();
extern void _ZN7S9953C1D1Ev();
Name_Map name_map_S9953C1[] = {
  NSPAIR(_ZN7S9953C1C1Ev),
  NSPAIR(_ZN7S9953C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9953C2;
extern VTBL_ENTRY _ZTI7S9953C2[];
extern  VTBL_ENTRY _ZTV7S9953C2[];
static Base_Class bases_S9953C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9953C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9953C1[];
extern void _ZN7S9953C1D1Ev();
extern void _ZN7S9953C1D0Ev();
extern void _ZN7S9953C22v5Ev();
extern void _ZN7S9953C22v6Ev();
extern void _ZN7S9953C22v7Ev();
extern void _ZN7S9953C22v8Ev();
extern void _ZN7S9953C12v1Ev();
extern void _ZN7S9953C12v2Ev();
extern void _ZN7S9953C12v3Ev();
extern void _ZN7S9953C12v4Ev();
static  VTBL_ENTRY vtc_S9953C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9953C1[0]),
  (VTBL_ENTRY)&_ZN7S9953C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9953C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9953C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9953C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9953C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9953C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9953C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9953C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9953C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9953C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9953C1[];
extern  VTBL_ENTRY _ZTV7S9953C1[];
Class_Descriptor cd_S9953C1 = {  "S9953C1", // class name
  bases_S9953C1, 1,
  &(vtc_S9953C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,36), // object size
  NSPAIRA(_ZTI7S9953C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9953C1),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  S15443C1  {
  ::S15340C3 s15443c1f0;
  ::S9141C26 s15443c1f1;
  int s15443c1f2[2];
  __tsi64 s15443c1f3[2];
  void  mf15443c1(); // _ZN8S15443C19mf15443c1Ev
};
//SIG(1 S15443C1) C1{ m FC2{ BC3{ m Fp Fi[2]}} FC4{ BC5{ m FC6{ BC3} Fp Fi}} Fi[2] FL[2]}


void  S15443C1 ::mf15443c1(){}

static void Test_S15443C1()
{
  {
    init_simple_test("S15443C1");
    S15443C1 lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S15443C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15443C1)");
    check_field_offset(lv, s15443c1f0, 0, "S15443C1.s15443c1f0");
    check_field_offset(lv, s15443c1f1, ABISELECT(16,12), "S15443C1.s15443c1f1");
    check_field_offset(lv, s15443c1f2, ABISELECT(48,32), "S15443C1.s15443c1f2");
    check_field_offset(lv, s15443c1f3, ABISELECT(56,40), "S15443C1.s15443c1f3");
  }
}
static Arrange_To_Call_Me vS15443C1(Test_S15443C1, "S15443C1", ABISELECT(72,56));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15798C1  {
  ::S5594C12 s15798c1f0;
  void *s15798c1f1;
  int s15798c1f2;
  void *s15798c1f3;
  void  mf15798c1(); // _ZN8S15798C19mf15798c1Ev
};
//SIG(1 S15798C1) C1{ m FC2{ m FC3{ m Fi[4]} FC4{ BC5{ m Fp Fi[2]}} FC6{ BC5}} Fp Fi Fp}


void  S15798C1 ::mf15798c1(){}

static void Test_S15798C1()
{
  {
    init_simple_test("S15798C1");
    S15798C1 lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S15798C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15798C1)");
    check_field_offset(lv, s15798c1f0, 0, "S15798C1.s15798c1f0");
    check_field_offset(lv, s15798c1f1, ABISELECT(48,40), "S15798C1.s15798c1f1");
    check_field_offset(lv, s15798c1f2, ABISELECT(56,44), "S15798C1.s15798c1f2");
    check_field_offset(lv, s15798c1f3, ABISELECT(64,48), "S15798C1.s15798c1f3");
  }
}
static Arrange_To_Call_Me vS15798C1(Test_S15798C1, "S15798C1", ABISELECT(72,52));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7587C3  {
  virtual  ~S7587C3(); // _ZN7S7587C3D1Ev
  virtual void  v3(); // _ZN7S7587C32v3Ev
  virtual void  v4(); // _ZN7S7587C32v4Ev
  virtual void  v5(); // _ZN7S7587C32v5Ev
  virtual void  v6(); // _ZN7S7587C32v6Ev
  S7587C3(); // tgen
};
//SIG(-1 S7587C3) C1{ vd v1 v2 v3 v4}


 S7587C3 ::~S7587C3(){ note_dtor("S7587C3", this);}
void  S7587C3 ::v3(){vfunc_called(this, "_ZN7S7587C32v3Ev");}
void  S7587C3 ::v4(){vfunc_called(this, "_ZN7S7587C32v4Ev");}
void  S7587C3 ::v5(){vfunc_called(this, "_ZN7S7587C32v5Ev");}
void  S7587C3 ::v6(){vfunc_called(this, "_ZN7S7587C32v6Ev");}
S7587C3 ::S7587C3(){ note_ctor("S7587C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7587C3C1Ev();
extern void _ZN7S7587C3D1Ev();
Name_Map name_map_S7587C3[] = {
  NSPAIR(_ZN7S7587C3C1Ev),
  NSPAIR(_ZN7S7587C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7587C3[];
extern void _ZN7S7587C3D1Ev();
extern void _ZN7S7587C3D0Ev();
extern void _ZN7S7587C32v3Ev();
extern void _ZN7S7587C32v4Ev();
extern void _ZN7S7587C32v5Ev();
extern void _ZN7S7587C32v6Ev();
static  VTBL_ENTRY vtc_S7587C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7587C3[0]),
  (VTBL_ENTRY)&_ZN7S7587C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7587C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S7587C3[];
extern  VTBL_ENTRY _ZTV7S7587C3[];
Class_Descriptor cd_S7587C3 = {  "S7587C3", // class name
  0,0,//no base classes
  &(vtc_S7587C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7587C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7587C3),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  S7587C2  : virtual S7587C3 {
  void *s7587c2f0;
  ::S7587C3 s7587c2f1;
  int s7587c2f2[2];
  virtual  ~S7587C2(); // _ZN7S7587C2D2Ev
  virtual void  v7(); // _ZN7S7587C22v7Ev
  virtual void  v8(); // _ZN7S7587C22v8Ev
  virtual void  v9(); // _ZN7S7587C22v9Ev
  S7587C2(); // tgen
};
//SIG(-1 S7587C2) C1{ VBC2{ vd v4 v5 v6 v7} vd v1 v2 v3 Fp FC2 Fi[2]}


 S7587C2 ::~S7587C2(){ note_dtor("S7587C2", this);}
void  S7587C2 ::v7(){vfunc_called(this, "_ZN7S7587C22v7Ev");}
void  S7587C2 ::v8(){vfunc_called(this, "_ZN7S7587C22v8Ev");}
void  S7587C2 ::v9(){vfunc_called(this, "_ZN7S7587C22v9Ev");}
S7587C2 ::S7587C2(){ note_ctor("S7587C2", this);} // tgen

static void Test_S7587C2()
{
  extern Class_Descriptor cd_S7587C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7587C2, buf);
    S7587C2 *dp, &lv = *(dp=new (buf) S7587C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7587C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7587C2)");
    check_base_class_offset(lv, (S7587C3*), 0, "S7587C2");
    check_field_offset(lv, s7587c2f0, ABISELECT(8,4), "S7587C2.s7587c2f0");
    check_field_offset(lv, s7587c2f1, ABISELECT(16,8), "S7587C2.s7587c2f1");
    check_field_offset(lv, s7587c2f2, ABISELECT(24,12), "S7587C2.s7587c2f2");
    test_class_info(&lv, &cd_S7587C2);
    dp->~S7587C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7587C2(Test_S7587C2, "S7587C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7587C2C1Ev();
extern void _ZN7S7587C2D2Ev();
Name_Map name_map_S7587C2[] = {
  NSPAIR(_ZN7S7587C2C1Ev),
  NSPAIR(_ZN7S7587C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7587C3;
extern VTBL_ENTRY _ZTI7S7587C3[];
extern  VTBL_ENTRY _ZTV7S7587C3[];
static Base_Class bases_S7587C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7587C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7587C2[];
extern void _ZN7S7587C2D1Ev();
extern void _ZN7S7587C2D0Ev();
extern void _ZN7S7587C32v3Ev();
extern void _ZN7S7587C32v4Ev();
extern void _ZN7S7587C32v5Ev();
extern void _ZN7S7587C32v6Ev();
extern void _ZN7S7587C22v7Ev();
extern void _ZN7S7587C22v8Ev();
extern void _ZN7S7587C22v9Ev();
static  VTBL_ENTRY vtc_S7587C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7587C2[0]),
  (VTBL_ENTRY)&_ZN7S7587C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7587C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7587C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7587C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7587C22v9Ev,
};
extern VTBL_ENTRY _ZTV7S7587C2[];
static  VTT_ENTRY vtt_S7587C2[] = {
  {&(_ZTV7S7587C2[8]),  8,17},
  {&(_ZTV7S7587C2[8]),  8,17},
};
extern VTBL_ENTRY _ZTI7S7587C2[];
extern  VTBL_ENTRY _ZTV7S7587C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7587C2[];
Class_Descriptor cd_S7587C2 = {  "S7587C2", // class name
  bases_S7587C2, 1,
  &(vtc_S7587C2[0]), // expected_vtbl_contents
  &(vtt_S7587C2[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7587C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7587C2),17, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7587C2),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  S7587C1  : S7587C2 {
  virtual  ~S7587C1(); // _ZN7S7587C1D2Ev
  virtual void  v1(); // _ZN7S7587C12v1Ev
  virtual void  v2(); // _ZN7S7587C12v2Ev
  S7587C1(); // tgen
};
//SIG(1 S7587C1) C1{ BC2{ VBC3{ vd v3 v4 v5 v6} vd v7 v8 v9 Fp FC3 Fi[2]} vd v1 v2}


 S7587C1 ::~S7587C1(){ note_dtor("S7587C1", this);}
void  S7587C1 ::v1(){vfunc_called(this, "_ZN7S7587C12v1Ev");}
void  S7587C1 ::v2(){vfunc_called(this, "_ZN7S7587C12v2Ev");}
S7587C1 ::S7587C1(){ note_ctor("S7587C1", this);} // tgen

static void Test_S7587C1()
{
  extern Class_Descriptor cd_S7587C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7587C1, buf);
    S7587C1 *dp, &lv = *(dp=new (buf) S7587C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7587C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7587C1)");
    check_base_class_offset(lv, (S7587C3*)(S7587C2*), 0, "S7587C1");
    check_base_class_offset(lv, (S7587C2*), 0, "S7587C1");
    test_class_info(&lv, &cd_S7587C1);
    dp->~S7587C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7587C1(Test_S7587C1, "S7587C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7587C1C1Ev();
extern void _ZN7S7587C1D2Ev();
Name_Map name_map_S7587C1[] = {
  NSPAIR(_ZN7S7587C1C1Ev),
  NSPAIR(_ZN7S7587C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7587C3;
extern VTBL_ENTRY _ZTI7S7587C3[];
extern  VTBL_ENTRY _ZTV7S7587C3[];
extern Class_Descriptor cd_S7587C2;
extern VTBL_ENTRY _ZTI7S7587C2[];
extern  VTBL_ENTRY _ZTV7S7587C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7587C2[];
static Base_Class bases_S7587C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7587C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7587C2,    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
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7587C1[];
extern void _ZN7S7587C1D1Ev();
extern void _ZN7S7587C1D0Ev();
extern void _ZN7S7587C32v3Ev();
extern void _ZN7S7587C32v4Ev();
extern void _ZN7S7587C32v5Ev();
extern void _ZN7S7587C32v6Ev();
extern void _ZN7S7587C22v7Ev();
extern void _ZN7S7587C22v8Ev();
extern void _ZN7S7587C22v9Ev();
extern void _ZN7S7587C12v1Ev();
extern void _ZN7S7587C12v2Ev();
static  VTBL_ENTRY vtc_S7587C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7587C1[0]),
  (VTBL_ENTRY)&_ZN7S7587C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7587C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7587C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7587C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7587C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7587C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7587C12v2Ev,
};
extern VTBL_ENTRY _ZTV7S7587C1[];
extern void _ZN7S7587C2D1Ev();
extern void _ZN7S7587C2D0Ev();
extern void _ZN7S7587C32v3Ev();
extern void _ZN7S7587C32v4Ev();
extern void _ZN7S7587C32v5Ev();
extern void _ZN7S7587C32v6Ev();
extern void _ZN7S7587C22v7Ev();
extern void _ZN7S7587C22v8Ev();
extern void _ZN7S7587C22v9Ev();
static  VTBL_ENTRY _tg__ZTV7S7587C2__7S7587C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7587C2[0]),
  (VTBL_ENTRY)&_ZN7S7587C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7587C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v3Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v4Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v5Ev,
  (VTBL_ENTRY)&_ZN7S7587C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7587C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7587C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7587C22v9Ev,
};
static  VTT_ENTRY vtt_S7587C1[] = {
  {&(_ZTV7S7587C1[8]),  8,19},
  {&(_tg__ZTV7S7587C2__7S7587C1[8]),  8,17},
  {&(_tg__ZTV7S7587C2__7S7587C1[8]),  8,17},
  {&(_ZTV7S7587C1[8]),  8,19},
};
extern VTBL_ENTRY _ZTI7S7587C1[];
extern  VTBL_ENTRY _ZTV7S7587C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7587C1[];
Class_Descriptor cd_S7587C1 = {  "S7587C1", // class name
  bases_S7587C1, 2,
  &(vtc_S7587C1[0]), // expected_vtbl_contents
  &(vtt_S7587C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7587C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7587C1),19, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7587C1),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17701C1  {
  void *s17701c1f0;
  int s17701c1f1;
  ::S9141C26 s17701c1f2;
  void *s17701c1f3[8];
  int s17701c1f4[2];
  void  mf17701c1(); // _ZN8S17701C19mf17701c1Ev
};
//SIG(1 S17701C1) C1{ m Fp Fi FC2{ BC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp Fi}} Fp[8] Fi[2]}


void  S17701C1 ::mf17701c1(){}

static void Test_S17701C1()
{
  {
    init_simple_test("S17701C1");
    S17701C1 lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S17701C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17701C1)");
    check_field_offset(lv, s17701c1f0, 0, "S17701C1.s17701c1f0");
    check_field_offset(lv, s17701c1f1, ABISELECT(8,4), "S17701C1.s17701c1f1");
    check_field_offset(lv, s17701c1f2, ABISELECT(16,8), "S17701C1.s17701c1f2");
    check_field_offset(lv, s17701c1f3, ABISELECT(48,28), "S17701C1.s17701c1f3");
    check_field_offset(lv, s17701c1f4, ABISELECT(112,60), "S17701C1.s17701c1f4");
  }
}
static Arrange_To_Call_Me vS17701C1(Test_S17701C1, "S17701C1", ABISELECT(120,68));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6590C2  {
  void *s6590c2f0[3];
  ::S9141C26 s6590c2f1;
  virtual  ~S6590C2(); // _ZN7S6590C2D1Ev
  virtual void  v2(); // _ZN7S6590C22v2Ev
  S6590C2(); // tgen
};
//SIG(-1 S6590C2) C1{ vd v1 Fp[3] FC2{ BC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp Fi}}}


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

static void Test_S6590C2()
{
  extern Class_Descriptor cd_S6590C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S6590C2, buf);
    S6590C2 *dp, &lv = *(dp=new (buf) S6590C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S6590C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6590C2)");
    check_field_offset(lv, s6590c2f0, ABISELECT(8,4), "S6590C2.s6590c2f0");
    check_field_offset(lv, s6590c2f1, ABISELECT(32,16), "S6590C2.s6590c2f1");
    test_class_info(&lv, &cd_S6590C2);
    dp->~S6590C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6590C2(Test_S6590C2, "S6590C2", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S6590C2C1Ev();
extern void _ZN7S6590C2D1Ev();
Name_Map name_map_S6590C2[] = {
  NSPAIR(_ZN7S6590C2C1Ev),
  NSPAIR(_ZN7S6590C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6590C2[];
extern void _ZN7S6590C2D1Ev();
extern void _ZN7S6590C2D0Ev();
extern void _ZN7S6590C22v2Ev();
static  VTBL_ENTRY vtc_S6590C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6590C2[0]),
  (VTBL_ENTRY)&_ZN7S6590C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6590C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6590C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S6590C2[];
extern  VTBL_ENTRY _ZTV7S6590C2[];
Class_Descriptor cd_S6590C2 = {  "S6590C2", // class name
  0,0,//no base classes
  &(vtc_S6590C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S6590C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6590C2),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  S6590C1  : S6590C2 {
  virtual void  v1(); // _ZN7S6590C12v1Ev
  ~S6590C1(); // tgen
  S6590C1(); // tgen
};
//SIG(1 S6590C1) C1{ BC2{ vd v2 Fp[3] FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}}} v1}


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

static void Test_S6590C1()
{
  extern Class_Descriptor cd_S6590C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S6590C1, buf);
    S6590C1 *dp, &lv = *(dp=new (buf) S6590C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S6590C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6590C1)");
    check_base_class_offset(lv, (S6590C2*), 0, "S6590C1");
    test_class_info(&lv, &cd_S6590C1);
    dp->~S6590C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6590C1(Test_S6590C1, "S6590C1", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN7S6590C1C1Ev();
extern void _ZN7S6590C1D1Ev();
Name_Map name_map_S6590C1[] = {
  NSPAIR(_ZN7S6590C1C1Ev),
  NSPAIR(_ZN7S6590C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6590C2;
extern VTBL_ENTRY _ZTI7S6590C2[];
extern  VTBL_ENTRY _ZTV7S6590C2[];
static Base_Class bases_S6590C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6590C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6590C1[];
extern void _ZN7S6590C1D1Ev();
extern void _ZN7S6590C1D0Ev();
extern void _ZN7S6590C22v2Ev();
extern void _ZN7S6590C12v1Ev();
static  VTBL_ENTRY vtc_S6590C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6590C1[0]),
  (VTBL_ENTRY)&_ZN7S6590C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6590C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6590C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6590C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S6590C1[];
extern  VTBL_ENTRY _ZTV7S6590C1[];
Class_Descriptor cd_S6590C1 = {  "S6590C1", // class name
  bases_S6590C1, 1,
  &(vtc_S6590C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI7S6590C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6590C1),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  S16624C1  {
  int s16624c1f0;
  ::S15340C2 s16624c1f1;
  ::S9141C26 s16624c1f2;
  void  mf16624c1(); // _ZN8S16624C19mf16624c1Ev
};
//SIG(1 S16624C1) C1{ m Fi FC2{ BC3{ BC4{ m Fp Fi[2]}}} FC5{ BC6{ m FC7{ BC4} Fp Fi}}}


void  S16624C1 ::mf16624c1(){}

static void Test_S16624C1()
{
  {
    init_simple_test("S16624C1");
    S16624C1 lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S16624C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16624C1)");
    check_field_offset(lv, s16624c1f0, 0, "S16624C1.s16624c1f0");
    check_field_offset(lv, s16624c1f1, ABISELECT(8,4), "S16624C1.s16624c1f1");
    check_field_offset(lv, s16624c1f2, ABISELECT(24,16), "S16624C1.s16624c1f2");
  }
}
static Arrange_To_Call_Me vS16624C1(Test_S16624C1, "S16624C1", ABISELECT(56,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6779C2  {
  virtual void  v3(); // _ZN7S6779C22v3Ev
  virtual void  v4(); // _ZN7S6779C22v4Ev
  ~S6779C2(); // tgen
  S6779C2(); // tgen
};
//SIG(-1 S6779C2) C1{ v1 v2}


void  S6779C2 ::v3(){vfunc_called(this, "_ZN7S6779C22v3Ev");}
void  S6779C2 ::v4(){vfunc_called(this, "_ZN7S6779C22v4Ev");}
S6779C2 ::~S6779C2(){ note_dtor("S6779C2", this);} // tgen
S6779C2 ::S6779C2(){ note_ctor("S6779C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6779C2C1Ev();
extern void _ZN7S6779C2D1Ev();
Name_Map name_map_S6779C2[] = {
  NSPAIR(_ZN7S6779C2C1Ev),
  NSPAIR(_ZN7S6779C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6779C2[];
extern void _ZN7S6779C22v3Ev();
extern void _ZN7S6779C22v4Ev();
static  VTBL_ENTRY vtc_S6779C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6779C2[0]),
  (VTBL_ENTRY)&_ZN7S6779C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6779C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6779C2[];
extern  VTBL_ENTRY _ZTV7S6779C2[];
Class_Descriptor cd_S6779C2 = {  "S6779C2", // class name
  0,0,//no base classes
  &(vtc_S6779C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6779C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6779C2),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  S6779C1  : S6779C2 {
  ::S9141C26 s6779c1f0;
  void *s6779c1f1;
  virtual void  v1(); // _ZN7S6779C12v1Ev
  virtual void  v2(); // _ZN7S6779C12v2Ev
  ~S6779C1(); // tgen
  S6779C1(); // tgen
};
//SIG(1 S6779C1) C1{ BC2{ v3 v4} v1 v2 FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}} Fp}


void  S6779C1 ::v1(){vfunc_called(this, "_ZN7S6779C12v1Ev");}
void  S6779C1 ::v2(){vfunc_called(this, "_ZN7S6779C12v2Ev");}
S6779C1 ::~S6779C1(){ note_dtor("S6779C1", this);} // tgen
S6779C1 ::S6779C1(){ note_ctor("S6779C1", this);} // tgen

static void Test_S6779C1()
{
  extern Class_Descriptor cd_S6779C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S6779C1, buf);
    S6779C1 *dp, &lv = *(dp=new (buf) S6779C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S6779C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6779C1)");
    check_base_class_offset(lv, (S6779C2*), 0, "S6779C1");
    check_field_offset(lv, s6779c1f0, ABISELECT(8,4), "S6779C1.s6779c1f0");
    check_field_offset(lv, s6779c1f1, ABISELECT(40,24), "S6779C1.s6779c1f1");
    test_class_info(&lv, &cd_S6779C1);
    dp->~S6779C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6779C1(Test_S6779C1, "S6779C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S6779C1C1Ev();
extern void _ZN7S6779C1D1Ev();
Name_Map name_map_S6779C1[] = {
  NSPAIR(_ZN7S6779C1C1Ev),
  NSPAIR(_ZN7S6779C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6779C2;
extern VTBL_ENTRY _ZTI7S6779C2[];
extern  VTBL_ENTRY _ZTV7S6779C2[];
static Base_Class bases_S6779C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6779C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6779C1[];
extern void _ZN7S6779C22v3Ev();
extern void _ZN7S6779C22v4Ev();
extern void _ZN7S6779C12v1Ev();
extern void _ZN7S6779C12v2Ev();
static  VTBL_ENTRY vtc_S6779C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6779C1[0]),
  (VTBL_ENTRY)&_ZN7S6779C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6779C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6779C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6779C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6779C1[];
extern  VTBL_ENTRY _ZTV7S6779C1[];
Class_Descriptor cd_S6779C1 = {  "S6779C1", // class name
  bases_S6779C1, 1,
  &(vtc_S6779C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S6779C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6779C1),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  S16741C1  {
  int s16741c1f0;
  ::S3214C4_nt s16741c1f1;
  ::S9141C26 s16741c1f2;
  void  mf16741c1(); // _ZN8S16741C19mf16741c1Ev
};
//SIG(1 S16741C1) C1{ m Fi FC2{ m Fi[2]} FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}}}


void  S16741C1 ::mf16741c1(){}

static void Test_S16741C1()
{
  {
    init_simple_test("S16741C1");
    S16741C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S16741C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16741C1)");
    check_field_offset(lv, s16741c1f0, 0, "S16741C1.s16741c1f0");
    check_field_offset(lv, s16741c1f1, 4, "S16741C1.s16741c1f1");
    check_field_offset(lv, s16741c1f2, ABISELECT(16,12), "S16741C1.s16741c1f2");
  }
}
static Arrange_To_Call_Me vS16741C1(Test_S16741C1, "S16741C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5489C1  : S5487C2 {
  void *s5489c1f0;
  int s5489c1f1;
};
//SIG(1 S5489C1) C1{ BC2{ FC3{ m Fi[4]} Fi FC4{ m Fi[2]} Fi:1 Fi:1 Fi Fi:1} Fp Fi}



static void Test_S5489C1()
{
  extern Class_Descriptor cd_S5489C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,13)];
    init_test(&cd_S5489C1, buf);
    S5489C1 &lv = *(new (buf) S5489C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,48), "sizeof(S5489C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5489C1)");
    check_base_class_offset(lv, (S5487C2*), 0, "S5489C1");
    check_field_offset(lv, s5489c1f0, 40, "S5489C1.s5489c1f0");
    check_field_offset(lv, s5489c1f1, ABISELECT(48,44), "S5489C1.s5489c1f1");
    test_class_info(&lv, &cd_S5489C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5489C1(Test_S5489C1, "S5489C1", ABISELECT(56,48));

#else // __cplusplus

extern Class_Descriptor cd_S5487C2;
static Base_Class bases_S5489C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5487C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5489C1 = {  "S5489C1", // class name
  bases_S5489C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(56,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  S16893C1  {
  int s16893c1f0;
  void *s16893c1f1;
  ::S5594C2 s16893c1f2;
  void  mf16893c1(); // _ZN8S16893C19mf16893c1Ev
};
//SIG(1 S16893C1) C1{ m Fi Fp FC2{ m FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}}}}


void  S16893C1 ::mf16893c1(){}

static void Test_S16893C1()
{
  {
    init_simple_test("S16893C1");
    S16893C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S16893C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16893C1)");
    check_field_offset(lv, s16893c1f0, 0, "S16893C1.s16893c1f0");
    check_field_offset(lv, s16893c1f1, ABISELECT(8,4), "S16893C1.s16893c1f1");
    check_field_offset(lv, s16893c1f2, ABISELECT(16,8), "S16893C1.s16893c1f2");
  }
}
static Arrange_To_Call_Me vS16893C1(Test_S16893C1, "S16893C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5490C1  : S5487C2 {
  void *s5490c1f0;
};
//SIG(1 S5490C1) C1{ BC2{ FC3{ m Fi[4]} Fi FC4{ m Fi[2]} Fi:1 Fi:1 Fi Fi:1} Fp}



static void Test_S5490C1()
{
  extern Class_Descriptor cd_S5490C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S5490C1, buf);
    S5490C1 &lv = *(new (buf) S5490C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S5490C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5490C1)");
    check_base_class_offset(lv, (S5487C2*), 0, "S5490C1");
    check_field_offset(lv, s5490c1f0, 40, "S5490C1.s5490c1f0");
    test_class_info(&lv, &cd_S5490C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5490C1(Test_S5490C1, "S5490C1", ABISELECT(48,44));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5599C1  : S17536C2 {
};
//SIG(1 S5599C1) C1{ BC2{ m FC3{ BC4{ m Fp Fi[2]}} Fp[2] FL Fi[3] Fp Fi[4]}}



static void Test_S5599C1()
{
  extern Class_Descriptor cd_S5599C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S5599C1, buf);
    S5599C1 &lv = *(new (buf) S5599C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S5599C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5599C1)");
    check_base_class_offset(lv, (S17536C2*), 0, "S5599C1");
    test_class_info(&lv, &cd_S5599C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5599C1(Test_S5599C1, "S5599C1", ABISELECT(80,60));

#else // __cplusplus

extern Class_Descriptor cd_S17536C2;
static Base_Class bases_S5599C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S17536C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5599C1 = {  "S5599C1", // class name
  bases_S5599C1, 1,
  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  S20123C2  {
  int s20123c2f0;
  virtual void  v3(); // _ZN8S20123C22v3Ev
  virtual void  v4(); // _ZN8S20123C22v4Ev
  virtual void  v5(); // _ZN8S20123C22v5Ev
  virtual void  v6(); // _ZN8S20123C22v6Ev
  ~S20123C2(); // tgen
  S20123C2(); // tgen
};
//SIG(-1 S20123C2) C1{ v1 v2 v3 v4 Fi}


void  S20123C2 ::v3(){vfunc_called(this, "_ZN8S20123C22v3Ev");}
void  S20123C2 ::v4(){vfunc_called(this, "_ZN8S20123C22v4Ev");}
void  S20123C2 ::v5(){vfunc_called(this, "_ZN8S20123C22v5Ev");}
void  S20123C2 ::v6(){vfunc_called(this, "_ZN8S20123C22v6Ev");}
S20123C2 ::~S20123C2(){ note_dtor("S20123C2", this);} // tgen
S20123C2 ::S20123C2(){ note_ctor("S20123C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S20123C2C1Ev();
extern void _ZN8S20123C2D1Ev();
Name_Map name_map_S20123C2[] = {
  NSPAIR(_ZN8S20123C2C1Ev),
  NSPAIR(_ZN8S20123C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20123C2[];
extern void _ZN8S20123C22v3Ev();
extern void _ZN8S20123C22v4Ev();
extern void _ZN8S20123C22v5Ev();
extern void _ZN8S20123C22v6Ev();
static  VTBL_ENTRY vtc_S20123C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20123C2[0]),
  (VTBL_ENTRY)&_ZN8S20123C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20123C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20123C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20123C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S20123C2[];
extern  VTBL_ENTRY _ZTV8S20123C2[];
Class_Descriptor cd_S20123C2 = {  "S20123C2", // class name
  0,0,//no base classes
  &(vtc_S20123C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20123C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20123C2),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  S20123C3_nt  {
  virtual void  v7(); // _ZN11S20123C3_nt2v7Ev
  virtual void  v8(); // _ZN11S20123C3_nt2v8Ev
  virtual void  v9(); // _ZN11S20123C3_nt2v9Ev
  ~S20123C3_nt(); // tgen
  S20123C3_nt(); // tgen
};
//SIG(-1 S20123C3_nt) C1{ v1 v2 v3}


void  S20123C3_nt ::v7(){vfunc_called(this, "_ZN11S20123C3_nt2v7Ev");}
void  S20123C3_nt ::v8(){vfunc_called(this, "_ZN11S20123C3_nt2v8Ev");}
void  S20123C3_nt ::v9(){vfunc_called(this, "_ZN11S20123C3_nt2v9Ev");}
S20123C3_nt ::~S20123C3_nt(){ note_dtor("S20123C3_nt", this);} // tgen
S20123C3_nt ::S20123C3_nt(){ note_ctor("S20123C3_nt", this);} // tgen

//skip512 S20123C3_nt

#else // __cplusplus

extern void _ZN11S20123C3_ntC1Ev();
extern void _ZN11S20123C3_ntD1Ev();
Name_Map name_map_S20123C3_nt[] = {
  NSPAIR(_ZN11S20123C3_ntC1Ev),
  NSPAIR(_ZN11S20123C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20123C3_nt[];
extern void _ZN11S20123C3_nt2v7Ev();
extern void _ZN11S20123C3_nt2v8Ev();
extern void _ZN11S20123C3_nt2v9Ev();
static  VTBL_ENTRY vtc_S20123C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20123C3_nt[0]),
  (VTBL_ENTRY)&_ZN11S20123C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20123C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20123C3_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI11S20123C3_nt[];
VTBL_ENTRY *P__ZTI11S20123C3_nt = _ZTI11S20123C3_nt; 
extern  VTBL_ENTRY _ZTV11S20123C3_nt[];
Class_Descriptor cd_S20123C3_nt = {  "S20123C3_nt", // class name
  0,0,//no base classes
  &(vtc_S20123C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20123C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20123C3_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  S20123C1  : virtual S20123C2 , virtual S20123C3_nt {
  ::S20123C2 s20123c1f0;
  ::S20123C3_nt s20123c1f1;
  int s20123c1f2;
  virtual void  v1(); // _ZN8S20123C12v1Ev
  virtual void  v2(); // _ZN8S20123C12v2Ev
  ~S20123C1(); // tgen
  S20123C1(); // tgen
};
//SIG(1 S20123C1) C1{ VBC2{ v3 v4 v5 v6 Fi} VBC3{ v7 v8 v9} v1 v2 FC2 FC3 Fi}


void  S20123C1 ::v1(){vfunc_called(this, "_ZN8S20123C12v1Ev");}
void  S20123C1 ::v2(){vfunc_called(this, "_ZN8S20123C12v2Ev");}
S20123C1 ::~S20123C1(){ note_dtor("S20123C1", this);} // tgen
S20123C1 ::S20123C1(){ note_ctor("S20123C1", this);} // tgen

static void Test_S20123C1()
{
  extern Class_Descriptor cd_S20123C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S20123C1, buf);
    S20123C1 *dp, &lv = *(dp=new (buf) S20123C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S20123C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20123C1)");
    check_base_class_offset(lv, (S20123C2*), ABISELECT(40,20), "S20123C1");
    check_base_class_offset(lv, (S20123C3_nt*), 0, "S20123C1");
    check_field_offset(lv, s20123c1f0, ABISELECT(8,4), "S20123C1.s20123c1f0");
    check_field_offset(lv, s20123c1f1, ABISELECT(24,12), "S20123C1.s20123c1f1");
    check_field_offset(lv, s20123c1f2, ABISELECT(32,16), "S20123C1.s20123c1f2");
    test_class_info(&lv, &cd_S20123C1);
    dp->~S20123C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20123C1(Test_S20123C1, "S20123C1", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S20123C1C1Ev();
extern void _ZN8S20123C1D1Ev();
Name_Map name_map_S20123C1[] = {
  NSPAIR(_ZN8S20123C1C1Ev),
  NSPAIR(_ZN8S20123C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20123C2;
extern VTBL_ENTRY _ZTI8S20123C2[];
extern  VTBL_ENTRY _ZTV8S20123C2[];
extern Class_Descriptor cd_S20123C3_nt;
extern VTBL_ENTRY _ZTI11S20123C3_nt[];
extern  VTBL_ENTRY _ZTV11S20123C3_nt[];
static Base_Class bases_S20123C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20123C2,    ABISELECT(40,20), //bcp->offset
    12, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20123C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20123C1[];
extern void _ZN11S20123C3_nt2v7Ev();
extern void _ZN11S20123C3_nt2v8Ev();
extern void _ZN11S20123C3_nt2v9Ev();
extern void _ZN8S20123C12v1Ev();
extern void _ZN8S20123C12v2Ev();
extern void _ZN8S20123C22v3Ev();
extern void _ZN8S20123C22v4Ev();
extern void _ZN8S20123C22v5Ev();
extern void _ZN8S20123C22v6Ev();
static  VTBL_ENTRY vtc_S20123C1[] = {
  0,
  ABISELECT(40,20),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20123C1[0]),
  (VTBL_ENTRY)&_ZN11S20123C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN11S20123C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S20123C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN8S20123C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20123C12v2Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20123C1[0]),
  (VTBL_ENTRY)&_ZN8S20123C22v3Ev,
  (VTBL_ENTRY)&_ZN8S20123C22v4Ev,
  (VTBL_ENTRY)&_ZN8S20123C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20123C22v6Ev,
};
extern VTBL_ENTRY _ZTV8S20123C1[];
static  VTT_ENTRY vtt_S20123C1[] = {
  {&(_ZTV8S20123C1[7]),  7,22},
  {&(_ZTV8S20123C1[18]),  18,22},
  {&(_ZTV8S20123C1[7]),  7,22},
};
extern VTBL_ENTRY _ZTI8S20123C1[];
extern  VTBL_ENTRY _ZTV8S20123C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20123C1[];
Class_Descriptor cd_S20123C1 = {  "S20123C1", // class name
  bases_S20123C1, 2,
  &(vtc_S20123C1[0]), // expected_vtbl_contents
  &(vtt_S20123C1[0]), // expected_vtt_contents
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S20123C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20123C1),22, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20123C1),3, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17505C1  {
  void *s17505c1f0;
  ::S15340C3 s17505c1f1;
  ::S9141C26 s17505c1f2;
  void  mf17505c1(); // _ZN8S17505C19mf17505c1Ev
};
//SIG(1 S17505C1) C1{ m Fp FC2{ BC3{ m Fp Fi[2]}} FC4{ BC5{ m FC6{ BC3} Fp Fi}}}


void  S17505C1 ::mf17505c1(){}

static void Test_S17505C1()
{
  {
    init_simple_test("S17505C1");
    S17505C1 lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S17505C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17505C1)");
    check_field_offset(lv, s17505c1f0, 0, "S17505C1.s17505c1f0");
    check_field_offset(lv, s17505c1f1, ABISELECT(8,4), "S17505C1.s17505c1f1");
    check_field_offset(lv, s17505c1f2, ABISELECT(24,16), "S17505C1.s17505c1f2");
  }
}
static Arrange_To_Call_Me vS17505C1(Test_S17505C1, "S17505C1", ABISELECT(56,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5595C1  : S5594C2 {
  void *s5595c1f0;
};
//SIG(1 S5595C1) C1{ BC2{ m FC3{ BC4{ m FC5{ BC6{ m Fp Fi[2]}} Fp Fi}}} Fp}



static void Test_S5595C1()
{
  extern Class_Descriptor cd_S5595C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S5595C1, buf);
    S5595C1 &lv = *(new (buf) S5595C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S5595C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5595C1)");
    check_base_class_offset(lv, (S5594C2*), 0, "S5595C1");
    check_field_offset(lv, s5595c1f0, ABISELECT(32,20), "S5595C1.s5595c1f0");
    test_class_info(&lv, &cd_S5595C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5595C1(Test_S5595C1, "S5595C1", ABISELECT(40,24));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S2787C2  : S3214C7_nt {
  int s2787c2f0;
  void *s2787c2f1;
};
//SIG(-1 S2787C2) C1{ BC2{ m Fp Fi[2]} Fi Fp}



static void Test_S2787C2()
{
  extern Class_Descriptor cd_S2787C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S2787C2, buf);
    S2787C2 &lv = *(new (buf) S2787C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S2787C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2787C2)");
    check_base_class_offset(lv, (S3214C7_nt*), 0, "S2787C2");
    check_field_offset(lv, s2787c2f0, ABISELECT(16,12), "S2787C2.s2787c2f0");
    check_field_offset(lv, s2787c2f1, ABISELECT(24,16), "S2787C2.s2787c2f1");
    test_class_info(&lv, &cd_S2787C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2787C2(Test_S2787C2, "S2787C2", ABISELECT(32,20));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S2787C1  : S2787C2 {
  ::S6004C3 s2787c1f0;
};
//SIG(1 S2787C1) C1{ BC2{ BC3{ m Fp Fi[2]} Fi Fp} FC4{ m Fi[21] FL[2]}}



static void Test_S2787C1()
{
  extern Class_Descriptor cd_S2787C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(18,31)];
    init_test(&cd_S2787C1, buf);
    S2787C1 &lv = *(new (buf) S2787C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(136,120), "sizeof(S2787C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2787C1)");
    check_base_class_offset(lv, (S3214C7_nt*)(S2787C2*), 0, "S2787C1");
    check_base_class_offset(lv, (S2787C2*), 0, "S2787C1");
    check_field_offset(lv, s2787c1f0, ABISELECT(32,20), "S2787C1.s2787c1f0");
    test_class_info(&lv, &cd_S2787C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2787C1(Test_S2787C1, "S2787C1", ABISELECT(136,120));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S17499C1  {
  void *s17499c1f0;
  ::S9141C26 s17499c1f1;
  int s17499c1f2;
  void  mf17499c1(); // _ZN8S17499C19mf17499c1Ev
};
//SIG(1 S17499C1) C1{ m Fp FC2{ BC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp Fi}} Fi}


void  S17499C1 ::mf17499c1(){}

static void Test_S17499C1()
{
  {
    init_simple_test("S17499C1");
    S17499C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S17499C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17499C1)");
    check_field_offset(lv, s17499c1f0, 0, "S17499C1.s17499c1f0");
    check_field_offset(lv, s17499c1f1, ABISELECT(8,4), "S17499C1.s17499c1f1");
    check_field_offset(lv, s17499c1f2, ABISELECT(40,24), "S17499C1.s17499c1f2");
  }
}
static Arrange_To_Call_Me vS17499C1(Test_S17499C1, "S17499C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18168C2  {
  ::S5648C2 s18168c2f0;
  void *s18168c2f1;
  void  mf18168c2(); // _ZN8S18168C29mf18168c2Ev
};
//SIG(-1 S18168C2) C1{ m FC2{ m FC3{ m Fi[2]} Fi} Fp}


void  S18168C2 ::mf18168c2(){}

static void Test_S18168C2()
{
  {
    init_simple_test("S18168C2");
    S18168C2 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S18168C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18168C2)");
    check_field_offset(lv, s18168c2f0, 0, "S18168C2.s18168c2f0");
    check_field_offset(lv, s18168c2f1, ABISELECT(16,12), "S18168C2.s18168c2f1");
  }
}
static Arrange_To_Call_Me vS18168C2(Test_S18168C2, "S18168C2", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18168C1  {
  void *s18168c1f0[3];
  ::S18168C2 s18168c1f1;
  char s18168c1f2[2];
  void  mf18168c1(); // _ZN8S18168C19mf18168c1Ev
};
//SIG(1 S18168C1) C1{ m Fp[3] FC2{ m FC3{ m FC4{ m Fi[2]} Fi} Fp} Fc[2]}


void  S18168C1 ::mf18168c1(){}

static void Test_S18168C1()
{
  {
    init_simple_test("S18168C1");
    S18168C1 lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S18168C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18168C1)");
    check_field_offset(lv, s18168c1f0, 0, "S18168C1.s18168c1f0");
    check_field_offset(lv, s18168c1f1, ABISELECT(24,12), "S18168C1.s18168c1f1");
    check_field_offset(lv, s18168c1f2, ABISELECT(48,28), "S18168C1.s18168c1f2");
  }
}
static Arrange_To_Call_Me vS18168C1(Test_S18168C1, "S18168C1", ABISELECT(56,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18167C2  {
  ::S5648C2 s18167c2f0;
  int s18167c2f1;
  void  mf18167c2(); // _ZN8S18167C29mf18167c2Ev
};
//SIG(-1 S18167C2) C1{ m FC2{ m FC3{ m Fi[2]} Fi} Fi}


void  S18167C2 ::mf18167c2(){}

static void Test_S18167C2()
{
  {
    init_simple_test("S18167C2");
    S18167C2 lv;
    check2(sizeof(lv), 16, "sizeof(S18167C2)");
    check2(__alignof__(lv), 4, "__alignof__(S18167C2)");
    check_field_offset(lv, s18167c2f0, 0, "S18167C2.s18167c2f0");
    check_field_offset(lv, s18167c2f1, 12, "S18167C2.s18167c2f1");
  }
}
static Arrange_To_Call_Me vS18167C2(Test_S18167C2, "S18167C2", 16);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18167C1  {
  void *s18167c1f0[3];
  ::S18167C2 s18167c1f1;
  char s18167c1f2[2];
  void  mf18167c1(); // _ZN8S18167C19mf18167c1Ev
};
//SIG(1 S18167C1) C1{ m Fp[3] FC2{ m FC3{ m FC4{ m Fi[2]} Fi} Fi} Fc[2]}


void  S18167C1 ::mf18167c1(){}

static void Test_S18167C1()
{
  {
    init_simple_test("S18167C1");
    S18167C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S18167C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18167C1)");
    check_field_offset(lv, s18167c1f0, 0, "S18167C1.s18167c1f0");
    check_field_offset(lv, s18167c1f1, ABISELECT(24,12), "S18167C1.s18167c1f1");
    check_field_offset(lv, s18167c1f2, ABISELECT(40,28), "S18167C1.s18167c1f2");
  }
}
static Arrange_To_Call_Me vS18167C1(Test_S18167C1, "S18167C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14089C1  {
  void *s14089c1f0;
  ::S9141C26 s14089c1f1;
};
//SIG(1 S14089C1) C1{ Fp FC2{ BC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp Fi}}}



static void Test_S14089C1()
{
  {
    init_simple_test("S14089C1");
    S14089C1 lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S14089C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14089C1)");
    check_field_offset(lv, s14089c1f0, 0, "S14089C1.s14089c1f0");
    check_field_offset(lv, s14089c1f1, ABISELECT(8,4), "S14089C1.s14089c1f1");
  }
}
static Arrange_To_Call_Me vS14089C1(Test_S14089C1, "S14089C1", ABISELECT(40,24));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18477C1  {
  ::S9141C26 s18477c1f0;
  virtual void  v1(); // _ZN8S18477C12v1Ev
  ~S18477C1(); // tgen
  S18477C1(); // tgen
};
//SIG(1 S18477C1) C1{ v1 FC2{ BC3{ m FC4{ BC5{ m Fp Fi[2]}} Fp Fi}}}


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

static void Test_S18477C1()
{
  extern Class_Descriptor cd_S18477C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S18477C1, buf);
    S18477C1 *dp, &lv = *(dp=new (buf) S18477C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S18477C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18477C1)");
    check_field_offset(lv, s18477c1f0, ABISELECT(8,4), "S18477C1.s18477c1f0");
    test_class_info(&lv, &cd_S18477C1);
    dp->~S18477C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18477C1(Test_S18477C1, "S18477C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S18477C1C1Ev();
extern void _ZN8S18477C1D1Ev();
Name_Map name_map_S18477C1[] = {
  NSPAIR(_ZN8S18477C1C1Ev),
  NSPAIR(_ZN8S18477C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18477C1[];
extern void _ZN8S18477C12v1Ev();
static  VTBL_ENTRY vtc_S18477C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18477C1[0]),
  (VTBL_ENTRY)&_ZN8S18477C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18477C1[];
extern  VTBL_ENTRY _ZTV8S18477C1[];
Class_Descriptor cd_S18477C1 = {  "S18477C1", // class name
  0,0,//no base classes
  &(vtc_S18477C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S18477C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18477C1),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6893C2  {
  int s6893c2f0;
  virtual void  v5(); // _ZN7S6893C22v5Ev
  virtual void  v6(); // _ZN7S6893C22v6Ev
  virtual void  v7(); // _ZN7S6893C22v7Ev
  virtual void  v8(); // _ZN7S6893C22v8Ev
  ~S6893C2(); // tgen
  S6893C2(); // tgen
};
//SIG(-1 S6893C2) C1{ v1 v2 v3 v4 Fi}


void  S6893C2 ::v5(){vfunc_called(this, "_ZN7S6893C22v5Ev");}
void  S6893C2 ::v6(){vfunc_called(this, "_ZN7S6893C22v6Ev");}
void  S6893C2 ::v7(){vfunc_called(this, "_ZN7S6893C22v7Ev");}
void  S6893C2 ::v8(){vfunc_called(this, "_ZN7S6893C22v8Ev");}
S6893C2 ::~S6893C2(){ note_dtor("S6893C2", this);} // tgen
S6893C2 ::S6893C2(){ note_ctor("S6893C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6893C2C1Ev();
extern void _ZN7S6893C2D1Ev();
Name_Map name_map_S6893C2[] = {
  NSPAIR(_ZN7S6893C2C1Ev),
  NSPAIR(_ZN7S6893C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6893C2[];
extern void _ZN7S6893C22v5Ev();
extern void _ZN7S6893C22v6Ev();
extern void _ZN7S6893C22v7Ev();
extern void _ZN7S6893C22v8Ev();
static  VTBL_ENTRY vtc_S6893C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6893C2[0]),
  (VTBL_ENTRY)&_ZN7S6893C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6893C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6893C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6893C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S6893C2[];
extern  VTBL_ENTRY _ZTV7S6893C2[];
Class_Descriptor cd_S6893C2 = {  "S6893C2", // class name
  0,0,//no base classes
  &(vtc_S6893C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6893C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6893C2),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  S6893C1  : S6893C2 {
  int s6893c1f0[2];
  virtual  ~S6893C1(); // _ZN7S6893C1D1Ev
  virtual void  v1(); // _ZN7S6893C12v1Ev
  virtual void  v2(); // _ZN7S6893C12v2Ev
  virtual void  v3(); // _ZN7S6893C12v3Ev
  virtual void  v4(); // _ZN7S6893C12v4Ev
  S6893C1(); // tgen
};
//SIG(1 S6893C1) C1{ BC2{ v5 v6 v7 v8 Fi} vd v1 v2 v3 v4 Fi[2]}


 S6893C1 ::~S6893C1(){ note_dtor("S6893C1", this);}
void  S6893C1 ::v1(){vfunc_called(this, "_ZN7S6893C12v1Ev");}
void  S6893C1 ::v2(){vfunc_called(this, "_ZN7S6893C12v2Ev");}
void  S6893C1 ::v3(){vfunc_called(this, "_ZN7S6893C12v3Ev");}
void  S6893C1 ::v4(){vfunc_called(this, "_ZN7S6893C12v4Ev");}
S6893C1 ::S6893C1(){ note_ctor("S6893C1", this);} // tgen

static void Test_S6893C1()
{
  extern Class_Descriptor cd_S6893C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6893C1, buf);
    S6893C1 *dp, &lv = *(dp=new (buf) S6893C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6893C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6893C1)");
    check_base_class_offset(lv, (S6893C2*), 0, "S6893C1");
    check_field_offset(lv, s6893c1f0, ABISELECT(12,8), "S6893C1.s6893c1f0");
    test_class_info(&lv, &cd_S6893C1);
    dp->~S6893C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6893C1(Test_S6893C1, "S6893C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S6893C1C1Ev();
extern void _ZN7S6893C1D1Ev();
Name_Map name_map_S6893C1[] = {
  NSPAIR(_ZN7S6893C1C1Ev),
  NSPAIR(_ZN7S6893C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6893C2;
extern VTBL_ENTRY _ZTI7S6893C2[];
extern  VTBL_ENTRY _ZTV7S6893C2[];
static Base_Class bases_S6893C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6893C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6893C1[];
extern void _ZN7S6893C22v5Ev();
extern void _ZN7S6893C22v6Ev();
extern void _ZN7S6893C22v7Ev();
extern void _ZN7S6893C22v8Ev();
extern void _ZN7S6893C1D1Ev();
extern void _ZN7S6893C1D0Ev();
extern void _ZN7S6893C12v1Ev();
extern void _ZN7S6893C12v2Ev();
extern void _ZN7S6893C12v3Ev();
extern void _ZN7S6893C12v4Ev();
static  VTBL_ENTRY vtc_S6893C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6893C1[0]),
  (VTBL_ENTRY)&_ZN7S6893C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6893C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6893C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6893C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6893C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6893C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6893C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6893C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6893C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6893C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S6893C1[];
extern  VTBL_ENTRY _ZTV7S6893C1[];
Class_Descriptor cd_S6893C1 = {  "S6893C1", // class name
  bases_S6893C1, 1,
  &(vtc_S6893C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S6893C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6893C1),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  S18385C2_nt  {
  int s18385c2f0[3];
};
//SIG(-1 S18385C2_nt) C1{ Fi[3]}



//skip512 S18385C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18385C1  {
  void *s18385c1f0[6];
  int s18385c1f1[3];
  void *s18385c1f2[3];
  char s18385c1f3[6];
  ::S18385C2_nt s18385c1f4;
  int s18385c1f5;
  void  mf18385c1(); // _ZN8S18385C19mf18385c1Ev
};
//SIG(1 S18385C1) C1{ m Fp[6] Fi[3] Fp[3] Fc[6] FC2{ Fi[3]} Fi}


void  S18385C1 ::mf18385c1(){}

static void Test_S18385C1()
{
  {
    init_simple_test("S18385C1");
    S18385C1 lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S18385C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18385C1)");
    check_field_offset(lv, s18385c1f0, 0, "S18385C1.s18385c1f0");
    check_field_offset(lv, s18385c1f1, ABISELECT(48,24), "S18385C1.s18385c1f1");
    check_field_offset(lv, s18385c1f2, ABISELECT(64,36), "S18385C1.s18385c1f2");
    check_field_offset(lv, s18385c1f3, ABISELECT(88,48), "S18385C1.s18385c1f3");
    check_field_offset(lv, s18385c1f4, ABISELECT(96,56), "S18385C1.s18385c1f4");
    check_field_offset(lv, s18385c1f5, ABISELECT(108,68), "S18385C1.s18385c1f5");
  }
}
static Arrange_To_Call_Me vS18385C1(Test_S18385C1, "S18385C1", ABISELECT(112,72));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18028C1  {
  void *s18028c1f0[2];
  ::S4227C45 s18028c1f1;
  int s18028c1f2;
  void *s18028c1f3;
  char s18028c1f4;
  void  mf18028c1(); // _ZN8S18028C19mf18028c1Ev
};
//SIG(1 S18028C1) C1{ m Fp[2] FC2{ m Fp Fi[2] FC3{ m}} Fi Fp Fc}


void  S18028C1 ::mf18028c1(){}

static void Test_S18028C1()
{
  {
    init_simple_test("S18028C1");
    S18028C1 lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S18028C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18028C1)");
    check_field_offset(lv, s18028c1f0, 0, "S18028C1.s18028c1f0");
    check_field_offset(lv, s18028c1f1, ABISELECT(16,8), "S18028C1.s18028c1f1");
    check_field_offset(lv, s18028c1f2, ABISELECT(40,24), "S18028C1.s18028c1f2");
    check_field_offset(lv, s18028c1f3, ABISELECT(48,28), "S18028C1.s18028c1f3");
    check_field_offset(lv, s18028c1f4, ABISELECT(56,32), "S18028C1.s18028c1f4");
  }
}
static Arrange_To_Call_Me vS18028C1(Test_S18028C1, "S18028C1", ABISELECT(64,36));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S2495C2()
{
  extern Class_Descriptor cd_S2495C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S2495C2, buf);
    S2495C2 &lv = *(new (buf) S2495C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S2495C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2495C2)");
    check_base_class_offset(lv, (S9141C27_nt*), 0, "S2495C2");
    test_class_info(&lv, &cd_S2495C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2495C2(Test_S2495C2, "S2495C2", ABISELECT(32,20));

#else // __cplusplus

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



static void Test_S2495C1()
{
  extern Class_Descriptor cd_S2495C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S2495C1, buf);
    S2495C1 &lv = *(new (buf) S2495C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S2495C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2495C1)");
    check_base_class_offset(lv, (S9141C27_nt*)(S2495C2*), 0, "S2495C1");
    check_base_class_offset(lv, (S2495C2*), 0, "S2495C1");
    test_class_info(&lv, &cd_S2495C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2495C1(Test_S2495C1, "S2495C1", ABISELECT(32,20));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5647C1  : S5648C2 {
  ::S3214C4_nt s5647c1f0;
  ::S3214C4_nt s5647c1f1;
  void *s5647c1f2[2];
  int s5647c1f3;
};
//SIG(1 S5647C1) C1{ BC2{ m FC3{ m Fi[2]} Fi} FC3 FC3 Fp[2] Fi}



static void Test_S5647C1()
{
  extern Class_Descriptor cd_S5647C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,11)];
    init_test(&cd_S5647C1, buf);
    S5647C1 &lv = *(new (buf) S5647C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,40), "sizeof(S5647C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5647C1)");
    check_base_class_offset(lv, (S5648C2*), 0, "S5647C1");
    check_field_offset(lv, s5647c1f0, 12, "S5647C1.s5647c1f0");
    check_field_offset(lv, s5647c1f1, 20, "S5647C1.s5647c1f1");
    check_field_offset(lv, s5647c1f2, ABISELECT(32,28), "S5647C1.s5647c1f2");
    check_field_offset(lv, s5647c1f3, ABISELECT(48,36), "S5647C1.s5647c1f3");
    test_class_info(&lv, &cd_S5647C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5647C1(Test_S5647C1, "S5647C1", ABISELECT(56,40));

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S7081C2  {
  int s7081c2f0;
  virtual void  v7(); // _ZN7S7081C22v7Ev
  virtual void  v8(); // _ZN7S7081C22v8Ev
  virtual void  v9(); // _ZN7S7081C22v9Ev
  virtual void  v10(); // _ZN7S7081C23v10Ev
  ~S7081C2(); // tgen
  S7081C2(); // tgen
};
//SIG(-1 S7081C2) C1{ v1 v2 v3 v4 Fi}


void  S7081C2 ::v7(){vfunc_called(this, "_ZN7S7081C22v7Ev");}
void  S7081C2 ::v8(){vfunc_called(this, "_ZN7S7081C22v8Ev");}
void  S7081C2 ::v9(){vfunc_called(this, "_ZN7S7081C22v9Ev");}
void  S7081C2 ::v10(){vfunc_called(this, "_ZN7S7081C23v10Ev");}
S7081C2 ::~S7081C2(){ note_dtor("S7081C2", this);} // tgen
S7081C2 ::S7081C2(){ note_ctor("S7081C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7081C2C1Ev();
extern void _ZN7S7081C2D1Ev();
Name_Map name_map_S7081C2[] = {
  NSPAIR(_ZN7S7081C2C1Ev),
  NSPAIR(_ZN7S7081C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7081C2[];
extern void _ZN7S7081C22v7Ev();
extern void _ZN7S7081C22v8Ev();
extern void _ZN7S7081C22v9Ev();
extern void _ZN7S7081C23v10Ev();
static  VTBL_ENTRY vtc_S7081C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7081C2[0]),
  (VTBL_ENTRY)&_ZN7S7081C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7081C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7081C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7081C23v10Ev,
};
extern VTBL_ENTRY _ZTI7S7081C2[];
extern  VTBL_ENTRY _ZTV7S7081C2[];
Class_Descriptor cd_S7081C2 = {  "S7081C2", // class name
  0,0,//no base classes
  &(vtc_S7081C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7081C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7081C2),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  S7081C1  : S7081C2 {
  virtual void  v1(); // _ZN7S7081C12v1Ev
  virtual void  v2(); // _ZN7S7081C12v2Ev
  virtual void  v3(); // _ZN7S7081C12v3Ev
  virtual void  v4(); // _ZN7S7081C12v4Ev
  virtual void  v5(); // _ZN7S7081C12v5Ev
  virtual void  v6(); // _ZN7S7081C12v6Ev
  ~S7081C1(); // tgen
  S7081C1(); // tgen
};
//SIG(1 S7081C1) C1{ BC2{ v7 v8 v9 v10 Fi} v1 v2 v3 v4 v5 v6}


void  S7081C1 ::v1(){vfunc_called(this, "_ZN7S7081C12v1Ev");}
void  S7081C1 ::v2(){vfunc_called(this, "_ZN7S7081C12v2Ev");}
void  S7081C1 ::v3(){vfunc_called(this, "_ZN7S7081C12v3Ev");}
void  S7081C1 ::v4(){vfunc_called(this, "_ZN7S7081C12v4Ev");}
void  S7081C1 ::v5(){vfunc_called(this, "_ZN7S7081C12v5Ev");}
void  S7081C1 ::v6(){vfunc_called(this, "_ZN7S7081C12v6Ev");}
S7081C1 ::~S7081C1(){ note_dtor("S7081C1", this);} // tgen
S7081C1 ::S7081C1(){ note_ctor("S7081C1", this);} // tgen

static void Test_S7081C1()
{
  extern Class_Descriptor cd_S7081C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7081C1, buf);
    S7081C1 *dp, &lv = *(dp=new (buf) S7081C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7081C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7081C1)");
    check_base_class_offset(lv, (S7081C2*), 0, "S7081C1");
    test_class_info(&lv, &cd_S7081C1);
    dp->~S7081C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7081C1(Test_S7081C1, "S7081C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7081C1C1Ev();
extern void _ZN7S7081C1D1Ev();
Name_Map name_map_S7081C1[] = {
  NSPAIR(_ZN7S7081C1C1Ev),
  NSPAIR(_ZN7S7081C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7081C2;
extern VTBL_ENTRY _ZTI7S7081C2[];
extern  VTBL_ENTRY _ZTV7S7081C2[];
static Base_Class bases_S7081C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7081C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7081C1[];
extern void _ZN7S7081C22v7Ev();
extern void _ZN7S7081C22v8Ev();
extern void _ZN7S7081C22v9Ev();
extern void _ZN7S7081C23v10Ev();
extern void _ZN7S7081C12v1Ev();
extern void _ZN7S7081C12v2Ev();
extern void _ZN7S7081C12v3Ev();
extern void _ZN7S7081C12v4Ev();
extern void _ZN7S7081C12v5Ev();
extern void _ZN7S7081C12v6Ev();
static  VTBL_ENTRY vtc_S7081C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7081C1[0]),
  (VTBL_ENTRY)&_ZN7S7081C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7081C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7081C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7081C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7081C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7081C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7081C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7081C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7081C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7081C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S7081C1[];
extern  VTBL_ENTRY _ZTV7S7081C1[];
Class_Descriptor cd_S7081C1 = {  "S7081C1", // class name
  bases_S7081C1, 1,
  &(vtc_S7081C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7081C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7081C1),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  S6894C2  {
  int s6894c2f0;
  virtual void  v5(); // _ZN7S6894C22v5Ev
  virtual void  v6(); // _ZN7S6894C22v6Ev
  virtual void  v7(); // _ZN7S6894C22v7Ev
  virtual void  v8(); // _ZN7S6894C22v8Ev
  ~S6894C2(); // tgen
  S6894C2(); // tgen
};
//SIG(-1 S6894C2) C1{ v1 v2 v3 v4 Fi}


void  S6894C2 ::v5(){vfunc_called(this, "_ZN7S6894C22v5Ev");}
void  S6894C2 ::v6(){vfunc_called(this, "_ZN7S6894C22v6Ev");}
void  S6894C2 ::v7(){vfunc_called(this, "_ZN7S6894C22v7Ev");}
void  S6894C2 ::v8(){vfunc_called(this, "_ZN7S6894C22v8Ev");}
S6894C2 ::~S6894C2(){ note_dtor("S6894C2", this);} // tgen
S6894C2 ::S6894C2(){ note_ctor("S6894C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6894C2C1Ev();
extern void _ZN7S6894C2D1Ev();
Name_Map name_map_S6894C2[] = {
  NSPAIR(_ZN7S6894C2C1Ev),
  NSPAIR(_ZN7S6894C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6894C2[];
extern void _ZN7S6894C22v5Ev();
extern void _ZN7S6894C22v6Ev();
extern void _ZN7S6894C22v7Ev();
extern void _ZN7S6894C22v8Ev();
static  VTBL_ENTRY vtc_S6894C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6894C2[0]),
  (VTBL_ENTRY)&_ZN7S6894C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6894C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6894C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6894C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S6894C2[];
extern  VTBL_ENTRY _ZTV7S6894C2[];
Class_Descriptor cd_S6894C2 = {  "S6894C2", // class name
  0,0,//no base classes
  &(vtc_S6894C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6894C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6894C2),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  S6894C1  : S6894C2 {
  int s6894c1f0;
  virtual  ~S6894C1(); // _ZN7S6894C1D1Ev
  virtual void  v1(); // _ZN7S6894C12v1Ev
  virtual void  v2(); // _ZN7S6894C12v2Ev
  virtual void  v3(); // _ZN7S6894C12v3Ev
  virtual void  v4(); // _ZN7S6894C12v4Ev
  S6894C1(); // tgen
};
//SIG(1 S6894C1) C1{ BC2{ v5 v6 v7 v8 Fi} vd v1 v2 v3 v4 Fi}


 S6894C1 ::~S6894C1(){ note_dtor("S6894C1", this);}
void  S6894C1 ::v1(){vfunc_called(this, "_ZN7S6894C12v1Ev");}
void  S6894C1 ::v2(){vfunc_called(this, "_ZN7S6894C12v2Ev");}
void  S6894C1 ::v3(){vfunc_called(this, "_ZN7S6894C12v3Ev");}
void  S6894C1 ::v4(){vfunc_called(this, "_ZN7S6894C12v4Ev");}
S6894C1 ::S6894C1(){ note_ctor("S6894C1", this);} // tgen

static void Test_S6894C1()
{
  extern Class_Descriptor cd_S6894C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S6894C1, buf);
    S6894C1 *dp, &lv = *(dp=new (buf) S6894C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S6894C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6894C1)");
    check_base_class_offset(lv, (S6894C2*), 0, "S6894C1");
    check_field_offset(lv, s6894c1f0, ABISELECT(12,8), "S6894C1.s6894c1f0");
    test_class_info(&lv, &cd_S6894C1);
    dp->~S6894C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6894C1(Test_S6894C1, "S6894C1", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S6894C1C1Ev();
extern void _ZN7S6894C1D1Ev();
Name_Map name_map_S6894C1[] = {
  NSPAIR(_ZN7S6894C1C1Ev),
  NSPAIR(_ZN7S6894C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6894C2;
extern VTBL_ENTRY _ZTI7S6894C2[];
extern  VTBL_ENTRY _ZTV7S6894C2[];
static Base_Class bases_S6894C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6894C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6894C1[];
extern void _ZN7S6894C22v5Ev();
extern void _ZN7S6894C22v6Ev();
extern void _ZN7S6894C22v7Ev();
extern void _ZN7S6894C22v8Ev();
extern void _ZN7S6894C1D1Ev();
extern void _ZN7S6894C1D0Ev();
extern void _ZN7S6894C12v1Ev();
extern void _ZN7S6894C12v2Ev();
extern void _ZN7S6894C12v3Ev();
extern void _ZN7S6894C12v4Ev();
static  VTBL_ENTRY vtc_S6894C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6894C1[0]),
  (VTBL_ENTRY)&_ZN7S6894C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6894C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6894C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6894C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6894C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6894C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6894C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6894C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6894C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6894C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S6894C1[];
extern  VTBL_ENTRY _ZTV7S6894C1[];
Class_Descriptor cd_S6894C1 = {  "S6894C1", // class name
  bases_S6894C1, 1,
  &(vtc_S6894C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S6894C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6894C1),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  S18172C1  {
  void *s18172c1f0[3];
  ::S5648C2 s18172c1f1;
  char s18172c1f2[2];
  void  mf18172c1(); // _ZN8S18172C19mf18172c1Ev
};
//SIG(1 S18172C1) C1{ m Fp[3] FC2{ m FC3{ m Fi[2]} Fi} Fc[2]}


void  S18172C1 ::mf18172c1(){}

static void Test_S18172C1()
{
  {
    init_simple_test("S18172C1");
    S18172C1 lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S18172C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18172C1)");
    check_field_offset(lv, s18172c1f0, 0, "S18172C1.s18172c1f0");
    check_field_offset(lv, s18172c1f1, ABISELECT(24,12), "S18172C1.s18172c1f1");
    check_field_offset(lv, s18172c1f2, ABISELECT(36,24), "S18172C1.s18172c1f2");
  }
}
static Arrange_To_Call_Me vS18172C1(Test_S18172C1, "S18172C1", ABISELECT(40,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12621C2_nt  {
  void *s12621c2f0;
  int s12621c2f1;
};
//SIG(-1 S12621C2_nt) C1{ Fp Fi}



//skip512 S12621C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12621C1  {
  int s12621c1f0;
  long s12621c1f1;
  void *s12621c1f2[10];
  ::S12621C2_nt s12621c1f3;
  int s12621c1f4[2];
  void *s12621c1f5[6];
};
//SIG(1 S12621C1) C1{ Fi Fl Fp[10] FC2{ Fp Fi} Fi[2] Fp[6]}



static void Test_S12621C1()
{
  {
    init_simple_test("S12621C1");
    S12621C1 lv;
    check2(sizeof(lv), ABISELECT(168,88), "sizeof(S12621C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12621C1)");
    check_field_offset(lv, s12621c1f0, 0, "S12621C1.s12621c1f0");
    check_field_offset(lv, s12621c1f1, ABISELECT(8,4), "S12621C1.s12621c1f1");
    check_field_offset(lv, s12621c1f2, ABISELECT(16,8), "S12621C1.s12621c1f2");
    check_field_offset(lv, s12621c1f3, ABISELECT(96,48), "S12621C1.s12621c1f3");
    check_field_offset(lv, s12621c1f4, ABISELECT(112,56), "S12621C1.s12621c1f4");
    check_field_offset(lv, s12621c1f5, ABISELECT(120,64), "S12621C1.s12621c1f5");
  }
}
static Arrange_To_Call_Me vS12621C1(Test_S12621C1, "S12621C1", ABISELECT(168,88));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6120C4  : S20997C6 {
};
//SIG(-1 S6120C4) C1{ BC2{ m FL[5]}}



static void Test_S6120C4()
{
  extern Class_Descriptor cd_S6120C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,11)];
    init_test(&cd_S6120C4, buf);
    S6120C4 &lv = *(new (buf) S6120C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 40, "sizeof(S6120C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6120C4)");
    check_base_class_offset(lv, (S20997C6*), 0, "S6120C4");
    test_class_info(&lv, &cd_S6120C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6120C4(Test_S6120C4, "S6120C4", 40);

#else // __cplusplus

extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
static Base_Class bases_S6120C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6120C4[];
Class_Descriptor cd_S6120C4 = {  "S6120C4", // class name
  bases_S6120C4, 1,
  0, // no vftv
  0, //no vtt
  40, // object size
  NSPAIRA(_ZTI7S6120C4),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  S6120C3  : virtual S6120C4 {
  long double s6120c3f0;
  ~S6120C3(); // tgen
  S6120C3(); // tgen
};
//SIG(-1 S6120C3) C1{ VBC2{ BC3{ m FL[5]}} FD}


S6120C3 ::~S6120C3(){ note_dtor("S6120C3", this);} // tgen
S6120C3 ::S6120C3(){ note_ctor("S6120C3", this);} // tgen

static void Test_S6120C3()
{
  extern Class_Descriptor cd_S6120C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,15)];
    init_test(&cd_S6120C3, buf);
    S6120C3 *dp, &lv = *(dp=new (buf) S6120C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S6120C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6120C3)");
    check_base_class_offset(lv, (S20997C6*)(S6120C4*), ABISELECT(32,16), "S6120C3");
    check_base_class_offset(lv, (S6120C4*), ABISELECT(32,16), "S6120C3");
    check_field_offset(lv, s6120c3f0, ABISELECT(16,4), "S6120C3.s6120c3f0");
    test_class_info(&lv, &cd_S6120C3);
    dp->~S6120C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6120C3(Test_S6120C3, "S6120C3", ABISELECT(80,56));

#else // __cplusplus

extern void _ZN7S6120C3C1Ev();
extern void _ZN7S6120C3D1Ev();
Name_Map name_map_S6120C3[] = {
  NSPAIR(_ZN7S6120C3C1Ev),
  NSPAIR(_ZN7S6120C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6120C4;
extern VTBL_ENTRY _ZTI7S6120C4[];
static Base_Class bases_S6120C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S6120C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6120C3[];
static  VTBL_ENTRY vtc_S6120C3[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6120C3[0]),
};
extern VTBL_ENTRY _ZTV7S6120C3[];
static  VTT_ENTRY vtt_S6120C3[] = {
  {&(_ZTV7S6120C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6120C3[];
extern  VTBL_ENTRY _ZTV7S6120C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6120C3[];
Class_Descriptor cd_S6120C3 = {  "S6120C3", // class name
  bases_S6120C3, 2,
  &(vtc_S6120C3[0]), // expected_vtbl_contents
  &(vtt_S6120C3[0]), // expected_vtt_contents
  ABISELECT(80,56), // object size
  NSPAIRA(_ZTI7S6120C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6120C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6120C3),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  S6120C1  : S4227C37 , S6120C3 {
  char s6120c1f0;
  ~S6120C1(); // tgen
  S6120C1(); // tgen
};
//SIG(1 S6120C1) C1{ BC2{ m} BC3{ VBC4{ BC5{ m FL[5]}} FD} Fc}


S6120C1 ::~S6120C1(){ note_dtor("S6120C1", this);} // tgen
S6120C1 ::S6120C1(){ note_ctor("S6120C1", this);} // tgen

static void Test_S6120C1()
{
  extern Class_Descriptor cd_S6120C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,16)];
    init_test(&cd_S6120C1, buf);
    S6120C1 *dp, &lv = *(dp=new (buf) S6120C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S6120C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6120C1)");
    check_base_class_offset(lv, (S4227C37*), 0, "S6120C1");
    check_base_class_offset(lv, (S20997C6*)(S6120C4*), ABISELECT(40,20), "S6120C1");
    check_base_class_offset(lv, (S6120C4*)(S6120C3*), ABISELECT(40,20), "S6120C1");
    check_base_class_offset(lv, (S6120C3*), 0, "S6120C1");
    check_field_offset(lv, s6120c1f0, ABISELECT(32,16), "S6120C1.s6120c1f0");
    test_class_info(&lv, &cd_S6120C1);
    dp->~S6120C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6120C1(Test_S6120C1, "S6120C1", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN7S6120C1C1Ev();
extern void _ZN7S6120C1D1Ev();
Name_Map name_map_S6120C1[] = {
  NSPAIR(_ZN7S6120C1C1Ev),
  NSPAIR(_ZN7S6120C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4227C37;
extern VTBL_ENTRY _ZTI8S4227C37[];
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
extern Class_Descriptor cd_S6120C4;
extern VTBL_ENTRY _ZTI7S6120C4[];
extern Class_Descriptor cd_S6120C3;
extern VTBL_ENTRY _ZTI7S6120C3[];
extern  VTBL_ENTRY _ZTV7S6120C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6120C3[];
static Base_Class bases_S6120C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4227C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20997C6,    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, 0},
  {&cd_S6120C4,    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_S6120C3,    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 _ZTI7S6120C1[];
static  VTBL_ENTRY vtc_S6120C1[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S6120C1[0]),
};
extern VTBL_ENTRY _ZTV7S6120C1[];
static  VTBL_ENTRY _tg__ZTV7S6120C3__7S6120C1[] = {
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S6120C3[0]),
};
static  VTT_ENTRY vtt_S6120C1[] = {
  {&(_ZTV7S6120C1[3]),  3,3},
  {&(_tg__ZTV7S6120C3__7S6120C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6120C1[];
extern  VTBL_ENTRY _ZTV7S6120C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6120C1[];
Class_Descriptor cd_S6120C1 = {  "S6120C1", // class name
  bases_S6120C1, 4,
  &(vtc_S6120C1[0]), // expected_vtbl_contents
  &(vtt_S6120C1[0]), // expected_vtt_contents
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI7S6120C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6120C1),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6120C1),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  S14203C1  {
  void *s14203c1f0;
  int s14203c1f1;
  __tsi64 s14203c1f2[5];
  char s14203c1f3[1026];
  void *s14203c1f4[2];
  int s14203c1f5[2];
};
//SIG(1 S14203C1) C1{ Fp Fi FL[5] Fc[1026] Fp[2] Fi[2]}



static void Test_S14203C1()
{
  {
    init_simple_test("S14203C1");
    S14203C1 lv;
    check2(sizeof(lv), ABISELECT(1112,1092), "sizeof(S14203C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14203C1)");
    check_field_offset(lv, s14203c1f0, 0, "S14203C1.s14203c1f0");
    check_field_offset(lv, s14203c1f1, ABISELECT(8,4), "S14203C1.s14203c1f1");
    check_field_offset(lv, s14203c1f2, ABISELECT(16,8), "S14203C1.s14203c1f2");
    check_field_offset(lv, s14203c1f3, ABISELECT(56,48), "S14203C1.s14203c1f3");
    check_field_offset(lv, s14203c1f4, ABISELECT(1088,1076), "S14203C1.s14203c1f4");
    check_field_offset(lv, s14203c1f5, ABISELECT(1104,1084), "S14203C1.s14203c1f5");
  }
}
static Arrange_To_Call_Me vS14203C1(Test_S14203C1, "S14203C1", ABISELECT(1112,1092));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5741C3_nt  {
  ::S9141C8_nt s5741c3f0;
  void  mf5741c3(); // _ZN10S5741C3_nt8mf5741c3Ev
};
//SIG(-1 S5741C3_nt) C1{ m FC2{ m Fp}}


void  S5741C3_nt ::mf5741c3(){}

//skip512 S5741C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5741C2  {
  int s5741c2f0;
  ::S5741C3_nt s5741c2f1;
  ::S5741C3_nt s5741c2f2;
  char s5741c2f3;
  void  mf5741c2(); // _ZN7S5741C28mf5741c2Ev
};
//SIG(-1 S5741C2) C1{ m Fi FC2{ m FC3{ m Fp}} FC2 Fc}


void  S5741C2 ::mf5741c2(){}

static void Test_S5741C2()
{
  {
    init_simple_test("S5741C2");
    S5741C2 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S5741C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5741C2)");
    check_field_offset(lv, s5741c2f0, 0, "S5741C2.s5741c2f0");
    check_field_offset(lv, s5741c2f1, ABISELECT(8,4), "S5741C2.s5741c2f1");
    check_field_offset(lv, s5741c2f2, ABISELECT(16,8), "S5741C2.s5741c2f2");
    check_field_offset(lv, s5741c2f3, ABISELECT(24,12), "S5741C2.s5741c2f3");
  }
}
static Arrange_To_Call_Me vS5741C2(Test_S5741C2, "S5741C2", ABISELECT(32,16));

#else // __cplusplus

Class_Descriptor cd_S5741C2 = {  "S5741C2", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(32,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5741C1  : S5741C2 {
};
//SIG(1 S5741C1) C1{ BC2{ m Fi FC3{ m FC4{ m Fp}} FC3 Fc}}



static void Test_S5741C1()
{
  extern Class_Descriptor cd_S5741C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S5741C1, buf);
    S5741C1 &lv = *(new (buf) S5741C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S5741C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5741C1)");
    check_base_class_offset(lv, (S5741C2*), 0, "S5741C1");
    test_class_info(&lv, &cd_S5741C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5741C1(Test_S5741C1, "S5741C1", ABISELECT(32,16));

#else // __cplusplus

extern Class_Descriptor cd_S5741C2;
static Base_Class bases_S5741C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5741C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5741C1 = {  "S5741C1", // class name
  bases_S5741C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,16), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11348C2_nt  {
  int s11348c2f0;
  char s11348c2f1;
};
//SIG(-1 S11348C2_nt) C1{ Fi Fc}



//skip512 S11348C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11348C3  {
  char s11348c3f0[12];
  int s11348c3f1[12];
  char s11348c3f2;
};
//SIG(-1 S11348C3) C1{ Fc[12] Fi[12] Fc}



static void Test_S11348C3()
{
  {
    init_simple_test("S11348C3");
    S11348C3 lv;
    check2(sizeof(lv), 64, "sizeof(S11348C3)");
    check2(__alignof__(lv), 4, "__alignof__(S11348C3)");
    check_field_offset(lv, s11348c3f0, 0, "S11348C3.s11348c3f0");
    check_field_offset(lv, s11348c3f1, 12, "S11348C3.s11348c3f1");
    check_field_offset(lv, s11348c3f2, 60, "S11348C3.s11348c3f2");
  }
}
static Arrange_To_Call_Me vS11348C3(Test_S11348C3, "S11348C3", 64);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11348C1  {
  ::S11348C2_nt s11348c1f0;
  ::S11348C3 s11348c1f1;
};
//SIG(1 S11348C1) C1{ FC2{ Fi Fc} FC3{ Fc[12] Fi[12] Fc}}



static void Test_S11348C1()
{
  {
    init_simple_test("S11348C1");
    S11348C1 lv;
    check2(sizeof(lv), 72, "sizeof(S11348C1)");
    check2(__alignof__(lv), 4, "__alignof__(S11348C1)");
    check_field_offset(lv, s11348c1f0, 0, "S11348C1.s11348c1f0");
    check_field_offset(lv, s11348c1f1, 8, "S11348C1.s11348c1f1");
  }
}
static Arrange_To_Call_Me vS11348C1(Test_S11348C1, "S11348C1", 72);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4639C3  {
  virtual  ~S4639C3(); // _ZN7S4639C3D1Ev
  virtual void  v2(); // _ZN7S4639C32v2Ev
  S4639C3(); // tgen
};
//SIG(-1 S4639C3) C1{ vd v1}


 S4639C3 ::~S4639C3(){ note_dtor("S4639C3", this);}
void  S4639C3 ::v2(){vfunc_called(this, "_ZN7S4639C32v2Ev");}
S4639C3 ::S4639C3(){ note_ctor("S4639C3", this);} // tgen

static void Test_S4639C3()
{
  extern Class_Descriptor cd_S4639C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S4639C3, buf);
    S4639C3 *dp, &lv = *(dp=new (buf) S4639C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S4639C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4639C3)");
    test_class_info(&lv, &cd_S4639C3);
    dp->~S4639C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4639C3(Test_S4639C3, "S4639C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S4639C3C1Ev();
extern void _ZN7S4639C3D1Ev();
Name_Map name_map_S4639C3[] = {
  NSPAIR(_ZN7S4639C3C1Ev),
  NSPAIR(_ZN7S4639C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4639C3[];
extern void _ZN7S4639C3D1Ev();
extern void _ZN7S4639C3D0Ev();
extern void _ZN7S4639C32v2Ev();
static  VTBL_ENTRY vtc_S4639C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4639C3[0]),
  (VTBL_ENTRY)&_ZN7S4639C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4639C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4639C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S4639C3[];
extern  VTBL_ENTRY _ZTV7S4639C3[];
Class_Descriptor cd_S4639C3 = {  "S4639C3", // class name
  0,0,//no base classes
  &(vtc_S4639C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4639C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4639C3),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  S4639C2_nt  : S4639C3 {
  virtual  ~S4639C2_nt(); // _ZN10S4639C2_ntD1Ev
  S4639C2_nt(); // tgen
};
//SIG(-1 S4639C2_nt) C1{ BC2{ vd v1} vd}


 S4639C2_nt ::~S4639C2_nt(){ note_dtor("S4639C2_nt", this);}
S4639C2_nt ::S4639C2_nt(){ note_ctor("S4639C2_nt", this);} // tgen

//skip512 S4639C2_nt

#else // __cplusplus

extern void _ZN10S4639C2_ntC1Ev();
extern void _ZN10S4639C2_ntD1Ev();
Name_Map name_map_S4639C2_nt[] = {
  NSPAIR(_ZN10S4639C2_ntC1Ev),
  NSPAIR(_ZN10S4639C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4639C3;
extern VTBL_ENTRY _ZTI7S4639C3[];
extern  VTBL_ENTRY _ZTV7S4639C3[];
static Base_Class bases_S4639C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4639C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4639C2_nt[];
extern void _ZN10S4639C2_ntD1Ev();
extern void _ZN10S4639C2_ntD0Ev();
extern void _ZN7S4639C32v2Ev();
static  VTBL_ENTRY vtc_S4639C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4639C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4639C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4639C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S4639C32v2Ev,
};
extern VTBL_ENTRY _ZTI10S4639C2_nt[];
VTBL_ENTRY *P__ZTI10S4639C2_nt = _ZTI10S4639C2_nt; 
extern  VTBL_ENTRY _ZTV10S4639C2_nt[];
Class_Descriptor cd_S4639C2_nt = {  "S4639C2_nt", // class name
  bases_S4639C2_nt, 1,
  &(vtc_S4639C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S4639C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4639C2_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  S4639C1  : S4639C2_nt {
  void *s4639c1f0[2];
  int s4639c1f1;
  virtual  ~S4639C1(); // _ZN7S4639C1D1Ev
  virtual void  v1(); // _ZN7S4639C12v1Ev
  S4639C1(); // tgen
};
//SIG(1 S4639C1) C1{ BC2{ BC3{ vd v2} vd} vd v1 Fp[2] Fi}


 S4639C1 ::~S4639C1(){ note_dtor("S4639C1", this);}
void  S4639C1 ::v1(){vfunc_called(this, "_ZN7S4639C12v1Ev");}
S4639C1 ::S4639C1(){ note_ctor("S4639C1", this);} // tgen

static void Test_S4639C1()
{
  extern Class_Descriptor cd_S4639C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S4639C1, buf);
    S4639C1 *dp, &lv = *(dp=new (buf) S4639C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S4639C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4639C1)");
    check_base_class_offset(lv, (S4639C3*)(S4639C2_nt*), 0, "S4639C1");
    check_base_class_offset(lv, (S4639C2_nt*), 0, "S4639C1");
    check_field_offset(lv, s4639c1f0, ABISELECT(8,4), "S4639C1.s4639c1f0");
    check_field_offset(lv, s4639c1f1, ABISELECT(24,12), "S4639C1.s4639c1f1");
    test_class_info(&lv, &cd_S4639C1);
    dp->~S4639C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4639C1(Test_S4639C1, "S4639C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S4639C1C1Ev();
extern void _ZN7S4639C1D1Ev();
Name_Map name_map_S4639C1[] = {
  NSPAIR(_ZN7S4639C1C1Ev),
  NSPAIR(_ZN7S4639C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4639C3;
extern VTBL_ENTRY _ZTI7S4639C3[];
extern  VTBL_ENTRY _ZTV7S4639C3[];
extern Class_Descriptor cd_S4639C2_nt;
extern VTBL_ENTRY _ZTI10S4639C2_nt[];
extern  VTBL_ENTRY _ZTV10S4639C2_nt[];
static Base_Class bases_S4639C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4639C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4639C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S4639C1[];
extern void _ZN7S4639C1D1Ev();
extern void _ZN7S4639C1D0Ev();
extern void _ZN7S4639C32v2Ev();
extern void _ZN7S4639C12v1Ev();
static  VTBL_ENTRY vtc_S4639C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4639C1[0]),
  (VTBL_ENTRY)&_ZN7S4639C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4639C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4639C32v2Ev,
  (VTBL_ENTRY)&_ZN7S4639C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S4639C1[];
extern  VTBL_ENTRY _ZTV7S4639C1[];
Class_Descriptor cd_S4639C1 = {  "S4639C1", // class name
  bases_S4639C1, 2,
  &(vtc_S4639C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S4639C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4639C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18944C1  {
  int s18944c1f0:32;
  int s18944c1f1;
  char s18944c1f2;
  void *s18944c1f3[10];
  __tsi64 s18944c1f4;
  int s18944c1f5;
  virtual  ~S18944C1(); // _ZN8S18944C1D1Ev
  virtual void  v1(); // _ZN8S18944C12v1Ev
  S18944C1(); // tgen
};
//SIG(1 S18944C1) C1{ vd v1 Fi:32 Fi Fc Fp[10] FL Fi}


 S18944C1 ::~S18944C1(){ note_dtor("S18944C1", this);}
void  S18944C1 ::v1(){vfunc_called(this, "_ZN8S18944C12v1Ev");}
S18944C1 ::S18944C1(){ note_ctor("S18944C1", this);} // tgen

static void Test_S18944C1()
{
  extern Class_Descriptor cd_S18944C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,18)];
    init_test(&cd_S18944C1, buf);
    S18944C1 *dp, &lv = *(dp=new (buf) S18944C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S18944C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18944C1)");
    set_bf_and_test(lv, s18944c1f0, ABISELECT(8,4), 0, 32, 1, "S18944C1");
    set_bf_and_test(lv, s18944c1f0, ABISELECT(8,4), 0, 32, hide_sll(1LL<<31), "S18944C1");
    check_field_offset(lv, s18944c1f1, ABISELECT(12,8), "S18944C1.s18944c1f1");
    check_field_offset(lv, s18944c1f2, ABISELECT(16,12), "S18944C1.s18944c1f2");
    check_field_offset(lv, s18944c1f3, ABISELECT(24,16), "S18944C1.s18944c1f3");
    check_field_offset(lv, s18944c1f4, ABISELECT(104,56), "S18944C1.s18944c1f4");
    check_field_offset(lv, s18944c1f5, ABISELECT(112,64), "S18944C1.s18944c1f5");
    test_class_info(&lv, &cd_S18944C1);
    dp->~S18944C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18944C1(Test_S18944C1, "S18944C1", ABISELECT(120,68));

#else // __cplusplus

extern void _ZN8S18944C1C1Ev();
extern void _ZN8S18944C1D1Ev();
Name_Map name_map_S18944C1[] = {
  NSPAIR(_ZN8S18944C1C1Ev),
  NSPAIR(_ZN8S18944C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18944C1[];
extern void _ZN8S18944C1D1Ev();
extern void _ZN8S18944C1D0Ev();
extern void _ZN8S18944C12v1Ev();
static  VTBL_ENTRY vtc_S18944C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18944C1[0]),
  (VTBL_ENTRY)&_ZN8S18944C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18944C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18944C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18944C1[];
extern  VTBL_ENTRY _ZTV8S18944C1[];
Class_Descriptor cd_S18944C1 = {  "S18944C1", // class name
  0,0,//no base classes
  &(vtc_S18944C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,68), // object size
  NSPAIRA(_ZTI8S18944C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18944C1),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  S2788C2  : S3214C7_nt {
  int s2788c2f0;
  void *s2788c2f1;
};
//SIG(-1 S2788C2) C1{ BC2{ m Fp Fi[2]} Fi Fp}



static void Test_S2788C2()
{
  extern Class_Descriptor cd_S2788C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S2788C2, buf);
    S2788C2 &lv = *(new (buf) S2788C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S2788C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2788C2)");
    check_base_class_offset(lv, (S3214C7_nt*), 0, "S2788C2");
    check_field_offset(lv, s2788c2f0, ABISELECT(16,12), "S2788C2.s2788c2f0");
    check_field_offset(lv, s2788c2f1, ABISELECT(24,16), "S2788C2.s2788c2f1");
    test_class_info(&lv, &cd_S2788C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2788C2(Test_S2788C2, "S2788C2", ABISELECT(32,20));

#else // __cplusplus

extern Class_Descriptor cd_S3214C7_nt;
static Base_Class bases_S2788C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2788C2 = {  "S2788C2", // class name
  bases_S2788C2, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(32,20), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2788C1  : S2788C2 {
  int s2788c1f0[2];
};
//SIG(1 S2788C1) C1{ BC2{ BC3{ m Fp Fi[2]} Fi Fp} Fi[2]}



static void Test_S2788C1()
{
  extern Class_Descriptor cd_S2788C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S2788C1, buf);
    S2788C1 &lv = *(new (buf) S2788C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S2788C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2788C1)");
    check_base_class_offset(lv, (S3214C7_nt*)(S2788C2*), 0, "S2788C1");
    check_base_class_offset(lv, (S2788C2*), 0, "S2788C1");
    check_field_offset(lv, s2788c1f0, ABISELECT(32,20), "S2788C1.s2788c1f0");
    test_class_info(&lv, &cd_S2788C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2788C1(Test_S2788C1, "S2788C1", ABISELECT(40,28));

#else // __cplusplus

extern Class_Descriptor cd_S3214C7_nt;
extern Class_Descriptor cd_S2788C2;
static Base_Class bases_S2788C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2788C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2788C1 = {  "S2788C1", // class name
  bases_S2788C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(40,28), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17108C1  {
  int s17108c1f0[2];
  ::S4227C19_nt s17108c1f1;
  __tsi64 s17108c1f2;
  void  mf17108c1(); // _ZN8S17108C19mf17108c1Ev
};
//SIG(1 S17108C1) C1{ m Fi[2] FC2{ m Fp Fi FC3{ m}} FL}


void  S17108C1 ::mf17108c1(){}

static void Test_S17108C1()
{
  {
    init_simple_test("S17108C1");
    S17108C1 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S17108C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17108C1)");
    check_field_offset(lv, s17108c1f0, 0, "S17108C1.s17108c1f0");
    check_field_offset(lv, s17108c1f1, 8, "S17108C1.s17108c1f1");
    check_field_offset(lv, s17108c1f2, ABISELECT(24,20), "S17108C1.s17108c1f2");
  }
}
static Arrange_To_Call_Me vS17108C1(Test_S17108C1, "S17108C1", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12810C1  {
  int s12810c1f0;
  void *s12810c1f1[9];
  int s12810c1f2[3];
  void *s12810c1f3[9];
  int s12810c1f4;
  void *s12810c1f5[3];
};
//SIG(1 S12810C1) C1{ Fi Fp[9] Fi[3] Fp[9] Fi Fp[3]}



static void Test_S12810C1()
{
  {
    init_simple_test("S12810C1");
    S12810C1 lv;
    check2(sizeof(lv), ABISELECT(200,104), "sizeof(S12810C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12810C1)");
    check_field_offset(lv, s12810c1f0, 0, "S12810C1.s12810c1f0");
    check_field_offset(lv, s12810c1f1, ABISELECT(8,4), "S12810C1.s12810c1f1");
    check_field_offset(lv, s12810c1f2, ABISELECT(80,40), "S12810C1.s12810c1f2");
    check_field_offset(lv, s12810c1f3, ABISELECT(96,52), "S12810C1.s12810c1f3");
    check_field_offset(lv, s12810c1f4, ABISELECT(168,88), "S12810C1.s12810c1f4");
    check_field_offset(lv, s12810c1f5, ABISELECT(176,92), "S12810C1.s12810c1f5");
  }
}
static Arrange_To_Call_Me vS12810C1(Test_S12810C1, "S12810C1", ABISELECT(200,104));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12496C1  {
  int s12496c1f0;
  ::S21605C4_nt s12496c1f1;
  ::S10258C12_nt s12496c1f2;
  void *s12496c1f3;
  int s12496c1f4[4];
};
//SIG(1 S12496C1) C1{ Fi FC2{ Fl[4]} FC3{ Fi} Fp Fi[4]}



static void Test_S12496C1()
{
  {
    init_simple_test("S12496C1");
    S12496C1 lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S12496C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12496C1)");
    check_field_offset(lv, s12496c1f0, 0, "S12496C1.s12496c1f0");
    check_field_offset(lv, s12496c1f1, ABISELECT(8,4), "S12496C1.s12496c1f1");
    check_field_offset(lv, s12496c1f2, ABISELECT(40,20), "S12496C1.s12496c1f2");
    check_field_offset(lv, s12496c1f3, ABISELECT(48,24), "S12496C1.s12496c1f3");
    check_field_offset(lv, s12496c1f4, ABISELECT(56,28), "S12496C1.s12496c1f4");
  }
}
static Arrange_To_Call_Me vS12496C1(Test_S12496C1, "S12496C1", ABISELECT(72,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18759C2_nt  {
};
//SIG(-1 S18759C2_nt) C1{}



//skip512 S18759C2_nt

#else // __cplusplus

Class_Descriptor cd_S18759C2_nt = {  "S18759C2_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  S18759C1  {
  ::S18759C2_nt s18759c1f0;
  long double s18759c1f1[5];
  virtual void  v1(); // _ZN8S18759C12v1Ev
  virtual void  v2(); // _ZN8S18759C12v2Ev
  virtual void  v3(); // _ZN8S18759C12v3Ev
  virtual void  v4(); // _ZN8S18759C12v4Ev
  virtual void  v5(); // _ZN8S18759C12v5Ev
  virtual void  v6(); // _ZN8S18759C12v6Ev
  ~S18759C1(); // tgen
  S18759C1(); // tgen
};
//SIG(1 S18759C1) C1{ v1 v2 v3 v4 v5 v6 FC2{} FD[5]}


void  S18759C1 ::v1(){vfunc_called(this, "_ZN8S18759C12v1Ev");}
void  S18759C1 ::v2(){vfunc_called(this, "_ZN8S18759C12v2Ev");}
void  S18759C1 ::v3(){vfunc_called(this, "_ZN8S18759C12v3Ev");}
void  S18759C1 ::v4(){vfunc_called(this, "_ZN8S18759C12v4Ev");}
void  S18759C1 ::v5(){vfunc_called(this, "_ZN8S18759C12v5Ev");}
void  S18759C1 ::v6(){vfunc_called(this, "_ZN8S18759C12v6Ev");}
S18759C1 ::~S18759C1(){ note_dtor("S18759C1", this);} // tgen
S18759C1 ::S18759C1(){ note_ctor("S18759C1", this);} // tgen

static void Test_S18759C1()
{
  extern Class_Descriptor cd_S18759C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,18)];
    init_test(&cd_S18759C1, buf);
    S18759C1 *dp, &lv = *(dp=new (buf) S18759C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,68), "sizeof(S18759C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18759C1)");
    check_field_offset(lv, s18759c1f0, ABISELECT(8,4), "S18759C1.s18759c1f0");
    check_field_offset(lv, s18759c1f1, ABISELECT(16,8), "S18759C1.s18759c1f1");
    test_class_info(&lv, &cd_S18759C1);
    dp->~S18759C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18759C1(Test_S18759C1, "S18759C1", ABISELECT(96,68));

#else // __cplusplus

extern void _ZN8S18759C1C1Ev();
extern void _ZN8S18759C1D1Ev();
Name_Map name_map_S18759C1[] = {
  NSPAIR(_ZN8S18759C1C1Ev),
  NSPAIR(_ZN8S18759C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18759C1[];
extern void _ZN8S18759C12v1Ev();
extern void _ZN8S18759C12v2Ev();
extern void _ZN8S18759C12v3Ev();
extern void _ZN8S18759C12v4Ev();
extern void _ZN8S18759C12v5Ev();
extern void _ZN8S18759C12v6Ev();
static  VTBL_ENTRY vtc_S18759C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18759C1[0]),
  (VTBL_ENTRY)&_ZN8S18759C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18759C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18759C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18759C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18759C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18759C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S18759C1[];
extern  VTBL_ENTRY _ZTV8S18759C1[];
Class_Descriptor cd_S18759C1 = {  "S18759C1", // class name
  0,0,//no base classes
  &(vtc_S18759C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,68), // object size
  NSPAIRA(_ZTI8S18759C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18759C1),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  S6684C2  {
  int s6684c2f0;
  virtual void  v3(); // _ZN7S6684C22v3Ev
  virtual void  v4(); // _ZN7S6684C22v4Ev
  virtual void  v5(); // _ZN7S6684C22v5Ev
  virtual void  v6(); // _ZN7S6684C22v6Ev
  ~S6684C2(); // tgen
  S6684C2(); // tgen
};
//SIG(-1 S6684C2) C1{ v1 v2 v3 v4 Fi}


void  S6684C2 ::v3(){vfunc_called(this, "_ZN7S6684C22v3Ev");}
void  S6684C2 ::v4(){vfunc_called(this, "_ZN7S6684C22v4Ev");}
void  S6684C2 ::v5(){vfunc_called(this, "_ZN7S6684C22v5Ev");}
void  S6684C2 ::v6(){vfunc_called(this, "_ZN7S6684C22v6Ev");}
S6684C2 ::~S6684C2(){ note_dtor("S6684C2", this);} // tgen
S6684C2 ::S6684C2(){ note_ctor("S6684C2", this);} // tgen

static void Test_S6684C2()
{
  extern Class_Descriptor cd_S6684C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6684C2, buf);
    S6684C2 *dp, &lv = *(dp=new (buf) S6684C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6684C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6684C2)");
    check_field_offset(lv, s6684c2f0, ABISELECT(8,4), "S6684C2.s6684c2f0");
    test_class_info(&lv, &cd_S6684C2);
    dp->~S6684C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6684C2(Test_S6684C2, "S6684C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6684C2C1Ev();
extern void _ZN7S6684C2D1Ev();
Name_Map name_map_S6684C2[] = {
  NSPAIR(_ZN7S6684C2C1Ev),
  NSPAIR(_ZN7S6684C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6684C2[];
extern void _ZN7S6684C22v3Ev();
extern void _ZN7S6684C22v4Ev();
extern void _ZN7S6684C22v5Ev();
extern void _ZN7S6684C22v6Ev();
static  VTBL_ENTRY vtc_S6684C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6684C2[0]),
  (VTBL_ENTRY)&_ZN7S6684C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6684C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6684C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6684C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S6684C2[];
extern  VTBL_ENTRY _ZTV7S6684C2[];
Class_Descriptor cd_S6684C2 = {  "S6684C2", // class name
  0,0,//no base classes
  &(vtc_S6684C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6684C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6684C2),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  S6684C1  : S6684C2 {
  virtual  ~S6684C1(); // _ZN7S6684C1D1Ev
  virtual void  v1(); // _ZN7S6684C12v1Ev
  virtual void  v2(); // _ZN7S6684C12v2Ev
  S6684C1(); // tgen
};
//SIG(1 S6684C1) C1{ BC2{ v3 v4 v5 v6 Fi} vd v1 v2}


 S6684C1 ::~S6684C1(){ note_dtor("S6684C1", this);}
void  S6684C1 ::v1(){vfunc_called(this, "_ZN7S6684C12v1Ev");}
void  S6684C1 ::v2(){vfunc_called(this, "_ZN7S6684C12v2Ev");}
S6684C1 ::S6684C1(){ note_ctor("S6684C1", this);} // tgen

static void Test_S6684C1()
{
  extern Class_Descriptor cd_S6684C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6684C1, buf);
    S6684C1 *dp, &lv = *(dp=new (buf) S6684C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6684C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6684C1)");
    check_base_class_offset(lv, (S6684C2*), 0, "S6684C1");
    test_class_info(&lv, &cd_S6684C1);
    dp->~S6684C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6684C1(Test_S6684C1, "S6684C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6684C1C1Ev();
extern void _ZN7S6684C1D1Ev();
Name_Map name_map_S6684C1[] = {
  NSPAIR(_ZN7S6684C1C1Ev),
  NSPAIR(_ZN7S6684C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6684C2;
extern VTBL_ENTRY _ZTI7S6684C2[];
extern  VTBL_ENTRY _ZTV7S6684C2[];
static Base_Class bases_S6684C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6684C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6684C1[];
extern void _ZN7S6684C22v3Ev();
extern void _ZN7S6684C22v4Ev();
extern void _ZN7S6684C22v5Ev();
extern void _ZN7S6684C22v6Ev();
extern void _ZN7S6684C1D1Ev();
extern void _ZN7S6684C1D0Ev();
extern void _ZN7S6684C12v1Ev();
extern void _ZN7S6684C12v2Ev();
static  VTBL_ENTRY vtc_S6684C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6684C1[0]),
  (VTBL_ENTRY)&_ZN7S6684C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6684C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6684C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6684C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6684C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6684C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6684C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6684C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6684C1[];
extern  VTBL_ENTRY _ZTV7S6684C1[];
Class_Descriptor cd_S6684C1 = {  "S6684C1", // class name
  bases_S6684C1, 1,
  &(vtc_S6684C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6684C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6684C1),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  S14697C1  {
  void *s14697c1f0[5];
  int s14697c1f1;
  void *s14697c1f2[4];
  ::S18385C2_nt s14697c1f3;
  int s14697c1f4;
};
//SIG(1 S14697C1) C1{ Fp[5] Fi Fp[4] FC2{ Fi[3]} Fi}



static void Test_S14697C1()
{
  {
    init_simple_test("S14697C1");
    S14697C1 lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S14697C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14697C1)");
    check_field_offset(lv, s14697c1f0, 0, "S14697C1.s14697c1f0");
    check_field_offset(lv, s14697c1f1, ABISELECT(40,20), "S14697C1.s14697c1f1");
    check_field_offset(lv, s14697c1f2, ABISELECT(48,24), "S14697C1.s14697c1f2");
    check_field_offset(lv, s14697c1f3, ABISELECT(80,40), "S14697C1.s14697c1f3");
    check_field_offset(lv, s14697c1f4, ABISELECT(92,52), "S14697C1.s14697c1f4");
  }
}
static Arrange_To_Call_Me vS14697C1(Test_S14697C1, "S14697C1", ABISELECT(96,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21674C2_nt  {
  int s21674c2f0[3];
  void  mf21674c2(); // _ZN11S21674C2_nt9mf21674c2Ev
  virtual  ~S21674C2_nt(); // _ZN11S21674C2_ntD1Ev
  S21674C2_nt(); // tgen
};
//SIG(-1 S21674C2_nt) C1{ vd m Fi[3]}


void  S21674C2_nt ::mf21674c2(){}
 S21674C2_nt ::~S21674C2_nt(){ note_dtor("S21674C2_nt", this);}
S21674C2_nt ::S21674C2_nt(){ note_ctor("S21674C2_nt", this);} // tgen

//skip512 S21674C2_nt

#else // __cplusplus

extern void _ZN11S21674C2_ntC1Ev();
extern void _ZN11S21674C2_ntD1Ev();
Name_Map name_map_S21674C2_nt[] = {
  NSPAIR(_ZN11S21674C2_ntC1Ev),
  NSPAIR(_ZN11S21674C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S21674C2_nt[];
extern void _ZN11S21674C2_ntD1Ev();
extern void _ZN11S21674C2_ntD0Ev();
static  VTBL_ENTRY vtc_S21674C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S21674C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S21674C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S21674C2_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S21674C2_nt[];
VTBL_ENTRY *P__ZTI11S21674C2_nt = _ZTI11S21674C2_nt; 
extern  VTBL_ENTRY _ZTV11S21674C2_nt[];
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21674C1  {
  int s21674c1f0[3];
  ::S21674C2_nt s21674c1f1;
  void  mf21674c1(); // _ZN8S21674C19mf21674c1Ev
  virtual  ~S21674C1(); // _ZN8S21674C1D1Ev
  S21674C1(); // tgen
};
//SIG(1 S21674C1) C1{ vd m Fi[3] FC2{ vd m Fi[3]}}


void  S21674C1 ::mf21674c1(){}
 S21674C1 ::~S21674C1(){ note_dtor("S21674C1", this);}
S21674C1 ::S21674C1(){ note_ctor("S21674C1", this);} // tgen

static void Test_S21674C1()
{
  extern Class_Descriptor cd_S21674C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S21674C1, buf);
    S21674C1 *dp, &lv = *(dp=new (buf) S21674C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S21674C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21674C1)");
    check_field_offset(lv, s21674c1f0, ABISELECT(8,4), "S21674C1.s21674c1f0");
    check_field_offset(lv, s21674c1f1, ABISELECT(24,16), "S21674C1.s21674c1f1");
    test_class_info(&lv, &cd_S21674C1);
    dp->~S21674C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21674C1(Test_S21674C1, "S21674C1", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN8S21674C1C1Ev();
extern void _ZN8S21674C1D1Ev();
Name_Map name_map_S21674C1[] = {
  NSPAIR(_ZN8S21674C1C1Ev),
  NSPAIR(_ZN8S21674C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21674C1[];
extern void _ZN8S21674C1D1Ev();
extern void _ZN8S21674C1D0Ev();
static  VTBL_ENTRY vtc_S21674C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21674C1[0]),
  (VTBL_ENTRY)&_ZN8S21674C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21674C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21674C1[];
extern  VTBL_ENTRY _ZTV8S21674C1[];
Class_Descriptor cd_S21674C1 = {  "S21674C1", // class name
  0,0,//no base classes
  &(vtc_S21674C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI8S21674C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21674C1),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  S14721C1  {
  void *s14721c1f0[6];
  int s14721c1f1[3];
  long s14721c1f2;
  void *s14721c1f3[3];
  int s14721c1f4[2];
};
//SIG(1 S14721C1) C1{ Fp[6] Fi[3] Fl Fp[3] Fi[2]}



static void Test_S14721C1()
{
  {
    init_simple_test("S14721C1");
    S14721C1 lv;
    check2(sizeof(lv), ABISELECT(104,60), "sizeof(S14721C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14721C1)");
    check_field_offset(lv, s14721c1f0, 0, "S14721C1.s14721c1f0");
    check_field_offset(lv, s14721c1f1, ABISELECT(48,24), "S14721C1.s14721c1f1");
    check_field_offset(lv, s14721c1f2, ABISELECT(64,36), "S14721C1.s14721c1f2");
    check_field_offset(lv, s14721c1f3, ABISELECT(72,40), "S14721C1.s14721c1f3");
    check_field_offset(lv, s14721c1f4, ABISELECT(96,52), "S14721C1.s14721c1f4");
  }
}
static Arrange_To_Call_Me vS14721C1(Test_S14721C1, "S14721C1", ABISELECT(104,60));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5868C1  : S3214C8_nt {
  int s5868c1f0;
  ::S20997C37 s5868c1f1;
};
//SIG(1 S5868C1) C1{ BC2{ m Fi} Fi FC3{ m FC4{ m}}}



static void Test_S5868C1()
{
  extern Class_Descriptor cd_S5868C1;
  void *lvp;
  {
    int buf[4];
    init_test(&cd_S5868C1, buf);
    S5868C1 &lv = *(new (buf) S5868C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 12, "sizeof(S5868C1)");
    check2(__alignof__(lv), 4, "__alignof__(S5868C1)");
    check_base_class_offset(lv, (S3214C8_nt*), 0, "S5868C1");
    check_field_offset(lv, s5868c1f0, 4, "S5868C1.s5868c1f0");
    check_field_offset(lv, s5868c1f1, 8, "S5868C1.s5868c1f1");
    test_class_info(&lv, &cd_S5868C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5868C1(Test_S5868C1, "S5868C1", 12);

#else // __cplusplus

extern Class_Descriptor cd_S3214C8_nt;
extern VTBL_ENTRY _ZTI10S3214C8_nt[];
static Base_Class bases_S5868C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3214C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5868C1 = {  "S5868C1", // class name
  bases_S5868C1, 1,
  0, // no vftv
  0, //no vtt
  12, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17739C1  {
  void *s17739c1f0;
  int s17739c1f1;
  void *s17739c1f2;
  int s17739c1f3;
  void *s17739c1f4;
  int s17739c1f5;
  void *s17739c1f6;
  int s17739c1f7;
  void  mf17739c1(); // _ZN8S17739C19mf17739c1Ev
};
//SIG(1 S17739C1) C1{ m Fp Fi Fp Fi Fp Fi Fp Fi}


void  S17739C1 ::mf17739c1(){}

static void Test_S17739C1()
{
  {
    init_simple_test("S17739C1");
    S17739C1 lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S17739C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17739C1)");
    check_field_offset(lv, s17739c1f0, 0, "S17739C1.s17739c1f0");
    check_field_offset(lv, s17739c1f1, ABISELECT(8,4), "S17739C1.s17739c1f1");
    check_field_offset(lv, s17739c1f2, ABISELECT(16,8), "S17739C1.s17739c1f2");
    check_field_offset(lv, s17739c1f3, ABISELECT(24,12), "S17739C1.s17739c1f3");
    check_field_offset(lv, s17739c1f4, ABISELECT(32,16), "S17739C1.s17739c1f4");
    check_field_offset(lv, s17739c1f5, ABISELECT(40,20), "S17739C1.s17739c1f5");
    check_field_offset(lv, s17739c1f6, ABISELECT(48,24), "S17739C1.s17739c1f6");
    check_field_offset(lv, s17739c1f7, ABISELECT(56,28), "S17739C1.s17739c1f7");
  }
}
static Arrange_To_Call_Me vS17739C1(Test_S17739C1, "S17739C1", ABISELECT(64,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13913C2_nt  {
  int s13913c2f0[2];
};
//SIG(-1 S13913C2_nt) C1{ Fi[2]}



//skip512 S13913C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13913C1  {
  __tsi64 s13913c1f0[2];
  ::S13913C2_nt s13913c1f1;
  int s13913c1f2;
  char s13913c1f3[4];
};
//SIG(1 S13913C1) C1{ FL[2] FC2{ Fi[2]} Fi Fc[4]}



static void Test_S13913C1()
{
  {
    init_simple_test("S13913C1");
    S13913C1 lv;
    check2(sizeof(lv), 32, "sizeof(S13913C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13913C1)");
    check_field_offset(lv, s13913c1f0, 0, "S13913C1.s13913c1f0");
    check_field_offset(lv, s13913c1f1, 16, "S13913C1.s13913c1f1");
    check_field_offset(lv, s13913c1f2, 24, "S13913C1.s13913c1f2");
    check_field_offset(lv, s13913c1f3, 28, "S13913C1.s13913c1f3");
  }
}
static Arrange_To_Call_Me vS13913C1(Test_S13913C1, "S13913C1", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17933C2  {
  long s17933c2f0;
  short s17933c2f1[2];
  int s17933c2f2;
};
//SIG(-1 S17933C2) C1{ Fl Fs[2] Fi}



static void Test_S17933C2()
{
  {
    init_simple_test("S17933C2");
    S17933C2 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S17933C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17933C2)");
    check_field_offset(lv, s17933c2f0, 0, "S17933C2.s17933c2f0");
    check_field_offset(lv, s17933c2f1, ABISELECT(8,4), "S17933C2.s17933c2f1");
    check_field_offset(lv, s17933c2f2, ABISELECT(12,8), "S17933C2.s17933c2f2");
  }
}
static Arrange_To_Call_Me vS17933C2(Test_S17933C2, "S17933C2", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17933C1  {
  void *s17933c1f0[2];
  ::S17933C2 s17933c1f1;
  void  mf17933c1(); // _ZN8S17933C19mf17933c1Ev
};
//SIG(1 S17933C1) C1{ m Fp[2] FC2{ Fl Fs[2] Fi}}


void  S17933C1 ::mf17933c1(){}

static void Test_S17933C1()
{
  {
    init_simple_test("S17933C1");
    S17933C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S17933C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17933C1)");
    check_field_offset(lv, s17933c1f0, 0, "S17933C1.s17933c1f0");
    check_field_offset(lv, s17933c1f1, ABISELECT(16,8), "S17933C1.s17933c1f1");
  }
}
static Arrange_To_Call_Me vS17933C1(Test_S17933C1, "S17933C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18689C1  {
  void *s18689c1f0;
  __tsi64 s18689c1f1;
  char s18689c1f2;
  int s18689c1f3;
  virtual void  v1(); // _ZN8S18689C12v1Ev
  virtual void  v2(); // _ZN8S18689C12v2Ev
  virtual void  v3(); // _ZN8S18689C12v3Ev
  virtual void  v4(); // _ZN8S18689C12v4Ev
  ~S18689C1(); // tgen
  S18689C1(); // tgen
};
//SIG(1 S18689C1) C1{ v1 v2 v3 v4 Fp FL Fc Fi}


void  S18689C1 ::v1(){vfunc_called(this, "_ZN8S18689C12v1Ev");}
void  S18689C1 ::v2(){vfunc_called(this, "_ZN8S18689C12v2Ev");}
void  S18689C1 ::v3(){vfunc_called(this, "_ZN8S18689C12v3Ev");}
void  S18689C1 ::v4(){vfunc_called(this, "_ZN8S18689C12v4Ev");}
S18689C1 ::~S18689C1(){ note_dtor("S18689C1", this);} // tgen
S18689C1 ::S18689C1(){ note_ctor("S18689C1", this);} // tgen

static void Test_S18689C1()
{
  extern Class_Descriptor cd_S18689C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S18689C1, buf);
    S18689C1 *dp, &lv = *(dp=new (buf) S18689C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S18689C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18689C1)");
    check_field_offset(lv, s18689c1f0, ABISELECT(8,4), "S18689C1.s18689c1f0");
    check_field_offset(lv, s18689c1f1, ABISELECT(16,8), "S18689C1.s18689c1f1");
    check_field_offset(lv, s18689c1f2, ABISELECT(24,16), "S18689C1.s18689c1f2");
    check_field_offset(lv, s18689c1f3, ABISELECT(28,20), "S18689C1.s18689c1f3");
    test_class_info(&lv, &cd_S18689C1);
    dp->~S18689C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18689C1(Test_S18689C1, "S18689C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN8S18689C1C1Ev();
extern void _ZN8S18689C1D1Ev();
Name_Map name_map_S18689C1[] = {
  NSPAIR(_ZN8S18689C1C1Ev),
  NSPAIR(_ZN8S18689C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18689C1[];
extern void _ZN8S18689C12v1Ev();
extern void _ZN8S18689C12v2Ev();
extern void _ZN8S18689C12v3Ev();
extern void _ZN8S18689C12v4Ev();
static  VTBL_ENTRY vtc_S18689C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18689C1[0]),
  (VTBL_ENTRY)&_ZN8S18689C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18689C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18689C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18689C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18689C1[];
extern  VTBL_ENTRY _ZTV8S18689C1[];
Class_Descriptor cd_S18689C1 = {  "S18689C1", // class name
  0,0,//no base classes
  &(vtc_S18689C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI8S18689C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18689C1),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  S18877C1  {
  long double s18877c1f0;
  char s18877c1f1;
  virtual  ~S18877C1(); // _ZN8S18877C1D1Ev
  virtual void  v1(); // _ZN8S18877C12v1Ev
  virtual void  v2(); // _ZN8S18877C12v2Ev
  virtual void  v3(); // _ZN8S18877C12v3Ev
  virtual void  v4(); // _ZN8S18877C12v4Ev
  virtual void  v5(); // _ZN8S18877C12v5Ev
  S18877C1(); // tgen
};
//SIG(1 S18877C1) C1{ vd v1 v2 v3 v4 v5 FD Fc}


 S18877C1 ::~S18877C1(){ note_dtor("S18877C1", this);}
void  S18877C1 ::v1(){vfunc_called(this, "_ZN8S18877C12v1Ev");}
void  S18877C1 ::v2(){vfunc_called(this, "_ZN8S18877C12v2Ev");}
void  S18877C1 ::v3(){vfunc_called(this, "_ZN8S18877C12v3Ev");}
void  S18877C1 ::v4(){vfunc_called(this, "_ZN8S18877C12v4Ev");}
void  S18877C1 ::v5(){vfunc_called(this, "_ZN8S18877C12v5Ev");}
S18877C1 ::S18877C1(){ note_ctor("S18877C1", this);} // tgen

static void Test_S18877C1()
{
  extern Class_Descriptor cd_S18877C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S18877C1, buf);
    S18877C1 *dp, &lv = *(dp=new (buf) S18877C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S18877C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18877C1)");
    check_field_offset(lv, s18877c1f0, ABISELECT(16,4), "S18877C1.s18877c1f0");
    check_field_offset(lv, s18877c1f1, ABISELECT(32,16), "S18877C1.s18877c1f1");
    test_class_info(&lv, &cd_S18877C1);
    dp->~S18877C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18877C1(Test_S18877C1, "S18877C1", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S18877C1C1Ev();
extern void _ZN8S18877C1D1Ev();
Name_Map name_map_S18877C1[] = {
  NSPAIR(_ZN8S18877C1C1Ev),
  NSPAIR(_ZN8S18877C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18877C1[];
extern void _ZN8S18877C1D1Ev();
extern void _ZN8S18877C1D0Ev();
extern void _ZN8S18877C12v1Ev();
extern void _ZN8S18877C12v2Ev();
extern void _ZN8S18877C12v3Ev();
extern void _ZN8S18877C12v4Ev();
extern void _ZN8S18877C12v5Ev();
static  VTBL_ENTRY vtc_S18877C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18877C1[0]),
  (VTBL_ENTRY)&_ZN8S18877C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18877C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18877C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18877C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18877C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18877C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18877C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S18877C1[];
extern  VTBL_ENTRY _ZTV8S18877C1[];
Class_Descriptor cd_S18877C1 = {  "S18877C1", // class name
  0,0,//no base classes
  &(vtc_S18877C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S18877C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18877C1),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  S18892C1  {
  int s18892c1f0;
  void *s18892c1f1;
  char s18892c1f2;
  virtual  ~S18892C1(); // _ZN8S18892C1D1Ev
  virtual void  v1(); // _ZN8S18892C12v1Ev
  virtual void  v2(); // _ZN8S18892C12v2Ev
  virtual void  v3(); // _ZN8S18892C12v3Ev
  virtual void  v4(); // _ZN8S18892C12v4Ev
  S18892C1(); // tgen
};
//SIG(1 S18892C1) C1{ vd v1 v2 v3 v4 Fi Fp Fc}


 S18892C1 ::~S18892C1(){ note_dtor("S18892C1", this);}
void  S18892C1 ::v1(){vfunc_called(this, "_ZN8S18892C12v1Ev");}
void  S18892C1 ::v2(){vfunc_called(this, "_ZN8S18892C12v2Ev");}
void  S18892C1 ::v3(){vfunc_called(this, "_ZN8S18892C12v3Ev");}
void  S18892C1 ::v4(){vfunc_called(this, "_ZN8S18892C12v4Ev");}
S18892C1 ::S18892C1(){ note_ctor("S18892C1", this);} // tgen

static void Test_S18892C1()
{
  extern Class_Descriptor cd_S18892C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S18892C1, buf);
    S18892C1 *dp, &lv = *(dp=new (buf) S18892C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S18892C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18892C1)");
    check_field_offset(lv, s18892c1f0, ABISELECT(8,4), "S18892C1.s18892c1f0");
    check_field_offset(lv, s18892c1f1, ABISELECT(16,8), "S18892C1.s18892c1f1");
    check_field_offset(lv, s18892c1f2, ABISELECT(24,12), "S18892C1.s18892c1f2");
    test_class_info(&lv, &cd_S18892C1);
    dp->~S18892C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18892C1(Test_S18892C1, "S18892C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S18892C1C1Ev();
extern void _ZN8S18892C1D1Ev();
Name_Map name_map_S18892C1[] = {
  NSPAIR(_ZN8S18892C1C1Ev),
  NSPAIR(_ZN8S18892C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18892C1[];
extern void _ZN8S18892C1D1Ev();
extern void _ZN8S18892C1D0Ev();
extern void _ZN8S18892C12v1Ev();
extern void _ZN8S18892C12v2Ev();
extern void _ZN8S18892C12v3Ev();
extern void _ZN8S18892C12v4Ev();
static  VTBL_ENTRY vtc_S18892C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18892C1[0]),
  (VTBL_ENTRY)&_ZN8S18892C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18892C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18892C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18892C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18892C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18892C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18892C1[];
extern  VTBL_ENTRY _ZTV8S18892C1[];
Class_Descriptor cd_S18892C1 = {  "S18892C1", // class name
  0,0,//no base classes
  &(vtc_S18892C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S18892C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18892C1),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  S17241C1  {
  int s17241c1f0[4];
  void *s17241c1f1[2];
  int s17241c1f2[2];
  void *s17241c1f3;
  void  mf17241c1(); // _ZN8S17241C19mf17241c1Ev
};
//SIG(1 S17241C1) C1{ m Fi[4] Fp[2] Fi[2] Fp}


void  S17241C1 ::mf17241c1(){}

static void Test_S17241C1()
{
  {
    init_simple_test("S17241C1");
    S17241C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S17241C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17241C1)");
    check_field_offset(lv, s17241c1f0, 0, "S17241C1.s17241c1f0");
    check_field_offset(lv, s17241c1f1, 16, "S17241C1.s17241c1f1");
    check_field_offset(lv, s17241c1f2, ABISELECT(32,24), "S17241C1.s17241c1f2");
    check_field_offset(lv, s17241c1f3, ABISELECT(40,32), "S17241C1.s17241c1f3");
  }
}
static Arrange_To_Call_Me vS17241C1(Test_S17241C1, "S17241C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17085C2_nt  {
  int s17085c2f0;
  void *s17085c2f1[2];
};
//SIG(-1 S17085C2_nt) C1{ Fi Fp[2]}



//skip512 S17085C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17085C1  {
  int s17085c1f0[2];
  ::S17085C2_nt s17085c1f1;
  void  mf17085c1(); // _ZN8S17085C19mf17085c1Ev
};
//SIG(1 S17085C1) C1{ m Fi[2] FC2{ Fi Fp[2]}}


void  S17085C1 ::mf17085c1(){}

static void Test_S17085C1()
{
  {
    init_simple_test("S17085C1");
    S17085C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S17085C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17085C1)");
    check_field_offset(lv, s17085c1f0, 0, "S17085C1.s17085c1f0");
    check_field_offset(lv, s17085c1f1, 8, "S17085C1.s17085c1f1");
  }
}
static Arrange_To_Call_Me vS17085C1(Test_S17085C1, "S17085C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13413C1  {
  int s13413c1f0[3];
  short s13413c1f1[254];
  char s13413c1f2[127];
};
//SIG(1 S13413C1) C1{ Fi[3] Fs[254] Fc[127]}



static void Test_S13413C1()
{
  {
    init_simple_test("S13413C1");
    S13413C1 lv;
    check2(sizeof(lv), 648, "sizeof(S13413C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13413C1)");
    check_field_offset(lv, s13413c1f0, 0, "S13413C1.s13413c1f0");
    check_field_offset(lv, s13413c1f1, 12, "S13413C1.s13413c1f1");
    check_field_offset(lv, s13413c1f2, 520, "S13413C1.s13413c1f2");
  }
}
static Arrange_To_Call_Me vS13413C1(Test_S13413C1, "S13413C1", 648);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16905C1  {
  int s16905c1f0;
  void *s16905c1f1;
  ::S3214C13_nt s16905c1f2;
  void  mf16905c1(); // _ZN8S16905C19mf16905c1Ev
};
//SIG(1 S16905C1) C1{ m Fi Fp FC2{ m Fi[3]}}


void  S16905C1 ::mf16905c1(){}

static void Test_S16905C1()
{
  {
    init_simple_test("S16905C1");
    S16905C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S16905C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16905C1)");
    check_field_offset(lv, s16905c1f0, 0, "S16905C1.s16905c1f0");
    check_field_offset(lv, s16905c1f1, ABISELECT(8,4), "S16905C1.s16905c1f1");
    check_field_offset(lv, s16905c1f2, ABISELECT(16,8), "S16905C1.s16905c1f2");
  }
}
static Arrange_To_Call_Me vS16905C1(Test_S16905C1, "S16905C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14296C1  {
  void *s14296c1f0;
  int s14296c1f1[2];
  void *s14296c1f2;
  int s14296c1f3;
  char s14296c1f4[4];
};
//SIG(1 S14296C1) C1{ Fp Fi[2] Fp Fi Fc[4]}



static void Test_S14296C1()
{
  {
    init_simple_test("S14296C1");
    S14296C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S14296C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14296C1)");
    check_field_offset(lv, s14296c1f0, 0, "S14296C1.s14296c1f0");
    check_field_offset(lv, s14296c1f1, ABISELECT(8,4), "S14296C1.s14296c1f1");
    check_field_offset(lv, s14296c1f2, ABISELECT(16,12), "S14296C1.s14296c1f2");
    check_field_offset(lv, s14296c1f3, ABISELECT(24,16), "S14296C1.s14296c1f3");
    check_field_offset(lv, s14296c1f4, ABISELECT(28,20), "S14296C1.s14296c1f4");
  }
}
static Arrange_To_Call_Me vS14296C1(Test_S14296C1, "S14296C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18678C1  {
  __tsi64 s18678c1f0;
  int s18678c1f1[7];
  virtual void  v1(); // _ZN8S18678C12v1Ev
  virtual void  v2(); // _ZN8S18678C12v2Ev
  virtual void  v3(); // _ZN8S18678C12v3Ev
  virtual void  v4(); // _ZN8S18678C12v4Ev
  ~S18678C1(); // tgen
  S18678C1(); // tgen
};
//SIG(1 S18678C1) C1{ v1 v2 v3 v4 FL Fi[7]}


void  S18678C1 ::v1(){vfunc_called(this, "_ZN8S18678C12v1Ev");}
void  S18678C1 ::v2(){vfunc_called(this, "_ZN8S18678C12v2Ev");}
void  S18678C1 ::v3(){vfunc_called(this, "_ZN8S18678C12v3Ev");}
void  S18678C1 ::v4(){vfunc_called(this, "_ZN8S18678C12v4Ev");}
S18678C1 ::~S18678C1(){ note_dtor("S18678C1", this);} // tgen
S18678C1 ::S18678C1(){ note_ctor("S18678C1", this);} // tgen

static void Test_S18678C1()
{
  extern Class_Descriptor cd_S18678C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S18678C1, buf);
    S18678C1 *dp, &lv = *(dp=new (buf) S18678C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S18678C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18678C1)");
    check_field_offset(lv, s18678c1f0, ABISELECT(8,4), "S18678C1.s18678c1f0");
    check_field_offset(lv, s18678c1f1, ABISELECT(16,12), "S18678C1.s18678c1f1");
    test_class_info(&lv, &cd_S18678C1);
    dp->~S18678C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18678C1(Test_S18678C1, "S18678C1", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S18678C1C1Ev();
extern void _ZN8S18678C1D1Ev();
Name_Map name_map_S18678C1[] = {
  NSPAIR(_ZN8S18678C1C1Ev),
  NSPAIR(_ZN8S18678C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18678C1[];
extern void _ZN8S18678C12v1Ev();
extern void _ZN8S18678C12v2Ev();
extern void _ZN8S18678C12v3Ev();
extern void _ZN8S18678C12v4Ev();
static  VTBL_ENTRY vtc_S18678C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18678C1[0]),
  (VTBL_ENTRY)&_ZN8S18678C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18678C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18678C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18678C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18678C1[];
extern  VTBL_ENTRY _ZTV8S18678C1[];
Class_Descriptor cd_S18678C1 = {  "S18678C1", // class name
  0,0,//no base classes
  &(vtc_S18678C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S18678C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18678C1),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  S18080C1  {
  void *s18080c1f0[2];
  int s18080c1f1;
  void *s18080c1f2[2];
  int s18080c1f3;
  void  mf18080c1(); // _ZN8S18080C19mf18080c1Ev
};
//SIG(1 S18080C1) C1{ m Fp[2] Fi Fp[2] Fi}


void  S18080C1 ::mf18080c1(){}

static void Test_S18080C1()
{
  {
    init_simple_test("S18080C1");
    S18080C1 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S18080C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18080C1)");
    check_field_offset(lv, s18080c1f0, 0, "S18080C1.s18080c1f0");
    check_field_offset(lv, s18080c1f1, ABISELECT(16,8), "S18080C1.s18080c1f1");
    check_field_offset(lv, s18080c1f2, ABISELECT(24,12), "S18080C1.s18080c1f2");
    check_field_offset(lv, s18080c1f3, ABISELECT(40,20), "S18080C1.s18080c1f3");
  }
}
static Arrange_To_Call_Me vS18080C1(Test_S18080C1, "S18080C1", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12999C1  {
  int s12999c1f0[2];
  char s12999c1f1[193];
  __tsi64 s12999c1f2[2];
};
//SIG(1 S12999C1) C1{ Fi[2] Fc[193] FL[2]}



static void Test_S12999C1()
{
  {
    init_simple_test("S12999C1");
    S12999C1 lv;
    check2(sizeof(lv), ABISELECT(224,220), "sizeof(S12999C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12999C1)");
    check_field_offset(lv, s12999c1f0, 0, "S12999C1.s12999c1f0");
    check_field_offset(lv, s12999c1f1, 8, "S12999C1.s12999c1f1");
    check_field_offset(lv, s12999c1f2, ABISELECT(208,204), "S12999C1.s12999c1f2");
  }
}
static Arrange_To_Call_Me vS12999C1(Test_S12999C1, "S12999C1", ABISELECT(224,220));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8684C2  {
  char s8684c2f0;
  virtual  ~S8684C2(); // _ZN7S8684C2D1Ev
  virtual void  v2(); // _ZN7S8684C22v2Ev
  S8684C2(); // tgen
};
//SIG(-1 S8684C2) C1{ vd v1 Fc}


 S8684C2 ::~S8684C2(){ note_dtor("S8684C2", this);}
void  S8684C2 ::v2(){vfunc_called(this, "_ZN7S8684C22v2Ev");}
S8684C2 ::S8684C2(){ note_ctor("S8684C2", this);} // tgen

static void Test_S8684C2()
{
  extern Class_Descriptor cd_S8684C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S8684C2, buf);
    S8684C2 *dp, &lv = *(dp=new (buf) S8684C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S8684C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8684C2)");
    check_field_offset(lv, s8684c2f0, ABISELECT(8,4), "S8684C2.s8684c2f0");
    test_class_info(&lv, &cd_S8684C2);
    dp->~S8684C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8684C2(Test_S8684C2, "S8684C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S8684C2C1Ev();
extern void _ZN7S8684C2D1Ev();
Name_Map name_map_S8684C2[] = {
  NSPAIR(_ZN7S8684C2C1Ev),
  NSPAIR(_ZN7S8684C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8684C2[];
extern void _ZN7S8684C2D1Ev();
extern void _ZN7S8684C2D0Ev();
extern void _ZN7S8684C22v2Ev();
static  VTBL_ENTRY vtc_S8684C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8684C2[0]),
  (VTBL_ENTRY)&_ZN7S8684C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8684C2D0Ev,
  (VTBL_ENTRY)&_ZN7S8684C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S8684C2[];
extern  VTBL_ENTRY _ZTV7S8684C2[];
Class_Descriptor cd_S8684C2 = {  "S8684C2", // class name
  0,0,//no base classes
  &(vtc_S8684C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S8684C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8684C2),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  S8684C1  : S8684C2 {
  virtual  ~S8684C1(); // _ZN7S8684C1D1Ev
  virtual void  v1(); // _ZN7S8684C12v1Ev
  S8684C1(); // tgen
};
//SIG(1 S8684C1) C1{ BC2{ vd v2 Fc} vd v1}


 S8684C1 ::~S8684C1(){ note_dtor("S8684C1", this);}
void  S8684C1 ::v1(){vfunc_called(this, "_ZN7S8684C12v1Ev");}
S8684C1 ::S8684C1(){ note_ctor("S8684C1", this);} // tgen

static void Test_S8684C1()
{
  extern Class_Descriptor cd_S8684C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S8684C1, buf);
    S8684C1 *dp, &lv = *(dp=new (buf) S8684C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S8684C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8684C1)");
    check_base_class_offset(lv, (S8684C2*), 0, "S8684C1");
    test_class_info(&lv, &cd_S8684C1);
    dp->~S8684C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8684C1(Test_S8684C1, "S8684C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S8684C1C1Ev();
extern void _ZN7S8684C1D1Ev();
Name_Map name_map_S8684C1[] = {
  NSPAIR(_ZN7S8684C1C1Ev),
  NSPAIR(_ZN7S8684C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8684C2;
extern VTBL_ENTRY _ZTI7S8684C2[];
extern  VTBL_ENTRY _ZTV7S8684C2[];
static Base_Class bases_S8684C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8684C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8684C1[];
extern void _ZN7S8684C1D1Ev();
extern void _ZN7S8684C1D0Ev();
extern void _ZN7S8684C22v2Ev();
extern void _ZN7S8684C12v1Ev();
static  VTBL_ENTRY vtc_S8684C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8684C1[0]),
  (VTBL_ENTRY)&_ZN7S8684C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8684C1D0Ev,
  (VTBL_ENTRY)&_ZN7S8684C22v2Ev,
  (VTBL_ENTRY)&_ZN7S8684C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S8684C1[];
extern  VTBL_ENTRY _ZTV7S8684C1[];
Class_Descriptor cd_S8684C1 = {  "S8684C1", // class name
  bases_S8684C1, 1,
  &(vtc_S8684C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S8684C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8684C1),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  S12601C1  {
  int s12601c1f0;
  unsigned int s12601c1f1:1;
  unsigned int s12601c1f2:1;
  int s12601c1f3[2];
};
//SIG(1 S12601C1) C1{ Fi Fi:1 Fi:1 Fi[2]}



static void Test_S12601C1()
{
  {
    init_simple_test("S12601C1");
    static S12601C1 lv;
    check2(sizeof(lv), 16, "sizeof(S12601C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12601C1)");
    check_field_offset(lv, s12601c1f0, 0, "S12601C1.s12601c1f0");
    set_bf_and_test(lv, s12601c1f1, 4, 0, 1, 1, "S12601C1");
    set_bf_and_test(lv, s12601c1f2, 4, 1, 1, 1, "S12601C1");
    check_field_offset(lv, s12601c1f3, 8, "S12601C1.s12601c1f3");
  }
}
static Arrange_To_Call_Me vS12601C1(Test_S12601C1, "S12601C1", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14681C1  {
  void *s14681c1f0[4];
  int s14681c1f1[3];
  void *s14681c1f2[2];
};
//SIG(1 S14681C1) C1{ Fp[4] Fi[3] Fp[2]}



static void Test_S14681C1()
{
  {
    init_simple_test("S14681C1");
    S14681C1 lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S14681C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14681C1)");
    check_field_offset(lv, s14681c1f0, 0, "S14681C1.s14681c1f0");
    check_field_offset(lv, s14681c1f1, ABISELECT(32,16), "S14681C1.s14681c1f1");
    check_field_offset(lv, s14681c1f2, ABISELECT(48,28), "S14681C1.s14681c1f2");
  }
}
static Arrange_To_Call_Me vS14681C1(Test_S14681C1, "S14681C1", ABISELECT(64,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17599C1  {
  void *s17599c1f0;
  ::S3214C13_nt s17599c1f1;
  void  mf17599c1(); // _ZN8S17599C19mf17599c1Ev
};
//SIG(1 S17599C1) C1{ m Fp FC2{ m Fi[3]}}


void  S17599C1 ::mf17599c1(){}

static void Test_S17599C1()
{
  {
    init_simple_test("S17599C1");
    S17599C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S17599C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17599C1)");
    check_field_offset(lv, s17599c1f0, 0, "S17599C1.s17599c1f0");
    check_field_offset(lv, s17599c1f1, ABISELECT(8,4), "S17599C1.s17599c1f1");
  }
}
static Arrange_To_Call_Me vS17599C1(Test_S17599C1, "S17599C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15596C1  {
  ::S9676C7_nt s15596c1f0;
  void *s15596c1f1;
  int s15596c1f2;
  void *s15596c1f3;
  void  mf15596c1(); // _ZN8S15596C19mf15596c1Ev
};
//SIG(1 S15596C1) C1{ m FC2{ FL} Fp Fi Fp}


void  S15596C1 ::mf15596c1(){}

static void Test_S15596C1()
{
  {
    init_simple_test("S15596C1");
    S15596C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S15596C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15596C1)");
    check_field_offset(lv, s15596c1f0, 0, "S15596C1.s15596c1f0");
    check_field_offset(lv, s15596c1f1, 8, "S15596C1.s15596c1f1");
    check_field_offset(lv, s15596c1f2, ABISELECT(16,12), "S15596C1.s15596c1f2");
    check_field_offset(lv, s15596c1f3, ABISELECT(24,16), "S15596C1.s15596c1f3");
  }
}
static Arrange_To_Call_Me vS15596C1(Test_S15596C1, "S15596C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12452C1  {
  int s12452c1f0;
  ::S13913C2_nt s12452c1f1[5];
};
//SIG(1 S12452C1) C1{ Fi FC2{ Fi[2]}[5]}



static void Test_S12452C1()
{
  {
    init_simple_test("S12452C1");
    S12452C1 lv;
    check2(sizeof(lv), 44, "sizeof(S12452C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12452C1)");
    check_field_offset(lv, s12452c1f0, 0, "S12452C1.s12452c1f0");
    check_field_offset(lv, s12452c1f1, 4, "S12452C1.s12452c1f1");
  }
}
static Arrange_To_Call_Me vS12452C1(Test_S12452C1, "S12452C1", 44);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10367C1  : S18759C2_nt {
  int s10367c1f0[3];
  char s10367c1f1[2];
};
//SIG(1 S10367C1) C1{ BC2{} Fi[3] Fc[2]}



static void Test_S10367C1()
{
  extern Class_Descriptor cd_S10367C1;
  void *lvp;
  {
    int buf[5];
    init_test(&cd_S10367C1, buf);
    S10367C1 &lv = *(new (buf) S10367C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S10367C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10367C1)");
    check_base_class_offset(lv, (S18759C2_nt*), 0, "S10367C1");
    check_field_offset(lv, s10367c1f0, 0, "S10367C1.s10367c1f0");
    check_field_offset(lv, s10367c1f1, 12, "S10367C1.s10367c1f1");
    test_class_info(&lv, &cd_S10367C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10367C1(Test_S10367C1, "S10367C1", 16);

#else // __cplusplus

extern Class_Descriptor cd_S18759C2_nt;
static Base_Class bases_S10367C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18759C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S10367C1 = {  "S10367C1", // class name
  bases_S10367C1, 1,
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18332C1  {
  void *s18332c1f0[3];
  short s18332c1f1;
  char s18332c1f2[2];
  void  mf18332c1(); // _ZN8S18332C19mf18332c1Ev
};
//SIG(1 S18332C1) C1{ m Fp[3] Fs Fc[2]}


void  S18332C1 ::mf18332c1(){}

static void Test_S18332C1()
{
  {
    init_simple_test("S18332C1");
    S18332C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S18332C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18332C1)");
    check_field_offset(lv, s18332c1f0, 0, "S18332C1.s18332c1f0");
    check_field_offset(lv, s18332c1f1, ABISELECT(24,12), "S18332C1.s18332c1f1");
    check_field_offset(lv, s18332c1f2, ABISELECT(26,14), "S18332C1.s18332c1f2");
  }
}
static Arrange_To_Call_Me vS18332C1(Test_S18332C1, "S18332C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19748C1  : virtual S20997C6 {
  virtual void  v1(); // _ZN8S19748C12v1Ev
  ~S19748C1(); // tgen
  S19748C1(); // tgen
};
//SIG(1 S19748C1) C1{ VBC2{ m FL[5]} v1}


void  S19748C1 ::v1(){vfunc_called(this, "_ZN8S19748C12v1Ev");}
S19748C1 ::~S19748C1(){ note_dtor("S19748C1", this);} // tgen
S19748C1 ::S19748C1(){ note_ctor("S19748C1", this);} // tgen

static void Test_S19748C1()
{
  extern Class_Descriptor cd_S19748C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,12)];
    init_test(&cd_S19748C1, buf);
    S19748C1 *dp, &lv = *(dp=new (buf) S19748C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S19748C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19748C1)");
    check_base_class_offset(lv, (S20997C6*), ABISELECT(8,4), "S19748C1");
    test_class_info(&lv, &cd_S19748C1);
    dp->~S19748C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19748C1(Test_S19748C1, "S19748C1", ABISELECT(48,44));

#else // __cplusplus

extern void _ZN8S19748C1C1Ev();
extern void _ZN8S19748C1D1Ev();
Name_Map name_map_S19748C1[] = {
  NSPAIR(_ZN8S19748C1C1Ev),
  NSPAIR(_ZN8S19748C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20997C6;
extern VTBL_ENTRY _ZTI8S20997C6[];
static Base_Class bases_S19748C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20997C6,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19748C1[];
extern void _ZN8S19748C12v1Ev();
static  VTBL_ENTRY vtc_S19748C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19748C1[0]),
  (VTBL_ENTRY)&_ZN8S19748C12v1Ev,
};
extern VTBL_ENTRY _ZTV8S19748C1[];
static  VTT_ENTRY vtt_S19748C1[] = {
  {&(_ZTV8S19748C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19748C1[];
extern  VTBL_ENTRY _ZTV8S19748C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19748C1[];
Class_Descriptor cd_S19748C1 = {  "S19748C1", // class name
  bases_S19748C1, 1,
  &(vtc_S19748C1[0]), // expected_vtbl_contents
  &(vtt_S19748C1[0]), // expected_vtt_contents
  ABISELECT(48,44), // object size
  NSPAIRA(_ZTI8S19748C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19748C1),4, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19748C1),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  S13252C1  {
  int s13252c1f0[2];
  short s13252c1f1[1025];
};
//SIG(1 S13252C1) C1{ Fi[2] Fs[1025]}



static void Test_S13252C1()
{
  {
    init_simple_test("S13252C1");
    S13252C1 lv;
    check2(sizeof(lv), 2060, "sizeof(S13252C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13252C1)");
    check_field_offset(lv, s13252c1f0, 0, "S13252C1.s13252c1f0");
    check_field_offset(lv, s13252c1f1, 8, "S13252C1.s13252c1f1");
  }
}
static Arrange_To_Call_Me vS13252C1(Test_S13252C1, "S13252C1", 2060);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10976C1  {
  char s10976c1f0[6];
  short s10976c1f1;
  int s10976c1f2[6];
};
//SIG(1 S10976C1) C1{ Fc[6] Fs Fi[6]}



static void Test_S10976C1()
{
  {
    init_simple_test("S10976C1");
    S10976C1 lv;
    check2(sizeof(lv), 32, "sizeof(S10976C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10976C1)");
    check_field_offset(lv, s10976c1f0, 0, "S10976C1.s10976c1f0");
    check_field_offset(lv, s10976c1f1, 6, "S10976C1.s10976c1f1");
    check_field_offset(lv, s10976c1f2, 8, "S10976C1.s10976c1f2");
  }
}
static Arrange_To_Call_Me vS10976C1(Test_S10976C1, "S10976C1", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18946C1  {
  int s18946c1f0[5];
  void *s18946c1f1;
  virtual  ~S18946C1(); // _ZN8S18946C1D1Ev
  virtual void  v1(); // _ZN8S18946C12v1Ev
  S18946C1(); // tgen
};
//SIG(1 S18946C1) C1{ vd v1 Fi[5] Fp}


 S18946C1 ::~S18946C1(){ note_dtor("S18946C1", this);}
void  S18946C1 ::v1(){vfunc_called(this, "_ZN8S18946C12v1Ev");}
S18946C1 ::S18946C1(){ note_ctor("S18946C1", this);} // tgen

static void Test_S18946C1()
{
  extern Class_Descriptor cd_S18946C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S18946C1, buf);
    S18946C1 *dp, &lv = *(dp=new (buf) S18946C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S18946C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18946C1)");
    check_field_offset(lv, s18946c1f0, ABISELECT(8,4), "S18946C1.s18946c1f0");
    check_field_offset(lv, s18946c1f1, ABISELECT(32,24), "S18946C1.s18946c1f1");
    test_class_info(&lv, &cd_S18946C1);
    dp->~S18946C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18946C1(Test_S18946C1, "S18946C1", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN8S18946C1C1Ev();
extern void _ZN8S18946C1D1Ev();
Name_Map name_map_S18946C1[] = {
  NSPAIR(_ZN8S18946C1C1Ev),
  NSPAIR(_ZN8S18946C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18946C1[];
extern void _ZN8S18946C1D1Ev();
extern void _ZN8S18946C1D0Ev();
extern void _ZN8S18946C12v1Ev();
static  VTBL_ENTRY vtc_S18946C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18946C1[0]),
  (VTBL_ENTRY)&_ZN8S18946C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18946C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18946C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18946C1[];
extern  VTBL_ENTRY _ZTV8S18946C1[];
Class_Descriptor cd_S18946C1 = {  "S18946C1", // class name
  0,0,//no base classes
  &(vtc_S18946C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI8S18946C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18946C1),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  S14435C1  {
  void *s14435c1f0[11];
  char s14435c1f1[21];
};
//SIG(1 S14435C1) C1{ Fp[11] Fc[21]}



static void Test_S14435C1()
{
  {
    init_simple_test("S14435C1");
    S14435C1 lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S14435C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14435C1)");
    check_field_offset(lv, s14435c1f0, 0, "S14435C1.s14435c1f0");
    check_field_offset(lv, s14435c1f1, ABISELECT(88,44), "S14435C1.s14435c1f1");
  }
}
static Arrange_To_Call_Me vS14435C1(Test_S14435C1, "S14435C1", ABISELECT(112,68));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12023C1  {
  ::S20997C37 s12023c1f0;
};
//SIG(1 S12023C1) C1{ FC2{ m FC3{ m}}}



static void Test_S12023C1()
{
  {
    init_simple_test("S12023C1");
    S12023C1 lv;
    check2(sizeof(lv), 1, "sizeof(S12023C1)");
    check2(__alignof__(lv), 1, "__alignof__(S12023C1)");
    check_field_offset(lv, s12023c1f0, 0, "S12023C1.s12023c1f0");
  }
}
static Arrange_To_Call_Me vS12023C1(Test_S12023C1, "S12023C1", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15606C2_nt  {
  void *s15606c2f0[2];
};
//SIG(-1 S15606C2_nt) C1{ Fp[2]}



//skip512 S15606C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15606C1  {
  ::S15606C2_nt s15606c1f0;
  void  mf15606c1(); // _ZN8S15606C19mf15606c1Ev
};
//SIG(1 S15606C1) C1{ m FC2{ Fp[2]}}


void  S15606C1 ::mf15606c1(){}

static void Test_S15606C1()
{
  {
    init_simple_test("S15606C1");
    S15606C1 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S15606C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15606C1)");
    check_field_offset(lv, s15606c1f0, 0, "S15606C1.s15606c1f0");
  }
}
static Arrange_To_Call_Me vS15606C1(Test_S15606C1, "S15606C1", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13056C1  {
  int s13056c1f0[2];
  char s13056c1f1[64];
};
//SIG(1 S13056C1) C1{ Fi[2] Fc[64]}



static void Test_S13056C1()
{
  {
    init_simple_test("S13056C1");
    S13056C1 lv;
    check2(sizeof(lv), 72, "sizeof(S13056C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13056C1)");
    check_field_offset(lv, s13056c1f0, 0, "S13056C1.s13056c1f0");
    check_field_offset(lv, s13056c1f1, 8, "S13056C1.s13056c1f1");
  }
}
static Arrange_To_Call_Me vS13056C1(Test_S13056C1, "S13056C1", 72);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13808C1  {
  __tsi64 s13808c1f0;
  long s13808c1f1;
  int s13808c1f2[2];
};
//SIG(1 S13808C1) C1{ FL Fl Fi[2]}



static void Test_S13808C1()
{
  {
    init_simple_test("S13808C1");
    S13808C1 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S13808C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13808C1)");
    check_field_offset(lv, s13808c1f0, 0, "S13808C1.s13808c1f0");
    check_field_offset(lv, s13808c1f1, 8, "S13808C1.s13808c1f1");
    check_field_offset(lv, s13808c1f2, ABISELECT(16,12), "S13808C1.s13808c1f2");
  }
}
static Arrange_To_Call_Me vS13808C1(Test_S13808C1, "S13808C1", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10900C1  {
  char s10900c1f0[4];
  int s10900c1f1;
  void *s10900c1f2;
};
//SIG(1 S10900C1) C1{ Fc[4] Fi Fp}



static void Test_S10900C1()
{
  {
    init_simple_test("S10900C1");
    S10900C1 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S10900C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10900C1)");
    check_field_offset(lv, s10900c1f0, 0, "S10900C1.s10900c1f0");
    check_field_offset(lv, s10900c1f1, 4, "S10900C1.s10900c1f1");
    check_field_offset(lv, s10900c1f2, 8, "S10900C1.s10900c1f2");
  }
}
static Arrange_To_Call_Me vS10900C1(Test_S10900C1, "S10900C1", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12612C1  {
  int s12612c1f0;
  long s12612c1f1;
  int s12612c1f2[2];
};
//SIG(1 S12612C1) C1{ Fi Fl Fi[2]}



static void Test_S12612C1()
{
  {
    init_simple_test("S12612C1");
    S12612C1 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S12612C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12612C1)");
    check_field_offset(lv, s12612c1f0, 0, "S12612C1.s12612c1f0");
    check_field_offset(lv, s12612c1f1, ABISELECT(8,4), "S12612C1.s12612c1f1");
    check_field_offset(lv, s12612c1f2, ABISELECT(16,8), "S12612C1.s12612c1f2");
  }
}
static Arrange_To_Call_Me vS12612C1(Test_S12612C1, "S12612C1", ABISELECT(24,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16870C1  {
  int s16870c1f0;
  __tsi64 s16870c1f1[2];
  void  mf16870c1(); // _ZN8S16870C19mf16870c1Ev
};
//SIG(1 S16870C1) C1{ m Fi FL[2]}


void  S16870C1 ::mf16870c1(){}

static void Test_S16870C1()
{
  {
    init_simple_test("S16870C1");
    S16870C1 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S16870C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16870C1)");
    check_field_offset(lv, s16870c1f0, 0, "S16870C1.s16870c1f0");
    check_field_offset(lv, s16870c1f1, ABISELECT(8,4), "S16870C1.s16870c1f1");
  }
}
static Arrange_To_Call_Me vS16870C1(Test_S16870C1, "S16870C1", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15167C1  {
  char s15167c1f0[132];
  void  mf15167c1(); // _ZN8S15167C19mf15167c1Ev
};
//SIG(1 S15167C1) C1{ m Fc[132]}


void  S15167C1 ::mf15167c1(){}

static void Test_S15167C1()
{
  {
    init_simple_test("S15167C1");
    S15167C1 lv;
    check2(sizeof(lv), 132, "sizeof(S15167C1)");
    check2(__alignof__(lv), 1, "__alignof__(S15167C1)");
    check_field_offset(lv, s15167c1f0, 0, "S15167C1.s15167c1f0");
  }
}
static Arrange_To_Call_Me vS15167C1(Test_S15167C1, "S15167C1", 132);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14941C1  {
  short s14941c1f0[4];
  long s14941c1f1;
};
//SIG(1 S14941C1) C1{ Fs[4] Fl}



static void Test_S14941C1()
{
  {
    init_simple_test("S14941C1");
    S14941C1 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S14941C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14941C1)");
    check_field_offset(lv, s14941c1f0, 0, "S14941C1.s14941c1f0");
    check_field_offset(lv, s14941c1f1, 8, "S14941C1.s14941c1f1");
  }
}
static Arrange_To_Call_Me vS14941C1(Test_S14941C1, "S14941C1", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14024C1  {
  long s14024c1f0[5];
  __tsi64 s14024c1f1;
};
//SIG(1 S14024C1) C1{ Fl[5] FL}



static void Test_S14024C1()
{
  {
    init_simple_test("S14024C1");
    S14024C1 lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S14024C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14024C1)");
    check_field_offset(lv, s14024c1f0, 0, "S14024C1.s14024c1f0");
    check_field_offset(lv, s14024c1f1, ABISELECT(40,20), "S14024C1.s14024c1f1");
  }
}
static Arrange_To_Call_Me vS14024C1(Test_S14024C1, "S14024C1", ABISELECT(48,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10841C1  {
  char s10841c1f0[33];
};
//SIG(1 S10841C1) C1{ Fc[33]}



static void Test_S10841C1()
{
  {
    init_simple_test("S10841C1");
    S10841C1 lv;
    check2(sizeof(lv), 33, "sizeof(S10841C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10841C1)");
    check_field_offset(lv, s10841c1f0, 0, "S10841C1.s10841c1f0");
  }
}
static Arrange_To_Call_Me vS10841C1(Test_S10841C1, "S10841C1", 33);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

